org.apache.jorphan.gui

## Class ObjectTableSorter

- java.lang.Object
- - javax.swing.RowSorter<ObjectTableModel>
  - - org.apache.jorphan.gui.ObjectTableSorter

    public class ObjectTableSorter
    extends RowSorter<ObjectTableModel>

Implementation of a `RowSorter` for `ObjectTableModel`

Since:
  3.2

### Nested Class Summary

Nested Classes
`protected class` `ObjectTableSorter.PreserveLastRowComparator`
`class` `ObjectTableSorter.Row` View row with model mapping.

### Nested classes/interfaces inherited from class javax.swing.RowSorter

`RowSorter.SortKey`

### Constructor Summary

Constructors
Constructor and Description
`ObjectTableSorter(ObjectTableModel model)`

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `allRowsChanged()`
`int` `convertRowIndexToModel(int index)`
`int` `convertRowIndexToView(int index)`
`ObjectTableSorter` `fixLastRow()` Sets `primary comparator` to one that don't sort last row.
`protected Comparator<ObjectTableSorter.Row>` `getComparatorFromSortKey(RowSorter.SortKey sortkey)`
`protected Comparator<?>` `getDefaultComparator(int column)` Builds a default comparator based on model column class.
`Comparator<ObjectTableSorter.Row>` `getFallbackComparator()` Returns Comparator if all sorted columns matches.
`ObjectTableModel` `getModel()`
`int` `getModelRowCount()`
`Comparator<ObjectTableSorter.Row>` `getPrimaryComparator()` Returns Comparator used prior to sorted columns.
`List<? extends RowSorter.SortKey>` `getSortKeys()`
`Comparator<?>` `getValueComparator(int column)` Returns Comparator used on column.
`int` `getViewRowCount()`
`protected void` `invalidate()`
`protected boolean` `isSortable(int column)`
`protected boolean` `isSorted()`
`protected boolean` `isSorted(int column)`
`void` `modelStructureChanged()`
`protected void` `rowsChanged(int firstRow, int endRow, boolean deleted, boolean inserted)`
`void` `rowsDeleted(int firstRow, int endRow)`
`void` `rowsInserted(int firstRow, int endRow)`
`void` `rowsUpdated(int firstRow, int endRow)`
`void` `rowsUpdated(int firstRow, int endRow, int column)`
`ObjectTableSorter` `setFallbackComparator(Comparator<ObjectTableSorter.Row> comparator)` Sets a fallback comparator (defaults to model index comparison) if none `primary`, neither `column value comparators` can make differences between two rows.
`ObjectTableSorter` `setPrimaryComparator(Comparator<ObjectTableSorter.Row> primaryComparator)` Comparator used prior to sorted columns.
`void` `setSortKey(RowSorter.SortKey sortkey)`
`void` `setSortKeys(List<? extends RowSorter.SortKey> keys)`
`ObjectTableSorter` `setValueComparator(int column, Comparator<?> comparator)` Assign comparator to given column, if `null` a getDefaultComparator(int) default one is used instead.
`protected void` `sort()` Sort table
`void` `toggleSortOrder(int column)`
`protected void` `updateModelToView()` fill in modelToView list with index of view
`protected void` `validate()`

### 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`

### Constructor Detail

#### ObjectTableSorter

    public ObjectTableSorter(ObjectTableModel model)

### Method Detail

#### getPrimaryComparator

    public Comparator<ObjectTableSorter.Row> getPrimaryComparator()

Returns Comparator used prior to sorted columns.

Returns:
  Comparator used prior to sorted columns.

#### getValueComparator

    public Comparator<?> getValueComparator(int column)

Returns Comparator used on column.

Parameters:
  `column` - to be compared
Returns:
  Comparator used on column.

#### getFallbackComparator

    public Comparator<ObjectTableSorter.Row> getFallbackComparator()

Returns Comparator if all sorted columns matches. Defaults to model index comparison.

Returns:
  Comparator if all sorted columns matches. Defaults to model index comparison.

#### setPrimaryComparator

    public ObjectTableSorter setPrimaryComparator(Comparator<ObjectTableSorter.Row> primaryComparator)

Comparator used prior to sorted columns.

Parameters:
  `primaryComparator` - `Comparator` to be used first
Returns:
  `this`

#### fixLastRow

    public ObjectTableSorter fixLastRow()

Sets `primary comparator` to one that don't sort last row.

Returns:
  `this`

#### setValueComparator

    public ObjectTableSorter setValueComparator(int column,
                                                Comparator<?> comparator)

Assign comparator to given column, if `null` a getDefaultComparator(int) default one is used instead.

Parameters:
  `column` - Model column index.
  `comparator` - Column value comparator.
Returns:
  `this`

#### getDefaultComparator

    protected Comparator<?> getDefaultComparator(int column)

Builds a default comparator based on model column class. `Collator.getInstance()` for `String`, `natural order` for `Comparable`, no sort support for others.

Parameters:
  `column` - Model column index.
Returns:
  default `Comparator`

#### setFallbackComparator

    public ObjectTableSorter setFallbackComparator(Comparator<ObjectTableSorter.Row> comparator)

Sets a fallback comparator (defaults to model index comparison) if none `primary`, neither `column value comparators` can make differences between two rows.

Parameters:
  `comparator` - to be used, when all other `Comparator`s can't see a difference
Returns:
  `this`

#### getModel

    public ObjectTableModel getModel()

Specified by:
  `getModel` in class `RowSorter<ObjectTableModel>`

#### toggleSortOrder

    public void toggleSortOrder(int column)

Specified by:
  `toggleSortOrder` in class `RowSorter<ObjectTableModel>`

#### convertRowIndexToModel

    public int convertRowIndexToModel(int index)

Specified by:
  `convertRowIndexToModel` in class `RowSorter<ObjectTableModel>`

#### convertRowIndexToView

    public int convertRowIndexToView(int index)

Specified by:
  `convertRowIndexToView` in class `RowSorter<ObjectTableModel>`

#### setSortKeys

    public void setSortKeys(List<? extends RowSorter.SortKey> keys)

Specified by:
  `setSortKeys` in class `RowSorter<ObjectTableModel>`

#### setSortKey

    public void setSortKey(RowSorter.SortKey sortkey)

#### getSortKeys

    public List<? extends RowSorter.SortKey> getSortKeys()

Specified by:
  `getSortKeys` in class `RowSorter<ObjectTableModel>`

#### getViewRowCount

    public int getViewRowCount()

Specified by:
  `getViewRowCount` in class `RowSorter<ObjectTableModel>`

#### getModelRowCount

    public int getModelRowCount()

Specified by:
  `getModelRowCount` in class `RowSorter<ObjectTableModel>`

#### modelStructureChanged

    public void modelStructureChanged()

Specified by:
  `modelStructureChanged` in class `RowSorter<ObjectTableModel>`

#### allRowsChanged

    public void allRowsChanged()

Specified by:
  `allRowsChanged` in class `RowSorter<ObjectTableModel>`

#### rowsInserted

    public void rowsInserted(int firstRow,
                             int endRow)

Specified by:
  `rowsInserted` in class `RowSorter<ObjectTableModel>`

#### rowsDeleted

    public void rowsDeleted(int firstRow,
                            int endRow)

Specified by:
  `rowsDeleted` in class `RowSorter<ObjectTableModel>`

#### rowsUpdated

    public void rowsUpdated(int firstRow,
                            int endRow)

Specified by:
  `rowsUpdated` in class `RowSorter<ObjectTableModel>`

#### rowsChanged

    protected void rowsChanged(int firstRow,
                               int endRow,
                               boolean deleted,
                               boolean inserted)

#### rowsUpdated

    public void rowsUpdated(int firstRow,
                            int endRow,
                            int column)

Specified by:
  `rowsUpdated` in class `RowSorter<ObjectTableModel>`

#### isSortable

    protected boolean isSortable(int column)

#### isSorted

    protected boolean isSorted(int column)

#### isSorted

    protected boolean isSorted()

#### invalidate

    protected void invalidate()

#### validate

    protected void validate()

#### getComparatorFromSortKey

    protected Comparator<ObjectTableSorter.Row> getComparatorFromSortKey(RowSorter.SortKey sortkey)

#### sort

    protected void sort()

Sort table

#### updateModelToView

    protected void updateModelToView()

fill in modelToView list with index of view