com.jaxfront.core.ui.tableModel
Class SorterTableModel
java.lang.Object
javax.swing.table.AbstractTableModel
com.jaxfront.core.ui.tableModel.SorterTableModel
- All Implemented Interfaces:
- StackableTableModel, java.io.Serializable, javax.swing.table.TableModel
public class SorterTableModel
- extends javax.swing.table.AbstractTableModel
- implements StackableTableModel
TableSorter is a decorator for TableModels; adding sorting functionality to a supplied TableModel. TableSorter does not store or copy the data in
its TableModel; instead it maintains a map from the row indexes of the view to the row indexes of the model. As requests are made of the sorter
(like getValueAt(row, col)) they are passed to the underlying model after the row numbers have been translated via the internal mapping array. This
way, the TableSorter appears to hold another copy of the table with the rows in a different order.
TableSorter registers itself as a listener
to the underlying model, just as the JTable itself would. Events recieved from the model are examined, sometimes manipulated (typically widened),
and then passed on to the TableSorter's listeners (typically the JTable). If a change to the model has invalidated the order of TableSorter's rows,
a note of this is made and the sorter will resort the rows the next time a value is requested. When the tableHeader property is set, either by
using the setTableHeader() method or the two argument constructor, the table header may be used as a complete UI for TableSorter. The default
renderer of the tableHeader is decorated with a renderer that indicates the sorting status of each column. In addition, a mouse listener is
installed with the following behavior:
- Mouse-click: Clears the sorting status of all other columns and advances the sorting status of that column through three values: {NOT_SORTED,
ASCENDING, DESCENDING} (then back to NOT_SORTED again).
- SHIFT-mouse-click: Clears the sorting status of all other columns and cycles the sorting status of the column through the same three values,
in the opposite order: {NOT_SORTED, DESCENDING, ASCENDING}.
- CONTROL-mouse-click and CONTROL-SHIFT-mouse-click: as above except that the changes to the column do not cancel the statuses of columns that
are already sorting - giving a way to initiate a compound sort.
This is a long overdue rewrite of a class of the same name that first appeared in the swing table demos in 1997.
- See Also:
- Serialized Form
| 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 |
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Methods inherited from interface javax.swing.table.TableModel |
addTableModelListener, removeTableModelListener |
ASCENDING
public static final int ASCENDING
- See Also:
- Constant Field Values
COMPARABLE_COMAPRATOR
public static final java.util.Comparator COMPARABLE_COMAPRATOR
DESCENDING
public static final int DESCENDING
- See Also:
- Constant Field Values
LEXICAL_COMPARATOR
public static final java.util.Comparator LEXICAL_COMPARATOR
NOT_SORTED
public static final int NOT_SORTED
- See Also:
- Constant Field Values
NUMBER_COMPARATOR
public static final java.util.Comparator NUMBER_COMPARATOR
RULE_COMAPRATOR
public static final java.util.Comparator RULE_COMAPRATOR
RULE_STATUS_COMAPRATOR
public static final java.util.Comparator RULE_STATUS_COMAPRATOR
STATUS
public static final java.lang.String STATUS
- See Also:
- Constant Field Values
TYPE_COMAPRATOR
public static final java.util.Comparator TYPE_COMAPRATOR
SorterTableModel
public SorterTableModel()
SorterTableModel
public SorterTableModel(javax.swing.table.TableModel tableModel)
SorterTableModel
public SorterTableModel(javax.swing.table.TableModel tableModel,
javax.swing.table.JTableHeader tableHeader)
getColumnClass
public java.lang.Class getColumnClass(int column)
- Specified by:
getColumnClass in interface javax.swing.table.TableModel- Overrides:
getColumnClass in class javax.swing.table.AbstractTableModel
getColumnCount
public int getColumnCount()
- Specified by:
getColumnCount in interface javax.swing.table.TableModel
getColumnName
public java.lang.String getColumnName(int column)
- Specified by:
getColumnName in interface javax.swing.table.TableModel- Overrides:
getColumnName in class javax.swing.table.AbstractTableModel
getRowCount
public int getRowCount()
- Specified by:
getRowCount in interface javax.swing.table.TableModel
getSortingStatus
public int getSortingStatus(int column)
getTableHeader
public javax.swing.table.JTableHeader getTableHeader()
getTableModel
public javax.swing.table.TableModel getTableModel()
getValueAt
public java.lang.Object getValueAt(int row,
int column)
- Specified by:
getValueAt in interface javax.swing.table.TableModel
getViewToModel
public int getViewToModel(int rowIndex)
- Specified by:
getViewToModel in interface StackableTableModel
isCellEditable
public boolean isCellEditable(int row,
int column)
- Specified by:
isCellEditable in interface javax.swing.table.TableModel- Overrides:
isCellEditable in class javax.swing.table.AbstractTableModel
isColNumSorterMode
public boolean isColNumSorterMode()
isSorting
public boolean isSorting()
setColNumSorterMode
public void setColNumSorterMode(boolean isColNumSorterMode)
setColumnClass
public void setColumnClass(int column,
java.lang.Class columnClass)
setColumnComparator
public void setColumnComparator(java.lang.Class type,
java.util.Comparator comparator)
setColumnComparator
public void setColumnComparator(java.lang.Integer column,
java.util.Comparator comparator)
setSortingStatus
public void setSortingStatus(int column,
int status)
setTableHeader
public void setTableHeader(javax.swing.table.JTableHeader tableHeader)
setTableModel
public void setTableModel(javax.swing.table.TableModel tableModel)
setValueAt
public void setValueAt(java.lang.Object aValue,
int row,
int column)
- Specified by:
setValueAt in interface javax.swing.table.TableModel- Overrides:
setValueAt in class javax.swing.table.AbstractTableModel