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

java.lang.Object
  extended by javax.swing.RowSorter<M>
      extended by javax.swing.DefaultRowSorter<M,java.lang.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 javax.swing.table.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 ...

Author:
Jeanette Winzenburg

Nested Class Summary
 
Nested classes/interfaces inherited from class javax.swing.DefaultRowSorter
javax.swing.DefaultRowSorter.ModelWrapper<M,I>
 
Nested classes/interfaces inherited from class javax.swing.RowSorter
javax.swing.RowSorter.SortKey
 
Field Summary
 
Fields inherited from class org.jdesktop.swingx.sort.DefaultSortController
cachedModelRowCount, COMPARABLE_COMPARATOR
 
Constructor Summary
TableSortController()
           
TableSortController(M model)
           
 
Method Summary
 java.util.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)
          
 
Methods inherited from class org.jdesktop.swingx.sort.DefaultSortController
allRowsChanged, convertRowIndexToModel, convertRowIndexToView, getDefaultSortOrderCycle, getModelRowCount, getSortOrder, getSortOrderCycle, getStringValueProvider, getViewRowCount, isSortable, isSortable, modelStructureChanged, resetSortOrders, rowsDeleted, rowsInserted, setSortable, setSortable, setSortOrder, setSortOrderCycle, setStringValueProvider, toggleSortOrder
 
Methods inherited from class javax.swing.DefaultRowSorter
getMaxSortKeys, getModel, getModelWrapper, getRowFilter, getSortKeys, getSortsOnUpdates, 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 java.util.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 javax.swing.table.TableModel>
Overrides:
getComparator in class javax.swing.DefaultRowSorter<M extends javax.swing.table.TableModel,java.lang.Integer>
Parameters:
column - the column to fetch the Comparator for, in terms of the underlying model
Returns:
the Comparator for the specified column
Throws:
java.lang.IndexOutOfBoundsException - if column is outside the range of the underlying model

useToString

protected boolean useToString(int column)

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 javax.swing.DefaultRowSorter<M extends javax.swing.table.TableModel,java.lang.Integer>
Throws:
java.lang.IndexOutOfBoundsException