Package docking.widgets.table
Class AbstractSortedTableModel<T>
- java.lang.Object
- 
- javax.swing.table.AbstractTableModel
- 
- docking.widgets.table.AbstractGTableModel<T>
- 
- docking.widgets.table.AbstractSortedTableModel<T>
 
 
 
- 
- Type Parameters:
- T- The row type upon which the table is based
 - All Implemented Interfaces:
- RowObjectTableModel<T>,- SelectionStorage<T>,- SortedTableModel,- java.io.Serializable,- javax.swing.table.TableModel
 - Direct Known Subclasses:
- DynamicTableModel,- GDynamicColumnTableModel,- LanguageSortedTableModel
 
 public abstract class AbstractSortedTableModel<T> extends AbstractGTableModel<T> implements SortedTableModel Table models should extends this model when they want sorting, potentially across multiple columns, but do not want Threading or do not work on Program-related data (Address, ProgramLocations, etc...).In order to define custom comparators for a column, simply override createSortComparator(int). Otherwise, a default comparator will be created for you.Note on sorting: it is possible that the user can disable sorting by de-selecting all sorted columns. This can also be achieved programmatically by calling setTableSortState(TableSortState)with a value ofTableSortState.createUnsortedSortState().- See Also:
- Serialized Form
 
- 
- 
Field SummaryFields Modifier and Type Field Description protected booleanhasEverSorted- 
Fields inherited from class docking.widgets.table.AbstractGTableModelWIDTH_UNDEFINED
 - 
Fields inherited from interface docking.widgets.table.SortedTableModelASCENDING_ORDER, DESCENDING_ORDER
 
- 
 - 
Constructor SummaryConstructors Constructor Description AbstractSortedTableModel()AbstractSortedTableModel(int defaultSortColumn)
 - 
Method SummaryAll Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddSortListener(SortListener l)Adds a listener to be notified when the sort state of this model changes.protected java.util.Comparator<T>createSortComparator(int columnIndex)An extension point for subclasses to insert their own comparator objects for their data.protected TableSortingContext<T>createSortingContext(TableSortState newSortState)voidfireTableChanged(javax.swing.event.TableModelEvent e)protected intgetIndexForRowObject(T rowObject)A convenience method for subclasses to quickly/efficiently search for the index of a given row object that is visible in the GUI.protected intgetIndexForRowObject(T rowObject, java.util.List<T> data)Returns the index for the given object in the given listTableSortStategetPendingSortState()intgetPrimarySortColumnIndex()Returns the column index that is the primary sorted columnintgetRowIndex(T rowObject)Returns the index of the given row object in this model; -1 if the model does not contain the given object.TgetRowObject(int viewRow)Returns the corresponding object for the given row.TableSortStategetTableSortState()Gets the sort state of this sorted modeljava.lang.ObjectgetValueAt(int rowIndex, int columnIndex)The default implementation ofTableModel.getValueAt(int, int)that calls the abstractRowObjectTableModel.getColumnValueForRow(Object, int).protected voidinitializeSorting()This method is an attempt to help models that forget to call fireTableDataChanged().booleanisSorted()booleanisSortPending()protected voidnotifyModelSorted(boolean dataChanged)Fires an event to let the listeners (like JTable) know that things have been changed.protected voidreSort()protected voidsetDefaultTableSortState(TableSortState defaultSortState)voidsetTableSortState(TableSortState newSortState)Sets the sort state for this table modelprotected voidsort(java.util.List<T> data, TableSortingContext<T> sortingContext)A default sort method that uses theCollections.sort(List, Comparator)method for sorting.protected voidsortCompleted(TableSortingContext<T> sortingContext)- 
Methods inherited from class docking.widgets.table.AbstractGTableModeldispose, getLastSelectedObjects, getPreferredColumnWidth, getRowCount, refresh, setLastSelectedObjects
 - 
Methods inherited from class javax.swing.table.AbstractTableModeladdTableModelListener, findColumn, fireTableCellUpdated, fireTableDataChanged, fireTableRowsDeleted, fireTableRowsInserted, fireTableRowsUpdated, fireTableStructureChanged, getColumnClass, getColumnName, getListeners, getTableModelListeners, isCellEditable, removeTableModelListener, setValueAt
 - 
Methods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 - 
Methods inherited from interface docking.widgets.table.RowObjectTableModelfireTableDataChanged, getColumnValueForRow, getModelData, getName
 - 
Methods inherited from interface docking.widgets.table.SortedTableModelisSortable
 
- 
 
- 
- 
- 
Method Detail- 
setDefaultTableSortStateprotected void setDefaultTableSortState(TableSortState defaultSortState) 
 - 
addSortListenerpublic void addSortListener(SortListener l) Description copied from interface:SortedTableModelAdds a listener to be notified when the sort state of this model changes.
 Note: the listener may be stored in a weak collection, which means you have to maintain a handle to the listener so that it does not get garbage collected.- Specified by:
- addSortListenerin interface- SortedTableModel
- Parameters:
- l- the listener
 
 - 
getRowObjectpublic T getRowObject(int viewRow) Returns the corresponding object for the given row.- Specified by:
- getRowObjectin interface- RowObjectTableModel<T>
- Overrides:
- getRowObjectin class- AbstractGTableModel<T>
- Parameters:
- viewRow- The row for which to get the row object.
- Returns:
- the row object.
 
 - 
getRowIndexpublic int getRowIndex(T rowObject) Returns the index of the given row object in this model; -1 if the model does not contain the given object.Warning: if the this model has no sort applied, then performance will be O(n). If sorted, then performance is O(log n). You can call isSorted()to know when this will happen.- Specified by:
- getRowIndexin interface- RowObjectTableModel<T>
- Overrides:
- getRowIndexin class- AbstractGTableModel<T>
- Parameters:
- rowObject- the object
- Returns:
- the row number
 
 - 
fireTableChangedpublic void fireTableChanged(javax.swing.event.TableModelEvent e) - Overrides:
- fireTableChangedin class- javax.swing.table.AbstractTableModel
 
 - 
reSortprotected void reSort() 
 - 
getTableSortStatepublic TableSortState getTableSortState() Description copied from interface:SortedTableModelGets the sort state of this sorted model- Specified by:
- getTableSortStatein interface- SortedTableModel
- Returns:
- the current sort state
 
 - 
getPrimarySortColumnIndexpublic int getPrimarySortColumnIndex() Description copied from interface:SortedTableModelReturns the column index that is the primary sorted column- Specified by:
- getPrimarySortColumnIndexin interface- SortedTableModel
- Returns:
- the index
 
 - 
setTableSortStatepublic void setTableSortState(TableSortState newSortState) Description copied from interface:SortedTableModelSets the sort state for this table model- Specified by:
- setTableSortStatein interface- SortedTableModel
- Parameters:
- newSortState- the sort state
 
 - 
getPendingSortStatepublic TableSortState getPendingSortState() 
 - 
isSortPendingpublic boolean isSortPending() 
 - 
isSortedpublic boolean isSorted() 
 - 
createSortingContextprotected TableSortingContext<T> createSortingContext(TableSortState newSortState) 
 - 
getValueAtpublic java.lang.Object getValueAt(int rowIndex, int columnIndex)The default implementation ofTableModel.getValueAt(int, int)that calls the abstractRowObjectTableModel.getColumnValueForRow(Object, int).- Specified by:
- getValueAtin interface- javax.swing.table.TableModel
- Overrides:
- getValueAtin class- AbstractGTableModel<T>
 
 - 
initializeSortingprotected void initializeSorting() This method is an attempt to help models that forget to call fireTableDataChanged(). It is expected that tables will fire the notification when they are ready to display data, even if they have that data at construction time. We put this call here so that the forgetful subclasses will have their data sorted for them the first time that this table tries to render itself.
 - 
getIndexForRowObjectprotected int getIndexForRowObject(T rowObject) A convenience method for subclasses to quickly/efficiently search for the index of a given row object that is visible in the GUI. The visible limitation is due to the fact that the data searched is retrieved fromRowObjectTableModel.getModelData(), which may be filtered.- Overrides:
- getIndexForRowObjectin class- AbstractGTableModel<T>
- Parameters:
- rowObject- The object for which to search.
- Returns:
- the index of the item in the data returned by
 
 - 
getIndexForRowObjectprotected int getIndexForRowObject(T rowObject, java.util.List<T> data) Returns the index for the given object in the given list- Overrides:
- getIndexForRowObjectin class- AbstractGTableModel<T>
- Parameters:
- rowObject- the item
- data- the data
- Returns:
- the index
 
 - 
sortprotected void sort(java.util.List<T> data, TableSortingContext<T> sortingContext) A default sort method that uses theCollections.sort(List, Comparator)method for sorting. Implementors with reasonably sized data sets can rely on this method. For data sets that can become large, the ThreadedTableModel is the recommended base class, as it handles loading/sorting/filtering in a threaded way.- Parameters:
- data- The data to be sorted
- sortingContext- The context required to sort (it contains the sorting columns, a comparator for sorting, etc...).
 
 - 
sortCompletedprotected void sortCompleted(TableSortingContext<T> sortingContext) 
 - 
notifyModelSortedprotected void notifyModelSorted(boolean dataChanged) Fires an event to let the listeners (like JTable) know that things have been changed. This method exists so that subclasses have a way to call the various tableChanged() methods without triggering this class's overridden version.- Parameters:
- dataChanged- True signals that the actual data has changed; false signals that the data is the same, with exception that attributes of that data may be different.
 
 - 
createSortComparatorprotected java.util.Comparator<T> createSortComparator(int columnIndex) An extension point for subclasses to insert their own comparator objects for their data. Subclasses can create comparators for a single or multiple columns, as desired.- Parameters:
- columnIndex- the column index
- Returns:
- the comparator
 
 
- 
 
-