org.jdesktop.swingx.sort
Class DefaultSortController<M>

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>
All Implemented Interfaces:
SortController<M>
Direct Known Subclasses:
ListSortController, TableSortController

public abstract class DefaultSortController<M>
extends javax.swing.DefaultRowSorter<M,java.lang.Integer>
implements SortController<M>

A SortController to use for a JXTable.

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
static java.util.Comparator COMPARABLE_COMPARATOR
          Comparator that uses compareTo on the contents.
 
Constructor Summary
DefaultSortController()
           
 
Method Summary
static javax.swing.SortOrder[] getDefaultSortOrderCycle()
          Returns the default cycle.
 javax.swing.SortOrder getSortOrder(int column)
          Returns the sort order of the specified column.
 javax.swing.SortOrder[] getSortOrderCycle()
          Returns the cycle of sort orders to cycle through.
 StringValueProvider getStringValueProvider()
          Returns the registry of string values.
 boolean isSortable()
          Returns true if this controller is sortable; otherwise, false.
 boolean isSortable(int column)
          Returns true if the specified column is sortable.
 void resetSortOrders()
          Resets all interactive sorting.
 void setSortable(boolean sortable)
          Sets whether or not this controller is sortable.
 void setSortable(int column, boolean sortable)
          Sets whether or not the specified column is sortable.
 void setSortOrder(int column, javax.swing.SortOrder sortOrder)
          Sets the sort order of the specified column.
 void setSortOrderCycle(javax.swing.SortOrder... cycle)
          Sets the cycle of sort ordes to toggle through.
 void setStringValueProvider(StringValueProvider registry)
          Sets the registry of string values.
 void toggleSortOrder(int column)
          Reverses the sort order of the specified column.
 
Methods inherited from class javax.swing.DefaultRowSorter
allRowsChanged, convertRowIndexToModel, convertRowIndexToView, getComparator, getMaxSortKeys, getModel, getModelRowCount, getModelWrapper, getRowFilter, getSortKeys, getSortsOnUpdates, getViewRowCount, modelStructureChanged, rowsDeleted, rowsInserted, rowsUpdated, rowsUpdated, setComparator, setMaxSortKeys, setModelWrapper, setRowFilter, setSortKeys, setSortsOnUpdates, sort, useToString
 
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
getComparator, getRowFilter, getSortsOnUpdates, setComparator, setRowFilter, setSortsOnUpdates
 

Field Detail

COMPARABLE_COMPARATOR

public static final java.util.Comparator COMPARABLE_COMPARATOR
Comparator that uses compareTo on the contents.

Constructor Detail

DefaultSortController

public DefaultSortController()
Method Detail

setSortable

public void setSortable(boolean sortable)
Sets whether or not this controller is sortable.

The default is true.

PENDING JW: define behaviour if sortable is disabled while has sortOrders. In this case JXTable resets all sorts.

Specified by:
setSortable in interface SortController<M>
Parameters:
sortable - whether or not this controller is sortable
See Also:
SortController.isSortable()

isSortable

public boolean isSortable()
Returns true if this controller is sortable; otherwise, false.

Specified by:
isSortable in interface SortController<M>
Returns:
true if this controller is sortable
See Also:
SortController.isSortable()

setSortable

public void setSortable(int column,
                        boolean sortable)
Sets whether or not the specified column is sortable.

The default is true.

PENDING JW: define behaviour if sortable is disabled while has sortOrders. In this case JXTable removes the sort of the column.

PENDING JW: decide whether or not this method should trigger a resort DefaultRowSorter explicitly doesn't, JXTable does.

Specified by:
setSortable in interface SortController<M>
Overrides:
setSortable in class javax.swing.DefaultRowSorter<M,java.lang.Integer>
Parameters:
column - the column to enable or disable sorting on, in terms of the underlying model
sortable - whether or not the specified column is sortable
See Also:
SortController.isSortable(int), SortController.toggleSortOrder(int), SortController.setSortOrder(int, SortOrder)

isSortable

public boolean isSortable(int column)
Returns true if the specified column is sortable.

This returns true if both the controller's sortable property and the column's sortable property is true. Returns false if any of them is false.

Specified by:
isSortable in interface SortController<M>
Overrides:
isSortable in class javax.swing.DefaultRowSorter<M,java.lang.Integer>
Parameters:
column - the column to check sorting for, in terms of the underlying model
Returns:
true if the column is sortable
See Also:
SortController.isSortable(int)

toggleSortOrder

public void toggleSortOrder(int column)
Reverses the sort order of the specified column. The exact behaviour is up to implementations.

Implementations must respect the per-controller and per-column-sortable property.

Overridden - that is completely new implementation - to get first/next SortOrder from sort order cycle. Does nothing if the cycle is empty.

Specified by:
toggleSortOrder in interface SortController<M>
Overrides:
toggleSortOrder in class javax.swing.DefaultRowSorter<M,java.lang.Integer>
Parameters:
column - the model index of the column to toggle
See Also:
SortController.isSortable(int), SortController.isSortable()

setSortOrder

public void setSortOrder(int column,
                         javax.swing.SortOrder sortOrder)
Sets the sort order of the specified column.

Implementations must respect the per-controller and per-column-sortable property.

PENDING JW: toggle has two effects: makes the column the primary sort column, and cycle through. So here we something similar. Should we?

Specified by:
setSortOrder in interface SortController<M>
Parameters:
column - the model index of the column to set
sortOrder - the SortOrder to set for the column
See Also:
SortController.isSortable(int), SortController.isSortable()

getSortOrder

public javax.swing.SortOrder getSortOrder(int column)
Returns the sort order of the specified column.

Specified by:
getSortOrder in interface SortController<M>
Returns:
one of SortOrder.ASCENDING, SortOrder.DESCENDING or SortOrder.UNSORTED.

resetSortOrders

public void resetSortOrders()
Resets all interactive sorting.

Implementations must respect the per-controller and per-column-sortable property.

Specified by:
resetSortOrders in interface SortController<M>

getSortOrderCycle

public javax.swing.SortOrder[] getSortOrderCycle()
Returns the cycle of sort orders to cycle through.

Specified by:
getSortOrderCycle in interface SortController<M>
Returns:

setSortOrderCycle

public void setSortOrderCycle(javax.swing.SortOrder... cycle)
Sets the cycle of sort ordes to toggle through. Zero or more SortOrders which must not be null.

Specified by:
setSortOrderCycle in interface SortController<M>
Parameters:
cycle - the SortOrders to cycle through, may be empty

setStringValueProvider

public void setStringValueProvider(StringValueProvider registry)
Sets the registry of string values. If null, the default provider is used.

Specified by:
setStringValueProvider in interface SortController<M>
Parameters:
registry - the registry to get StringValues for conversion.

getStringValueProvider

public StringValueProvider getStringValueProvider()
Returns the registry of string values.

Specified by:
getStringValueProvider in interface SortController<M>
Returns:
the registry of string converters, guaranteed to never be null.

getDefaultSortOrderCycle

public static javax.swing.SortOrder[] getDefaultSortOrderCycle()
Returns the default cycle.

Returns:
default sort order cycle.


Copyright © 2010. All Rights Reserved.