Class XTableColumnModel

java.lang.Object
javax.swing.table.DefaultTableColumnModel
megamek.client.ui.models.XTableColumnModel
All Implemented Interfaces:
PropertyChangeListener, Serializable, EventListener, ListSelectionListener, TableColumnModel

public class XTableColumnModel extends DefaultTableColumnModel
XTableColumnModel extends the DefaultTableColumnModel . It provides a comfortable way to hide/show columns. Columns keep their positions when hidden and shown again.

In order to work with JTable it cannot add any events to TableColumnModelListener. Therefore, hiding a column will result in columnRemoved event and showing it again will notify listeners of a columnAdded, and possibly a columnMoved event. For the same reason the following methods still deal with visible columns only: getColumnCount(), getColumns(), getColumnIndex(), getColumn() There are overloaded versions of these methods that take a parameter onlyVisible which lets you specify whether you want invisible columns taken into account.

See Also:
  • Field Details

    • allTableColumns

      protected Vector<TableColumn> allTableColumns
      Array of TableColumn objects in this model. Holds all column objects, regardless of their visibility
  • Constructor Details

    • XTableColumnModel

      public XTableColumnModel()
      Creates an extended table column model.
  • Method Details

    • getAllTableColumns

      public Vector<TableColumn> getAllTableColumns()
    • setColumnVisible

      public void setColumnVisible(TableColumn column, boolean visible)
      Sets the visibility of the specified TableColumn. The call is ignored if the TableColumn is not found in this column model or its visibility status did not change
      Parameters:
      column - the column to show/hide
      visible - its new visibility status
    • setAllColumnsVisible

      public void setAllColumnsVisible()
      Makes all columns in this model visible
    • getColumnByModelIndex

      public TableColumn getColumnByModelIndex(int modelColumnIndex)
      Maps the index of the column in the table model at modelColumnIndex to the TableColumn object. There may be multiple TableColumn objects showing the same model column, though this is uncommon. This method will always return the first visible or else the first invisible column with the specified index.
      Parameters:
      modelColumnIndex - index of column in table model
      Returns:
      table column object or null if no such column in this column model
    • isColumnVisible

      public boolean isColumnVisible(TableColumn aColumn)
      Checks whether the specified column is currently visible.
      Parameters:
      aColumn - column to check
      Returns:
      visibility of specified column (false if there is no such column at all. [It's not visible, right?])
    • addColumn

      public void addColumn(TableColumn column)
      Append column to the right of existing columns. Posts columnAdded event.
      Specified by:
      addColumn in interface TableColumnModel
      Overrides:
      addColumn in class DefaultTableColumnModel
      Parameters:
      column - The column to be added
      Throws:
      IllegalArgumentException - if column is null
      See Also:
    • removeColumn

      public void removeColumn(TableColumn column)
      Removes column from this column model. Posts columnRemoved event. Will do nothing if the column is not in this model.
      Specified by:
      removeColumn in interface TableColumnModel
      Overrides:
      removeColumn in class DefaultTableColumnModel
      Parameters:
      column - the column to be added
      See Also:
    • moveColumn

      public void moveColumn(int oldIndex, int newIndex)
      Moves the column from oldIndex to newIndex. Posts columnMoved event. Will not move any columns if oldIndex equals newIndex.
      Specified by:
      moveColumn in interface TableColumnModel
      Overrides:
      moveColumn in class DefaultTableColumnModel
      Parameters:
      oldIndex - index of column to be moved
      newIndex - new index of the column
      Throws:
      IllegalArgumentException - if either oldIndex or newIndex are not in [0, getColumnCount() - 1]
    • getColumnCount

      public int getColumnCount(boolean onlyVisible)
      Returns the total number of columns in this model.
      Parameters:
      onlyVisible - if set only visible columns will be counted
      Returns:
      the number of columns in the tableColumns array
      See Also:
    • getColumns

      @Deprecated(since="0.51.0", forRemoval=true) public Enumeration<?> getColumns(boolean onlyVisible)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Returns an Enumeration of all the columns in the model.
      Parameters:
      onlyVisible - if set all invisible columns will be missing from the enumeration.
      Returns:
      an Enumeration of the columns in the model
    • getColumnIndex

      @Deprecated(since="0.51.0", forRemoval=true) public int getColumnIndex(Object identifier, boolean onlyVisible)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Returns the position of the first column whose identifier equals identifier. Position is the index in all visible columns if onlyVisible is true or else the index in all columns.
      Parameters:
      identifier - the identifier object to search for
      onlyVisible - if set searches only visible columns
      Returns:
      the index of the first column whose identifier equals identifier
      Throws:
      IllegalArgumentException - if identifier is null, or if no TableColumn has this identifier
      See Also:
    • getColumn

      public TableColumn getColumn(int columnIndex, boolean onlyVisible)
      Returns the TableColumn object for the column at columnIndex.
      Parameters:
      columnIndex - the index of the column desired
      onlyVisible - if set columnIndex is meant to be relative to all visible columns only else it is the index in all columns
      Returns:
      the TableColumn object for the column at columnIndex