Class BeanListTableModel<T>
- java.lang.Object
-
- javax.swing.table.AbstractTableModel
-
- io.github.jonestimd.swing.table.model.BeanListTableModel<T>
-
- Type Parameters:
T- the class representing a row in the table
- All Implemented Interfaces:
BeanTableModel<T>,ColumnIdentifier,java.io.Serializable,javax.swing.table.TableModel
- Direct Known Subclasses:
BufferedBeanListTableModel
public class BeanListTableModel<T> extends javax.swing.table.AbstractTableModel implements ColumnIdentifier, BeanTableModel<T>
ATableModelthat uses a list of beans for table rows and maps bean properties to table columns.- See Also:
ColumnAdapter, Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected BeanTableAdapter<T>beanTableAdapter
-
Constructor Summary
Constructors Constructor Description BeanListTableModel(java.util.List<? extends ColumnAdapter<? super T,?>> columnAdapters)BeanListTableModel(java.util.List<? extends ColumnAdapter<? super T,?>> columnAdapters, java.lang.Iterable<? extends TableDataProvider<T>> dataProviders)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddRow(int row, T bean)voidaddRow(T bean)TgetBean(int index)Get the bean at the specified index.intgetBeanCount()Get the number of beans in the model.java.util.List<T>getBeans()protected ColumnAdapter<? super T,?>getColumnAdapter(int index)java.lang.Class<?>getColumnClass(int columnIndex)intgetColumnCount()ColumnAdapter<? super T,?>getColumnIdentifier(int columnIndex)java.lang.StringgetColumnName(int columnIndex)java.awt.CursorgetCursor(java.awt.event.MouseEvent event, javax.swing.JTable table, int rowIndex, int columnIndex)Get the mouse cursor to display for a cell.TgetRow(int index)intgetRowCount()java.lang.ObjectgetValue(T row, int columnIndex)Get a column cell value for a bean.java.lang.ObjectgetValueAt(int rowIndex, int columnIndex)voidhandleClick(java.awt.event.MouseEvent event, javax.swing.JTable table, int rowIndex, int columnIndex)Handle a mouse click on a cell.intindexOf(T bean)booleanisCellEditable(int rowIndex, int columnIndex)protected voidnotifyDataProviders(T row, java.lang.String columnId, java.lang.Object oldValue)voidremoveAll(java.lang.Iterable<T> rowBeans)voidremoveRow(T bean)protected voidremoveRowAt(int index)voidsetBeans(java.util.Collection<T> beans)Replace all rows of the table model.voidsetRow(int row, T bean)protected voidsetValue(java.lang.Object value, int rowIndex, int columnIndex)voidsetValueAt(java.lang.Object value, int rowIndex, int columnIndex)voidupdateBeans(java.util.Collection<T> beans, java.util.function.BiPredicate<T,T> isEqual)Update existing rows and add missing rows to the table model.-
Methods inherited from class javax.swing.table.AbstractTableModel
addTableModelListener, findColumn, fireTableCellUpdated, fireTableChanged, fireTableDataChanged, fireTableRowsDeleted, fireTableRowsInserted, fireTableRowsUpdated, fireTableStructureChanged, getListeners, getTableModelListeners, removeTableModelListener
-
-
-
-
Field Detail
-
beanTableAdapter
protected final BeanTableAdapter<T> beanTableAdapter
-
-
Constructor Detail
-
BeanListTableModel
public BeanListTableModel(java.util.List<? extends ColumnAdapter<? super T,?>> columnAdapters)
-
BeanListTableModel
public BeanListTableModel(java.util.List<? extends ColumnAdapter<? super T,?>> columnAdapters, java.lang.Iterable<? extends TableDataProvider<T>> dataProviders)
-
-
Method Detail
-
getBeanCount
public int getBeanCount()
Description copied from interface:BeanTableModelGet the number of beans in the model. Need not be the same as the number of the rows in the table.- Specified by:
getBeanCountin interfaceBeanTableModel<T>
-
getBean
public T getBean(int index)
Description copied from interface:BeanTableModelGet the bean at the specified index.- Specified by:
getBeanin interfaceBeanTableModel<T>- Parameters:
index- the index of the bean.
-
getRowCount
public int getRowCount()
- Specified by:
getRowCountin interfacejavax.swing.table.TableModel
-
getColumnAdapter
protected ColumnAdapter<? super T,?> getColumnAdapter(int index)
-
getColumnCount
public int getColumnCount()
- Specified by:
getColumnCountin interfacejavax.swing.table.TableModel
-
getColumnName
public java.lang.String getColumnName(int columnIndex)
- Specified by:
getColumnNamein interfacejavax.swing.table.TableModel- Overrides:
getColumnNamein classjavax.swing.table.AbstractTableModel
-
getColumnClass
public java.lang.Class<?> getColumnClass(int columnIndex)
- Specified by:
getColumnClassin interfacejavax.swing.table.TableModel- Overrides:
getColumnClassin classjavax.swing.table.AbstractTableModel
-
isCellEditable
public boolean isCellEditable(int rowIndex, int columnIndex)- Specified by:
isCellEditablein interfacejavax.swing.table.TableModel- Overrides:
isCellEditablein classjavax.swing.table.AbstractTableModel
-
getCursor
public java.awt.Cursor getCursor(java.awt.event.MouseEvent event, javax.swing.JTable table, int rowIndex, int columnIndex)Description copied from interface:BeanTableModelGet the mouse cursor to display for a cell.- Specified by:
getCursorin interfaceBeanTableModel<T>rowIndex- the row index of the cellcolumnIndex- the column index of the cell- Returns:
- the mouse cursor to use for the cell or
nullto use the default cursor.
-
handleClick
public void handleClick(java.awt.event.MouseEvent event, javax.swing.JTable table, int rowIndex, int columnIndex)Description copied from interface:BeanTableModelHandle a mouse click on a cell.- Specified by:
handleClickin interfaceBeanTableModel<T>- Parameters:
event- the click eventrowIndex- the row containing the cellcolumnIndex- the column index of the cell
-
getRow
public T getRow(int index)
-
setRow
public void setRow(int row, T bean)
-
getColumnIdentifier
public ColumnAdapter<? super T,?> getColumnIdentifier(int columnIndex)
- Specified by:
getColumnIdentifierin interfaceColumnIdentifier
-
getValueAt
public java.lang.Object getValueAt(int rowIndex, int columnIndex)- Specified by:
getValueAtin interfacejavax.swing.table.TableModel
-
setValueAt
public void setValueAt(java.lang.Object value, int rowIndex, int columnIndex)- Specified by:
setValueAtin interfacejavax.swing.table.TableModel- Overrides:
setValueAtin classjavax.swing.table.AbstractTableModel
-
setValue
protected void setValue(java.lang.Object value, int rowIndex, int columnIndex)
-
notifyDataProviders
protected void notifyDataProviders(T row, java.lang.String columnId, java.lang.Object oldValue)
-
getValue
public java.lang.Object getValue(T row, int columnIndex)
Description copied from interface:BeanTableModelGet a column cell value for a bean.- Specified by:
getValuein interfaceBeanTableModel<T>
-
getBeans
public java.util.List<T> getBeans()
-
setBeans
public void setBeans(java.util.Collection<T> beans)
Description copied from interface:BeanTableModelReplace all rows of the table model.- Specified by:
setBeansin interfaceBeanTableModel<T>- Parameters:
beans- the new rows
-
indexOf
public int indexOf(T bean)
-
addRow
public void addRow(T bean)
-
addRow
public void addRow(int row, T bean)
-
updateBeans
public void updateBeans(java.util.Collection<T> beans, java.util.function.BiPredicate<T,T> isEqual)
Description copied from interface:BeanTableModelUpdate existing rows and add missing rows to the table model.- Specified by:
updateBeansin interfaceBeanTableModel<T>- Parameters:
beans- beans to update/appendisEqual- used to determine if a row is already in the model
-
removeRow
public void removeRow(T bean)
-
removeRowAt
protected void removeRowAt(int index)
-
removeAll
public void removeAll(java.lang.Iterable<T> rowBeans)
-
-