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: 14604 $
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