Class BufferedBeanListTableModel<T>
- java.lang.Object
-
- javax.swing.table.AbstractTableModel
-
- io.github.jonestimd.swing.table.model.BeanListTableModel<T>
-
- io.github.jonestimd.swing.table.model.BufferedBeanListTableModel<T>
-
- All Implemented Interfaces:
ChangeBuffer,BeanTableModel<T>,ChangeBufferTableModel<T>,ColumnIdentifier,java.io.Serializable,javax.swing.table.TableModel
- Direct Known Subclasses:
ValidatedBeanListTableModel
public class BufferedBeanListTableModel<T> extends BeanListTableModel<T> implements ChangeBufferTableModel<T>
This class overridesBeanListTableModelto add change tracking. Changes to cells are queued byBeanListTableModel.setValueAt(Object, int, int). The following methods are used to update pending changes for rows:queueAdd(Object)queueAdd(int, Object)(cancelled byqueueDelete(Object)queueDelete(Object)undoChangedAt(int, int)undoDelete(int)
commit()method should be called after all pending changes have been saved. Therevert()method is used to revert all pending changes.- See Also:
- Serialized Form
-
-
Field Summary
-
Fields inherited from class io.github.jonestimd.swing.table.model.BeanListTableModel
beanTableAdapter
-
-
Constructor Summary
Constructors Constructor Description BufferedBeanListTableModel(ColumnAdapter<? super T,?>... columnAdapters)BufferedBeanListTableModel(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 voidcommit()Save any pending changes.java.util.stream.Stream<T>getChangedRows()java.util.List<T>getPendingAdds()java.util.List<T>getPendingDeletes()java.util.stream.Stream<T>getPendingUpdates()booleanisCellEditable(int rowIndex, int columnIndex)Override to disable editing on a pending delete.booleanisChanged()booleanisChangedAt(int rowIndex, int columnIndex)booleanisPendingAdd(int rowIndex)booleanisPendingDelete(int rowIndex)voidqueueAdd(int row, T bean)Insert an unsaved bean.voidqueueAdd(T bean)Append an unsaved bean.booleanqueueDelete(T bean)voidrevert()Undo any pending changes.voidsetBeans(java.util.Collection<T> beans)Replace all rows of the table model.voidsetRow(int row, T bean)Override to merge pending changes with new bean.protected voidsetValue(java.lang.Object value, int rowIndex, int columnIndex)voidundoChangedAt(int rowIndex, int columnIndex)voidundoDelete(int rowIndex)-
Methods inherited from class io.github.jonestimd.swing.table.model.BeanListTableModel
addRow, addRow, getBean, getBeanCount, getBeans, getColumnAdapter, getColumnClass, getColumnCount, getColumnIdentifier, getColumnName, getCursor, getRow, getRowCount, getValue, getValueAt, handleClick, indexOf, notifyDataProviders, removeAll, removeRow, removeRowAt, setValueAt, updateBeans
-
Methods inherited from class javax.swing.table.AbstractTableModel
addTableModelListener, findColumn, fireTableCellUpdated, fireTableChanged, fireTableDataChanged, fireTableRowsDeleted, fireTableRowsInserted, fireTableRowsUpdated, fireTableStructureChanged, getListeners, getTableModelListeners, removeTableModelListener
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface io.github.jonestimd.swing.table.model.BeanTableModel
getBean, getBeanCount, getCursor, getValue, handleClick, updateBeans
-
Methods inherited from interface io.github.jonestimd.swing.table.model.ColumnIdentifier
getColumnIdentifier
-
-
-
-
Constructor Detail
-
BufferedBeanListTableModel
@SafeVarargs public BufferedBeanListTableModel(ColumnAdapter<? super T,?>... columnAdapters)
-
BufferedBeanListTableModel
public BufferedBeanListTableModel(java.util.List<? extends ColumnAdapter<? super T,?>> columnAdapters, java.lang.Iterable<? extends TableDataProvider<T>> dataProviders)
-
-
Method Detail
-
setValue
protected void setValue(java.lang.Object value, int rowIndex, int columnIndex)- Overrides:
setValuein classBeanListTableModel<T>
-
getChangedRows
public java.util.stream.Stream<T> getChangedRows()
- Specified by:
getChangedRowsin interfaceChangeBufferTableModel<T>- Returns:
- updated, added and deleted rows.
-
getPendingAdds
public java.util.List<T> getPendingAdds()
- Specified by:
getPendingAddsin interfaceChangeBufferTableModel<T>
-
getPendingDeletes
public java.util.List<T> getPendingDeletes()
- Specified by:
getPendingDeletesin interfaceChangeBufferTableModel<T>
-
getPendingUpdates
public java.util.stream.Stream<T> getPendingUpdates()
- Specified by:
getPendingUpdatesin interfaceChangeBufferTableModel<T>- Returns:
- added and changed rows.
-
revert
public void revert()
Description copied from interface:ChangeBufferUndo any pending changes.- Specified by:
revertin interfaceChangeBuffer
-
commit
public void commit()
Description copied from interface:ChangeBufferSave any pending changes.- Specified by:
commitin interfaceChangeBuffer
-
isChanged
public boolean isChanged()
- Specified by:
isChangedin interfaceChangeBuffer- Returns:
- true if there are pending changes
-
isChangedAt
public boolean isChangedAt(int rowIndex, int columnIndex)- Specified by:
isChangedAtin interfaceChangeBufferTableModel<T>
-
undoChangedAt
public void undoChangedAt(int rowIndex, int columnIndex)- Specified by:
undoChangedAtin interfaceChangeBufferTableModel<T>
-
isPendingAdd
public boolean isPendingAdd(int rowIndex)
-
isPendingDelete
public boolean isPendingDelete(int rowIndex)
- Specified by:
isPendingDeletein interfaceChangeBufferTableModel<T>
-
undoDelete
public void undoDelete(int rowIndex)
- Specified by:
undoDeletein interfaceChangeBufferTableModel<T>
-
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>- Overrides:
setBeansin classBeanListTableModel<T>- Parameters:
beans- the new rows
-
setRow
public void setRow(int row, T bean)Override to merge pending changes with new bean. Copies changed column values from the old bean to the new bean. If the row was a pending add or delete then it will still be a pending add or delete.- Overrides:
setRowin classBeanListTableModel<T>
-
isCellEditable
public boolean isCellEditable(int rowIndex, int columnIndex)Override to disable editing on a pending delete.- Specified by:
isCellEditablein interfacejavax.swing.table.TableModel- Overrides:
isCellEditablein classBeanListTableModel<T>
-
queueAdd
public void queueAdd(T bean)
Description copied from interface:ChangeBufferTableModelAppend an unsaved bean.- Specified by:
queueAddin interfaceChangeBufferTableModel<T>
-
queueAdd
public void queueAdd(int row, T bean)Description copied from interface:ChangeBufferTableModelInsert an unsaved bean.- Specified by:
queueAddin interfaceChangeBufferTableModel<T>
-
queueDelete
public boolean queueDelete(T bean)
- Specified by:
queueDeletein interfaceChangeBufferTableModel<T>- Returns:
- true if the delete was queued, false if the row was an unsaved addition and was deleted immediately.
-
-