org.jdesktop.swingx.sort
Class TableSortController<M extends TableModel>

java.lang.Object
  extended by javax.swing.RowSorter<M>
      extended by javax.swing.DefaultRowSorter<M,Integer>
          extended by org.jdesktop.swingx.sort.DefaultSortController<M>
              extended by org.jdesktop.swingx.sort.TableSortController<M>
All Implemented Interfaces:
SortController<M>

public class TableSortController<M extends TableModel>
extends DefaultSortController<M>

A SortController to use for a JXTable.

PENDING JW: should move up to DefaultRowSorter for re-use in ListRowSorter, but as long as we don't have the latter ...


Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.DefaultRowSorter
DefaultRowSorter.ModelWrapper<M,I>
 
Nested classes/interfaces inherited from class javax.swing.RowSorter
RowSorter.SortKey
 
Field Summary
 
Fields inherited from class org.jdesktop.swingx.sort.DefaultSortController
COMPARABLE_COMPARATOR
 
Constructor Summary
TableSortController()
           
TableSortController(M model)
           
 
Method Summary
 Comparator<?> getComparator(int column)
          Returns the Comparator for the specified column.
 void setModel(M model)
          Sets the TableModel to use as the underlying model for this TableRowSorter.
protected  boolean useToString(int column)
          Returns whether or not to convert the value to a string before doing comparisons when sorting.
 
Methods inherited from class org.jdesktop.swingx.sort.DefaultSortController
getDefaultSortOrderCycle, getSortOrder, getSortOrderCycle, getStringValueProvider, isSortable, isSortable, resetSortOrders, setSortable, setSortable, setSortOrder, setSortOrderCycle, setStringValueProvider, toggleSortOrder
 
Methods inherited from class javax.swing.DefaultRowSorter
allRowsChanged, convertRowIndexToModel, convertRowIndexToView, getMaxSortKeys, getModel, getModelRowCount, getModelWrapper, getRowFilter, getSortKeys, getSortsOnUpdates, getViewRowCount, modelStructureChanged, rowsDeleted, rowsInserted, rowsUpdated, rowsUpdated, setComparator, setMaxSortKeys, setModelWrapper, setRowFilter, setSortKeys, setSortsOnUpdates, sort
 
Methods inherited from class javax.swing.RowSorter
addRowSorterListener, fireRowSorterChanged, fireSortOrderChanged, removeRowSorterListener
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.jdesktop.swingx.sort.SortController
getRowFilter, getSortsOnUpdates, setComparator, setRowFilter, setSortsOnUpdates
 

Constructor Detail

TableSortController

public TableSortController()

TableSortController

public TableSortController(M model)
Parameters:
model -
Method Detail

setModel

public void setModel(M model)
Sets the TableModel to use as the underlying model for this TableRowSorter. A value of null can be used to set an empty model.

Parameters:
model - the underlying model to use, or null

getComparator

public Comparator<?> getComparator(int column)
Returns the Comparator for the specified column. If a Comparator has not been specified using the setComparator method a Comparator will be returned based on the column class (TableModel.getColumnClass) of the specified column. If the column class is String, Collator.getInstance is returned. If the column class implements Comparable a private Comparator is returned that invokes the compareTo method. Otherwise Collator.getInstance is returned.

PENDING JW: think about implications to string value lookup!

Specified by:
getComparator in interface SortController<M extends TableModel>
Overrides:
getComparator in class DefaultRowSorter<M extends TableModel,Integer>
Parameters:
column - the column to fetch the Comparator for, in terms of the underlying model
Returns:
the Comparator for the specified column
Throws:
IndexOutOfBoundsException - if column is outside the range of the underlying model

useToString

protected boolean useToString(int column)
Returns whether or not to convert the value to a string before doing comparisons when sorting. If true ModelWrapper.getStringValueAt will be used, otherwise ModelWrapper.getValueAt will be used. It is up to subclasses, such as TableRowSorter, to honor this value in their ModelWrapper implementation.

Note: must implement same logic as the overridden comparator lookup, otherwise will throw ClassCastException because here the comparator is never null.

PENDING JW: think about implications to string value lookup!

Overrides:
useToString in class DefaultRowSorter<M extends TableModel,Integer>
Parameters:
column - the index of the column to test, in terms of the underlying model
Throws:
IndexOutOfBoundsException - if column is not valid