Package jmri.util.swing
Class XTableColumnModel
- java.lang.Object
-
- javax.swing.table.DefaultTableColumnModel
-
- jmri.util.swing.XTableColumnModel
-
- All Implemented Interfaces:
java.beans.PropertyChangeListener
,java.io.Serializable
,java.util.EventListener
,javax.swing.event.ListSelectionListener
,javax.swing.table.TableColumnModel
public class XTableColumnModel extends javax.swing.table.DefaultTableColumnModel
Taken from http://www.stephenkelvin.de/XTableColumnModel/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 incolumnRemoved
event and showing it again will notify listeners of acolumnAdded
, and possibly acolumnMoved
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 parameteronlyVisible
which let's you specify whether you want invisible columns taken into account.- See Also:
DefaultTableColumnModel
, Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected java.util.Vector<javax.swing.table.TableColumn>
allTableColumns
Array of TableColumn objects in this model.
-
Constructor Summary
Constructors Constructor Description XTableColumnModel()
Creates an extended table column model.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addColumn(javax.swing.table.TableColumn column)
Appendcolumn
to the right of existing columns.javax.swing.table.TableColumn
getColumn(int columnIndex, boolean onlyVisible)
Returns theTableColumn
object for the column atcolumnIndex
.javax.swing.table.TableColumn
getColumnByModelIndex(int modelColumnIndex)
Maps the index of the column in the table model atmodelColumnIndex
to the TableColumn object.int
getColumnCount(boolean onlyVisible)
Returns the total number of columns in this model.int
getColumnIndex(java.lang.Object identifier, boolean onlyVisible)
Returns the position of the first column whose identifier equalsidentifier
.java.util.Enumeration<javax.swing.table.TableColumn>
getColumns(boolean onlyVisible)
Returns anEnumeration
of all the columns in the model.boolean
isColumnVisible(javax.swing.table.TableColumn aColumn)
Checks whether the specified column is currently visible.void
moveColumn(int columnIndex, int newIndex)
Moves the column fromcolumnIndex
tonewIndex
.void
moveColumn(int columnIndex, int newIndex, boolean onlyVisible)
Moves the column fromcolumnIndex
tonewIndex
.void
removeColumn(javax.swing.table.TableColumn column)
Removescolumn
from this column model.void
setAllColumnsVisible()
Makes all columns in this model visiblevoid
setColumnVisible(javax.swing.table.TableColumn column, boolean visible)
Sets the visibility of the specified TableColumn.-
Methods inherited from class javax.swing.table.DefaultTableColumnModel
addColumnModelListener, createSelectionModel, fireColumnAdded, fireColumnMarginChanged, fireColumnMoved, fireColumnRemoved, fireColumnSelectionChanged, getColumn, getColumnCount, getColumnIndex, getColumnIndexAtX, getColumnMargin, getColumnModelListeners, getColumns, getColumnSelectionAllowed, getListeners, getSelectedColumnCount, getSelectedColumns, getSelectionModel, getTotalColumnWidth, propertyChange, recalcWidthCache, removeColumnModelListener, setColumnMargin, setColumnSelectionAllowed, setSelectionModel, valueChanged
-
-
-
-
Field Detail
-
allTableColumns
protected java.util.Vector<javax.swing.table.TableColumn> allTableColumns
Array of TableColumn objects in this model. Holds all column objects, regardless of their visibility
-
-
Constructor Detail
-
XTableColumnModel
public XTableColumnModel()
Creates an extended table column model.
-
-
Method Detail
-
setColumnVisible
public void setColumnVisible(javax.swing.table.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/hidevisible
- its new visibility status
-
setAllColumnsVisible
public void setAllColumnsVisible()
Makes all columns in this model visible
-
getColumnByModelIndex
public javax.swing.table.TableColumn getColumnByModelIndex(int modelColumnIndex)
Maps the index of the column in the table model atmodelColumnIndex
to the TableColumn object. There may be multiple TableColumn objects showing the same model column, though this is uncommon.- Parameters:
modelColumnIndex
- index of column in table model- Returns:
- the first column, visible or invisible, with the specified index or null if no such column
-
isColumnVisible
public boolean isColumnVisible(javax.swing.table.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(javax.swing.table.TableColumn column)
Appendcolumn
to the right of existing columns. PostscolumnAdded
event.- Specified by:
addColumn
in interfacejavax.swing.table.TableColumnModel
- Overrides:
addColumn
in classjavax.swing.table.DefaultTableColumnModel
- Parameters:
column
- The column to be added- Throws:
java.lang.IllegalArgumentException
- ifcolumn
isnull
- See Also:
removeColumn(javax.swing.table.TableColumn)
-
removeColumn
public void removeColumn(javax.swing.table.TableColumn column)
Removescolumn
from this column model. PostscolumnRemoved
event. Will do nothing if the column is not in this model.- Specified by:
removeColumn
in interfacejavax.swing.table.TableColumnModel
- Overrides:
removeColumn
in classjavax.swing.table.DefaultTableColumnModel
- Parameters:
column
- the column to be added- See Also:
addColumn(javax.swing.table.TableColumn)
-
moveColumn
public void moveColumn(int columnIndex, int newIndex)
Moves the column fromcolumnIndex
tonewIndex
. PostscolumnMoved
event. Will not move any columns ifcolumnIndex
equalsnewIndex
. This method also posts acolumnMoved
event to its listeners.- Specified by:
moveColumn
in interfacejavax.swing.table.TableColumnModel
- Overrides:
moveColumn
in classjavax.swing.table.DefaultTableColumnModel
- Parameters:
columnIndex
- index of column to be movednewIndex
- new index of the column- Throws:
java.lang.IllegalArgumentException
- if eitheroldIndex
ornewIndex
are not in [0, getColumnCount() - 1]
-
moveColumn
public void moveColumn(int columnIndex, int newIndex, boolean onlyVisible)
Moves the column fromcolumnIndex
tonewIndex
. PostscolumnMoved
event. Will not move any columns ifcolumnIndex
equalsnewIndex
. This method also posts acolumnMoved
event to its listeners if a visible column moves.- Parameters:
columnIndex
- index of column to be movednewIndex
- new index of the columnonlyVisible
- true if this should only move a visible column; false to move any column- Throws:
java.lang.IllegalArgumentException
- if eitheroldIndex
ornewIndex
are not in [0, getColumnCount(onlyVisible) - 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(boolean)
-
getColumns
public java.util.Enumeration<javax.swing.table.TableColumn> getColumns(boolean onlyVisible)
Returns anEnumeration
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
public int getColumnIndex(java.lang.Object identifier, boolean onlyVisible)
Returns the position of the first column whose identifier equalsidentifier
. Position is the index in all visible columns ifonlyVisible
is true or else the index in all columns.- Parameters:
identifier
- the identifier object to search foronlyVisible
- if set searches only visible columns- Returns:
- the index of the first column whose identifier equals
identifier
- Throws:
java.lang.IllegalArgumentException
- ifidentifier
isnull
, or if noTableColumn
has thisidentifier
- See Also:
getColumn(int, boolean)
-
getColumn
public javax.swing.table.TableColumn getColumn(int columnIndex, boolean onlyVisible)
Returns theTableColumn
object for the column atcolumnIndex
.- Parameters:
columnIndex
- the index of the column desiredonlyVisible
- 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 atcolumnIndex
-
-