qflib 0.98.1

de.qfs.lib.gui
Class SortedTableHelper

java.lang.Object
  |
  +--de.qfs.lib.gui.SortedTableHelper
All Implemented Interfaces:
java.util.EventListener, TableModelFilterListener, TableModelSorterListener

public class SortedTableHelper
extends java.lang.Object
implements TableModelFilterListener, TableModelSorterListener

This little helper class is very useful in creating a sorted JTable. It creates and connects all the necessary parts, while still leaving everything configurable.

The fastest way to get a standard sorted table is

 JTable table;
 SortedTableHelper helper = new SortedTableHelper (table);
 helper.prepareTable();
 
This will create a table with a FilteredAndSortedTableModel using a DefaultTableModelSorter and a SortedTableHeaderCellRenderer using the default arrow icons.

Version:
$Revision: 1.15 $
Author:
Gregor Schmid

Constructor Summary
SortedTableHelper(javax.swing.JTable table)
          Create a new SortedTableHelper.
SortedTableHelper(javax.swing.JTable table, FilteredAndSortedTableModel sortedModel)
          Create a new SortedTableHelper from a FilteredAndSortedTableModel.
SortedTableHelper(javax.swing.JTable table, TableModelFilter filter, TableModelSorter sorter)
          Create a new SortedTableHelper.
 
Method Summary
 void filterChanged(TableModelFilterEvent e)
          Notify the listener of a change in the TableModelFilter.
 javax.swing.table.TableCellRenderer getHeaderCellRenderer()
          Get the renderer for the TableHeader.
 FilteredAndSortedTableModel getSortedTableModel()
          Get the FilteredAndSortedTableModel used to sort the table.
 javax.swing.table.TableModel getTableModel()
          Get the original TableModel of the table.
 TableModelFilter getTableModelFilter()
          Get the TableModelFilter for the table.
 TableModelSorter getTableModelSorter()
          Get the TableModelSorter implementing the sort order.
 void prepareTable()
          Prepare the table for sorting.
 void saveSelection(boolean save)
          Set whether the FilteredAndSortedTableModel will save the selected rows of the table when sorting, filtering or updating.
 void setHeaderCellRenderer(javax.swing.table.TableCellRenderer renderer)
          Set the renderer for the TableHeader.
 void setSortedTableModel(FilteredAndSortedTableModel model)
          Call this method instead of JTable.setModel to change the model of the table.
 void setTableModel(javax.swing.table.TableModel model)
          Call this method instead of JTable.setModel to change the model of the table.
 void setTableModelFilter(TableModelFilter filter)
          Set the TableModelFilter for the table.
 void setTableModelSorter(TableModelSorter sorter)
          Set the TableModelSorter implementing the sort order.
 void sortOrderChanged(TableModelSorterEvent e)
          Notify the listener of a change in the sort order.
 void updateUI()
          This method should be called if you change the UI of the table, even if you use SwingUtilities.updateComponentTreeUI, since otherwise the header renderer of the table doesn't get updated.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SortedTableHelper

public SortedTableHelper(javax.swing.JTable table)
Create a new SortedTableHelper. The helper will sort the table using a DefaultTableModelSorter, no filter and a standard SortedTableHeaderCellRenderer.
Parameters:
table - The table that is to be sorted.

SortedTableHelper

public SortedTableHelper(javax.swing.JTable table,
                         TableModelFilter filter,
                         TableModelSorter sorter)
Create a new SortedTableHelper. The helper will sort the table using the given sorter and filter and a standard SortedTableHeaderCellRenderer.
Parameters:
table - The table that is to be sorted.
filter - The filter for the table. If null, the table will not be filtered.
sorter - The sorter for the table. If null, the table will not be sorted.

SortedTableHelper

public SortedTableHelper(javax.swing.JTable table,
                         FilteredAndSortedTableModel sortedModel)
Create a new SortedTableHelper from a FilteredAndSortedTableModel.
Parameters:
table - The table that is to be sorted.
sortedModel - The FilteredAndSortedTableModel to use.
Method Detail

prepareTable

public void prepareTable()
Prepare the table for sorting. This sets up everything and installs a MouseListener on the Table's header for sorting.

saveSelection

public void saveSelection(boolean save)
Set whether the FilteredAndSortedTableModel will save the selected rows of the table when sorting, filtering or updating.

This method is automtically called from prepareTable, but it must be called again whenever the row selection model of the table is changed.

Parameters:
save - True to save, false to ignore the selection.

updateUI

public void updateUI()
This method should be called if you change the UI of the table, even if you use SwingUtilities.updateComponentTreeUI, since otherwise the header renderer of the table doesn't get updated.
Since:
0.97.1

getTableModel

public final javax.swing.table.TableModel getTableModel()
Get the original TableModel of the table.
Returns:
The original TableModel.

setTableModel

public void setTableModel(javax.swing.table.TableModel model)
Call this method instead of JTable.setModel to change the model of the table. It will take care of updating all other components necessary for sorting.
Parameters:
model - The new TableModel.

getSortedTableModel

public final FilteredAndSortedTableModel getSortedTableModel()
Get the FilteredAndSortedTableModel used to sort the table.
Returns:
The TableModel used for filtering and sorting.

setSortedTableModel

public void setSortedTableModel(FilteredAndSortedTableModel model)
Call this method instead of JTable.setModel to change the model of the table. It will take care of updating all other components necessary for sorting.
Parameters:
model - The new TableModel.

getTableModelSorter

public final TableModelSorter getTableModelSorter()
Get the TableModelSorter implementing the sort order.
Returns:
The table's sorter.

setTableModelSorter

public final void setTableModelSorter(TableModelSorter sorter)
Set the TableModelSorter implementing the sort order. Will cause a full redraw of the table.
Parameters:
sorter - The sorter to set.

getTableModelFilter

public final TableModelFilter getTableModelFilter()
Get the TableModelFilter for the table.
Returns:
The table's filter.

setTableModelFilter

public final void setTableModelFilter(TableModelFilter filter)
Set the TableModelFilter for the table. Will cause a full redraw of the table.
Parameters:
filter - The filter to set.

getHeaderCellRenderer

public final javax.swing.table.TableCellRenderer getHeaderCellRenderer()
Get the renderer for the TableHeader.
Returns:
The table's header renderer.

setHeaderCellRenderer

public final void setHeaderCellRenderer(javax.swing.table.TableCellRenderer renderer)
Set the renderer for the TableHeader.
Parameters:
renderer - The header renderer to set.

filterChanged

public void filterChanged(TableModelFilterEvent e)
Notify the listener of a change in the TableModelFilter.
Specified by:
filterChanged in interface TableModelFilterListener
Parameters:
event - Details about the change.
Since:
0.98.0

sortOrderChanged

public void sortOrderChanged(TableModelSorterEvent e)
Notify the listener of a change in the sort order.
Specified by:
sortOrderChanged in interface TableModelSorterListener
Parameters:
event - Details about the change.
Since:
0.98.0

qflib 0.98.1