|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object javax.swing.table.AbstractTableModel org.bibalex.daf.commongui.datamodels.TableSorter
public class TableSorter
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:
Nested Class Summary | |
---|---|
private static class |
TableSorter.Arrow
|
private static class |
TableSorter.Directive
|
private class |
TableSorter.MouseHandler
|
private class |
TableSorter.Row
|
private class |
TableSorter.SortableHeaderRenderer
|
private class |
TableSorter.TableModelHandler
|
Field Summary | |
---|---|
static int |
ASCENDING
Constant indicating that the sorting is ascending. |
private java.util.Map<java.lang.Class,java.util.Comparator> |
columnComparators
|
static java.util.Comparator |
COMPARABLE_COMAPRATOR
A comparator, used in the sorting algorithm to compare successive rows. |
static int |
DESCENDING
Constant indicating that the sorting is descending. |
private static TableSorter.Directive |
EMPTY_DIRECTIVE
|
static java.util.Comparator |
LEXICAL_COMPARATOR
A comparator, used in the sorting algorithm to compare successive rows. |
private int[] |
modelToView
|
private java.awt.event.MouseListener |
mouseListener
|
static int |
NOT_SORTED
Constant indicating that the table is not sorted. |
private java.util.List<TableSorter.Directive> |
sortingColumns
|
private javax.swing.table.JTableHeader |
tableHeader
|
protected javax.swing.table.TableModel |
tableModel
|
private javax.swing.event.TableModelListener |
tableModelListener
|
private TableSorter.Row[] |
viewToModel
|
Fields inherited from class javax.swing.table.AbstractTableModel |
---|
listenerList |
Constructor Summary | |
---|---|
TableSorter()
Constructor. |
|
TableSorter(javax.swing.table.TableModel tableModel)
Constructor, initialized by a TableModel |
|
TableSorter(javax.swing.table.TableModel tableModel,
javax.swing.table.JTableHeader tableHeader)
Constructor |
Method Summary | |
---|---|
private void |
cancelSorting()
|
private void |
clearSortingState()
|
java.lang.Class |
getColumnClass(int column)
|
int |
getColumnCount()
|
java.lang.String |
getColumnName(int column)
|
protected java.util.Comparator |
getComparator(int column)
|
private TableSorter.Directive |
getDirective(int column)
|
protected javax.swing.Icon |
getHeaderRendererIcon(int column,
int size)
|
private int[] |
getModelToView()
|
int |
getRowCount()
|
int |
getSortingStatus(int column)
|
javax.swing.table.JTableHeader |
getTableHeader()
|
javax.swing.table.TableModel |
getTableModel()
Returns the Table Model. |
java.lang.Object |
getValueAt(int row,
int column)
|
private TableSorter.Row[] |
getViewToModel()
|
boolean |
isCellEditable(int row,
int column)
|
boolean |
isSorting()
|
int |
modelIndex(int viewIndex)
|
void |
setColumnComparator(java.lang.Class type,
java.util.Comparator comparator)
|
void |
setSortingStatus(int column,
int status)
|
void |
setTableHeader(javax.swing.table.JTableHeader tableHeader)
Sets the Table Header. |
void |
setTableModel(javax.swing.table.TableModel tableModel)
Sets the Table Model. |
void |
setValueAt(java.lang.Object aValue,
int row,
int column)
|
private void |
sortingStatusChanged()
|
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 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
protected javax.swing.table.TableModel tableModel
public static final int DESCENDING
public static final int NOT_SORTED
public static final int ASCENDING
private static TableSorter.Directive EMPTY_DIRECTIVE
public static final java.util.Comparator COMPARABLE_COMAPRATOR
Object
s.
public static final java.util.Comparator LEXICAL_COMPARATOR
String
s.
private TableSorter.Row[] viewToModel
private int[] modelToView
private javax.swing.table.JTableHeader tableHeader
private java.awt.event.MouseListener mouseListener
private javax.swing.event.TableModelListener tableModelListener
private java.util.Map<java.lang.Class,java.util.Comparator> columnComparators
private java.util.List<TableSorter.Directive> sortingColumns
Constructor Detail |
---|
public TableSorter()
public TableSorter(javax.swing.table.TableModel tableModel)
TableModel
tableModel
- the TableModel
used to initialize the TableSorter
TableModel
public TableSorter(javax.swing.table.TableModel tableModel, javax.swing.table.JTableHeader tableHeader)
tableModel
- tableHeader
- Method Detail |
---|
private void clearSortingState()
public javax.swing.table.TableModel getTableModel()
public void setTableModel(javax.swing.table.TableModel tableModel)
tableModel
- The Table Model to be used.public javax.swing.table.JTableHeader getTableHeader()
public void setTableHeader(javax.swing.table.JTableHeader tableHeader)
tableHeader
- The Table Header to be set.public boolean isSorting()
private TableSorter.Directive getDirective(int column)
public int getSortingStatus(int column)
private void sortingStatusChanged()
public void setSortingStatus(int column, int status)
protected javax.swing.Icon getHeaderRendererIcon(int column, int size)
private void cancelSorting()
public void setColumnComparator(java.lang.Class type, java.util.Comparator comparator)
protected java.util.Comparator getComparator(int column)
private TableSorter.Row[] getViewToModel()
public int modelIndex(int viewIndex)
private int[] getModelToView()
public int getRowCount()
public int getColumnCount()
public java.lang.String getColumnName(int column)
getColumnName
in interface javax.swing.table.TableModel
getColumnName
in class javax.swing.table.AbstractTableModel
public java.lang.Class getColumnClass(int column)
getColumnClass
in interface javax.swing.table.TableModel
getColumnClass
in class javax.swing.table.AbstractTableModel
public boolean isCellEditable(int row, int column)
isCellEditable
in interface javax.swing.table.TableModel
isCellEditable
in class javax.swing.table.AbstractTableModel
public java.lang.Object getValueAt(int row, int column)
public void setValueAt(java.lang.Object aValue, int row, int column)
setValueAt
in interface javax.swing.table.TableModel
setValueAt
in class javax.swing.table.AbstractTableModel
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |