Package weka.gui

# Class SortedTableModel

java.lang.Object
javax.swing.table.AbstractTableModel
weka.gui.SortedTableModel

All Implemented Interfaces:
  `Serializable`, `EventListener`, `TableModelListener`, `TableModel`

Direct Known Subclasses:
  `ArffSortedTableModel`

public class SortedTableModel extends AbstractTableModel implements TableModelListener
Represents a TableModel with sorting functionality.

Version:
  $Revision: 7059 $
Author:
  FracPete (fracpete at waikato dot ac dot nz)
See Also:
  - Serialized Form

## Nested Class Summary

Nested Classes
Modifier and Type
Class
Description
`static class`
`SortedTableModel.SortContainer`
Helper class for sorting the columns.

## Constructor Summary

Constructors
Constructor
Description
`SortedTableModel()`
initializes with no model
`SortedTableModel(TableModel model)`
initializes with the given model

## Method Summary

Modifier and Type
Method
Description
`void`
`addMouseListenerToHeader(JTable table)`
Adds a mouselistener to the header: left-click on the header sorts in ascending manner, using shift-left-click in descending manner.
`int`
`getActualRow(int visibleRow)`
Returns the actual underlying row the given visible one represents.
`Class`
`getColumnClass(int columnIndex)`
Returns the most specific superclass for all the cell values in the column.
`int`
`getColumnCount()`
Returns the number of columns in the model
`String`
`getColumnName(int columnIndex)`
Returns the name of the column at columnIndex
`TableModel`
`getModel()`
returns the current model, can be null
`int`
`getRowCount()`
Returns the number of rows in the model.
`Object`
`getValueAt(int rowIndex, int columnIndex)`
Returns the value for the cell at columnIndex and rowIndex.
`boolean`
`isCellEditable(int rowIndex, int columnIndex)`
Returns true if the cell at rowIndex and columnIndex is editable.
`boolean`
`isSorted()`
returns whether the table was sorted
`void`
`setModel(TableModel value)`
sets the model to use
`void`
`setValueAt(Object aValue, int rowIndex, int columnIndex)`
Sets the value in the cell at columnIndex and rowIndex to aValue.
`void`
`sort(int columnIndex)`
sorts the table over the given column (ascending)
`void`
`sort(int columnIndex, boolean ascending)`
sorts the table over the given column, either ascending or descending
`void`
`tableChanged(TableModelEvent e)`
This fine grain notification tells listeners the exact range of cells, rows, or columns that changed.

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

`equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### SortedTableModel

public SortedTableModel()
initializes with no model

### SortedTableModel

public SortedTableModel(TableModel model)
initializes with the given model

Parameters:
  `model` - the model to initialize the sorted model with

## Method Details

### setModel

public void setModel(TableModel value)
sets the model to use

Parameters:
  `value` - the model to use

### getModel

public TableModel getModel()
returns the current model, can be null

Returns:
  the current model

### isSorted

public boolean isSorted()
returns whether the table was sorted

Returns:
  true if the table was sorted

### getActualRow

public int getActualRow(int visibleRow)
Returns the actual underlying row the given visible one represents. Useful for retrieving "non-visual" data that is also stored in a TableModel.

Parameters:
  `visibleRow` - the displayed row to retrieve the original row for
Returns:
  the original row

### getColumnClass

public Class getColumnClass(int columnIndex)
Returns the most specific superclass for all the cell values in the column.

Specified by:
  `getColumnClass` in interface `TableModel`
Overrides:
  `getColumnClass` in class `AbstractTableModel`
Parameters:
  `columnIndex` - the index of the column
Returns:
  the class of the specified column

### getColumnCount

public int getColumnCount()
Returns the number of columns in the model

Specified by:
  `getColumnCount` in interface `TableModel`
Returns:
  the number of columns in the model

### getColumnName

public String getColumnName(int columnIndex)
Returns the name of the column at columnIndex

Specified by:
  `getColumnName` in interface `TableModel`
Overrides:
  `getColumnName` in class `AbstractTableModel`
Parameters:
  `columnIndex` - the column to retrieve the name for
Returns:
  the name of the specified column

### getRowCount

public int getRowCount()
Returns the number of rows in the model.

Specified by:
  `getRowCount` in interface `TableModel`
Returns:
  the number of rows in the model

### getValueAt

public Object getValueAt(int rowIndex, int columnIndex)
Returns the value for the cell at columnIndex and rowIndex.

Specified by:
  `getValueAt` in interface `TableModel`
Parameters:
  `rowIndex` - the row
  `columnIndex` - the column
Returns:
  the value of the sepcified cell

### isCellEditable

public boolean isCellEditable(int rowIndex, int columnIndex)
Returns true if the cell at rowIndex and columnIndex is editable.

Specified by:
  `isCellEditable` in interface `TableModel`
Overrides:
  `isCellEditable` in class `AbstractTableModel`
Parameters:
  `rowIndex` - the row
  `columnIndex` - the column
Returns:
  true if the cell is editable

### setValueAt

public void setValueAt(Object aValue, int rowIndex, int columnIndex)
Sets the value in the cell at columnIndex and rowIndex to aValue.

Specified by:
  `setValueAt` in interface `TableModel`
Overrides:
  `setValueAt` in class `AbstractTableModel`
Parameters:
  `aValue` - the new value of the cell
  `rowIndex` - the row
  `columnIndex` - the column

### sort

public void sort(int columnIndex)
sorts the table over the given column (ascending)

Parameters:
  `columnIndex` - the column to sort over

### sort

public void sort(int columnIndex, boolean ascending)
sorts the table over the given column, either ascending or descending

Parameters:
  `columnIndex` - the column to sort over
  `ascending` - ascending if true, otherwise descending

### tableChanged

public void tableChanged(TableModelEvent e)
This fine grain notification tells listeners the exact range of cells, rows, or columns that changed.

Specified by:
  `tableChanged` in interface `TableModelListener`
Parameters:
  `e` - the event

### addMouseListenerToHeader

public void addMouseListenerToHeader(JTable table)
Adds a mouselistener to the header: left-click on the header sorts in ascending manner, using shift-left-click in descending manner.

Parameters:
  `table` - the table to add the listener to