ca.odell.glazedlists.gui
Class AbstractTableComparatorChooser<E>
java.lang.Object
ca.odell.glazedlists.gui.AbstractTableComparatorChooser<E>
public abstract class AbstractTableComparatorChooser<E>
extends java.lang.Object
A TableComparatorChooser is a tool that allows the user to sort a table
widget by clicking on the table's headers. It requires that the table has a
SortedList as a source as the sorting on that list is used.
static Object | MULTIPLE_COLUMN_KEYBOARD - Emulate the sorting behaviour of SUN's TableSorter, by Philip Milne et.
|
static Object | MULTIPLE_COLUMN_MOUSE - Sort multiple columns without use of the keyboard.
|
static Object | SINGLE_COLUMN - Emulate the sorting behaviour of Windows Explorer and Mac OS X Finder.
|
protected SortedList | sortedList - the sorted list to choose the comparators for
|
protected ca.odell.glazedlists.impl.gui.SortingState | sortingState - manage which columns are sorted and in which order
|
protected Comparator | superE>sortedListComparator - the potentially foreign comparator associated with the sorted list
|
void | appendComparator(int column, int comparatorIndex, boolean reverse) - Append the comparator specified by the column, comparator index and reverse
parameters to the end of the sequence of comparators this
AbstractTableComparatorChooser is sorting the SortedList
by.
|
void | clearComparator() - Clear all sorting state and set the
SortedList to use its
natural order.
|
Comparator | createComparatorForElement(Comparator comparatorForColumn, int column) - Creates a
Comparator that can compare list elements
given a Comparator that can compare column values for the specified
column.
|
void | dispose()
|
void | fromString(String stringEncoded) - This class is capable of representing its own state with a String, to
persist sorting state externally.
|
int | getColumnComparatorIndex(int column) - Gets the index comparator in use for the specified column.
|
List | getComparatorsForColumn(int column) - Gets the list of comparators for the specified column.
|
List | getSortingColumns() - Get the columns that the TableComparatorChooser is sorting by.
|
protected int | getSortingStyle(int column) - Gets the sorting style currently applied to the specified column.
|
boolean | isColumnReverse(int column) - Gets whether the comparator in use for the specified column is reverse.
|
protected void | rebuildComparator() - Updates the comparator in use and applies it to the table.
|
protected void | redetectComparator(E> currentComparator) - Examines the current
Comparator of the SortedList and
adds icons to the table header renderers in response.
|
protected void | setTableFormat(TableFormat tableFormat) - Adjusts the TableFormat this comparator chooser uses when selecting
comparators.
|
String | toString() - Encode the current sorting state as a
String .
|
MULTIPLE_COLUMN_KEYBOARD
public static final Object MULTIPLE_COLUMN_KEYBOARD
Emulate the sorting behaviour of SUN's TableSorter, by Philip Milne et. al.
This is not a direct adaptation since we choose to support potentially
many Comparators per column, wheras TableSorter is limited to one.
For reference, this is TableSorter's behaviour, copied shamelessly
from that project's source file:
Mouse-click: Clears the sorting gui of all other columns and advances
the sorting gui of that column through three values:
{NOT_SORTED, ASCENDING, DESCENDING} (then back to NOT_SORTED again).
SHIFT-mouse-click: Clears the sorting gui of all other columns and
cycles the sorting gui 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.
MULTIPLE_COLUMN_MOUSE
public static final Object MULTIPLE_COLUMN_MOUSE
Sort multiple columns without use of the keyboard. Single clicks cycle
through comparators, double clicks clear them.
This is the original sorting strategy provided by Glazed Lists, with a
limitation that it is impossible to clear a sort order that is already in
place. It's designed to be used with multiple columns and multiple comparators
per column.
The overall behaviour is as follows:
Click: sort this column. If it's already sorted, reverse the sort order.
If its already reversed, sort using the column's next comparator in forward
order. If there are no more comparators, go to the first comparator. If there
are multiple sort columns, sort this column after those columns.
Double click: like a single click, but clear all sorting columns first.
SINGLE_COLUMN
public static final Object SINGLE_COLUMN
Emulate the sorting behaviour of Windows Explorer and Mac OS X Finder.
Single clicks toggles between forward and reverse. If multiple comparators
are available for a particular column, they will be cycled in order.
At most one column can be sorted at a time.
sortedList
protected SortedList sortedList
the sorted list to choose the comparators for
sortingState
protected final ca.odell.glazedlists.impl.gui.SortingState sortingState
manage which columns are sorted and in which order
superE>sortedListComparator
protected Comparator superE>sortedListComparator
the potentially foreign comparator associated with the sorted list
AbstractTableComparatorChooser
protected AbstractTableComparatorChooser(SortedList sortedList,
TableFormat tableFormat)
appendComparator
public void appendComparator(int column,
int comparatorIndex,
boolean reverse)
Append the comparator specified by the column, comparator index and reverse
parameters to the end of the sequence of comparators this
AbstractTableComparatorChooser
is sorting the
SortedList
by.
Append implies that if this
AbstractTableComparatorChooser
is already sorting that list by another column, this comparator will only
be used to break ties from that
Comparator
. If the table is already
sorting by the specified column, it will be silently discarded.
Suppose we're currently not sorting the table, this method will cause
the table to be sorted by the column specified. If we are sorting the table
by some column c, this will sort by that column first and the column
specified here second.
If this
AbstractTableComparatorChooser
doesn't support multiple
column sort, this will replace the current
Comparator
rather than
appending to it.
column
- the column to sort bycomparatorIndex
- the comparator to use, specify 0
for the
default comparator.reverse
- whether to reverse the specified comparator.
clearComparator
public void clearComparator()
Clear all sorting state and set the
SortedList
to use its
natural order.
createComparatorForElement
public Comparator createComparatorForElement(Comparator comparatorForColumn,
int column)
Creates a Comparator
that can compare list elements
given a Comparator
that can compare column values for the specified
column. This returns a Comparator
that extracts the table values for
the specified column and then delegates the actual comparison to the specified
comparator.
dispose
public void dispose()
fromString
public void fromString(String stringEncoded)
This class is capable of representing its own state with a String, to
persist sorting state externally. The format uses zero or more column specifications,
separated by commas. Here are some valid examples:
String Representation | Description |
---|
"column 3" | Sort using the column at index 3, using that column's first comparator, in forward order |
"column 3 reversed" | Sort using the column at index 3, using that column's first comparator, in reverse order |
"column 3, column 1" | Sort using the column at index 3, using that column's first comparator, in forward order
then by the column at index 1, using that column's first comparator, in forward order. |
"column 3 comparator 2" | Sort using the column at index 3, using that column's comparator at index 2, in forward order |
"column 3 comparator 2 reversed" | Sort using the column at index 3, using that column's comparator at index 2, in reverse order |
"column 3 reversed, column 1 comparator 2, column 5 comparator 1 reversed, column 0" | Sort using the column at index 3, using that column's first comparator, in reverse order
then by the column at index 1, using that column's comparator at index 2, in forward order
then by the column at index 5, using that column's comparator at index 1, in reverse order
then by the column at index 0, using that column's first comparator, in forward order. |
More formally, the grammar for this String representation is as follows:
<COLUMN> = column <COLUMN INDEX> (comparator <COMPARATOR INDEX>)? (reversed)?
<COMPARATOR SPEC> = ( <COLUMN> (, <COLUMN>)* )?
getColumnComparatorIndex
public int getColumnComparatorIndex(int column)
- the comparator index for the specified column, or -1 if that column
is not being used to sort.
getComparatorsForColumn
public List getComparatorsForColumn(int column)
Gets the list of comparators for the specified column. The user is
free to add comparators to this list or clear the list if the specified
column cannot be sorted.
getSortingColumns
public List getSortingColumns()
Get the columns that the TableComparatorChooser is sorting by.
- a List of Integers. The first Integer is the primary sorting column,
the second is the secondary, etc. This list may be empty but never null.
getSortingStyle
protected int getSortingStyle(int column)
Gets the sorting style currently applied to the specified column.
isColumnReverse
public boolean isColumnReverse(int column)
Gets whether the comparator in use for the specified column is reverse.
rebuildComparator
protected void rebuildComparator()
Updates the comparator in use and applies it to the table.
redetectComparator
protected void redetectComparator(E> currentComparator)
Examines the current
Comparator
of the SortedList and
adds icons to the table header renderers in response.
To do this, clicks are injected into each of the
corresponding
ColumnClickTracker
s.
setTableFormat
protected void setTableFormat(TableFormat tableFormat)
Adjusts the TableFormat this comparator chooser uses when selecting
comparators. Calling this method will clear any active sorting.
toString
public String toString()
Encode the current sorting state as a
String
. This specially formatted
String
is ideal for persistence using any preferences API. The
state of this
AbstractTableComparatorChooser
can be restored
by passing the return value of this method to
fromString(String)
.
Glazed Lists, Copyright © 2003-2006 publicobject.com, O'Dell Engineering.
Documentation build by pbuilder at 2007-12-21 23:49