org.jdesktop.swingx.table
Class DefaultTableColumnModelExt

java.lang.Object
  extended by javax.swing.table.DefaultTableColumnModel
      extended by org.jdesktop.swingx.table.DefaultTableColumnModelExt
All Implemented Interfaces:
PropertyChangeListener, Serializable, EventListener, ListSelectionListener, TableColumnModel, TableColumnModelExt

public class DefaultTableColumnModelExt
extends DefaultTableColumnModel
implements TableColumnModelExt

A default implementation of TableColumnModelExt.

TODO: explain sub-optimal notification on showing/hiding columns. (hot fixed issues #156, #157. To really do it need enhanced TableColumnModelEvent and -Listeners that are aware of the event.)

See Also:
Serialized Form

Field Summary
 
Fields inherited from class javax.swing.table.DefaultTableColumnModel
changeEvent, columnMargin, columnSelectionAllowed, listenerList, selectionModel, tableColumns, totalColumnWidth
 
Constructor Summary
DefaultTableColumnModelExt()
          Creates a an empty DefaultTableColumnModelExt.
 
Method Summary
 void addColumn(TableColumn aColumn)
          Appends aColumn to the end of the tableColumns array.
 void addColumnModelListener(TableColumnModelListener x)
          Adds a listener for table column model events.
protected  void fireColumnPropertyChange(PropertyChangeEvent evt)
          Notifies TableColumnModelExtListeners about property changes of contained columns.
 int getColumnCount(boolean includeHidden)
          Returns the number of contained columns.
 TableColumnExt getColumnExt(int columnIndex)
          Returns the TableColumnExt at view position columnIndex.
 TableColumnExt getColumnExt(Object identifier)
          Returns the first TableColumnExt with the given identifier.
 List<TableColumn> getColumns(boolean includeHidden)
          Returns a List of contained TableColumns.
protected  EventListenerList getEventListenerList()
          Exposed for testing only - don't use! Will be removed again!
 TableColumnModelExtListener[] getTableColumnModelExtListeners()
           
 boolean isAddedFromInvisibleEvent(int newIndex)
          hot fix for #157: listeners that are aware of the possible existence of invisible columns should check if the received columnAdded originated from moving a column from invisible to visible.
 boolean isRemovedToInvisibleEvent(int oldIndex)
          hot fix for #157: listeners that are aware of the possible existence of invisible columns should check if the received columnRemoved originated from moving a column from visible to invisible.
 void moveColumn(int columnIndex, int newIndex)
          Moves the column and heading at columnIndex to newIndex.
protected  void moveToInvisible(TableColumnExt col)
          Update internal state after the visibility of the column was changed to invisible.
protected  void moveToVisible(TableColumnExt col)
          Update internal state after the visibility of the column was changed to visible.
 void propertyChange(PropertyChangeEvent evt)
          Property Change Listener change method.
 void removeColumn(TableColumn column)
          Deletes the column from the tableColumns array.
 void removeColumnModelListener(TableColumnModelListener x)
          Removes a listener for table column model events.
 
Methods inherited from class javax.swing.table.DefaultTableColumnModel
createSelectionModel, fireColumnAdded, fireColumnMarginChanged, fireColumnMoved, fireColumnRemoved, fireColumnSelectionChanged, getColumn, getColumnCount, getColumnIndex, getColumnIndexAtX, getColumnMargin, getColumnModelListeners, getColumns, getColumnSelectionAllowed, getListeners, getSelectedColumnCount, getSelectedColumns, getSelectionModel, getTotalColumnWidth, recalcWidthCache, setColumnMargin, setColumnSelectionAllowed, setSelectionModel, valueChanged
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface javax.swing.table.TableColumnModel
getColumn, getColumnCount, getColumnIndex, getColumnIndexAtX, getColumnMargin, getColumns, getColumnSelectionAllowed, getSelectedColumnCount, getSelectedColumns, getSelectionModel, getTotalColumnWidth, setColumnMargin, setColumnSelectionAllowed, setSelectionModel
 

Constructor Detail

DefaultTableColumnModelExt

public DefaultTableColumnModelExt()
Creates a an empty DefaultTableColumnModelExt.

Method Detail

getColumns

public List<TableColumn> getColumns(boolean includeHidden)
Returns a List of contained TableColumns. Includes or excludes invisible columns, depending on whether the includeHidden is true or false, respectively. If false, an Iterator over the List is equivalent to the Enumeration returned by getColumns().

NOTE: the order of columns in the List depends on whether or not the invisible columns are included, in the former case it's the insertion order in the latter it's the current order of the visible columns.

Specified by:
getColumns in interface TableColumnModelExt
Parameters:
includeHidden - a boolean to indicate whether invisible columns should be included
Returns:
a List of contained columns.

getColumnCount

public int getColumnCount(boolean includeHidden)
Returns the number of contained columns. The count includes or excludes invisible columns, depending on whether the includeHidden is true or false, respectively. If false, this method returns the same count as getColumnCount().

Specified by:
getColumnCount in interface TableColumnModelExt
Parameters:
includeHidden - a boolean to indicate whether invisible columns should be included
Returns:
the number of contained columns, including or excluding the invisible as specified.

getColumnExt

public TableColumnExt getColumnExt(Object identifier)
Returns the first TableColumnExt with the given identifier. The return value is null if there is no contained column with identifier or if the column with identifier is not of type TableColumnExt. The returned column may be visible or hidden.

Specified by:
getColumnExt in interface TableColumnModelExt
Parameters:
identifier - the object used as column identifier
Returns:
first TableColumnExt with the given identifier or null if none is found

getColumnExt

public TableColumnExt getColumnExt(int columnIndex)
Returns the TableColumnExt at view position columnIndex. The return value is null, if the column at position columnIndex is not of type TableColumnExt. The returned column is visible.

Specified by:
getColumnExt in interface TableColumnModelExt
Parameters:
columnIndex - the index of the column desired
Returns:
the TableColumnExt object that matches the column index

isRemovedToInvisibleEvent

public boolean isRemovedToInvisibleEvent(int oldIndex)
hot fix for #157: listeners that are aware of the possible existence of invisible columns should check if the received columnRemoved originated from moving a column from visible to invisible.

Parameters:
oldIndex - the fromIndex of the columnEvent
Returns:
true if the column was moved to invisible

isAddedFromInvisibleEvent

public boolean isAddedFromInvisibleEvent(int newIndex)
hot fix for #157: listeners that are aware of the possible existence of invisible columns should check if the received columnAdded originated from moving a column from invisible to visible.

Parameters:
newIndex - the toIndex of the columnEvent
Returns:
true if the column was moved to visible

removeColumn

public void removeColumn(TableColumn column)
Deletes the column from the tableColumns array. This method will do nothing if column is not in the table's columns list. tile is called to resize both the header and table views. This method also posts a columnRemoved event to its listeners.

Overridden to update internals related to column visibility.

Specified by:
removeColumn in interface TableColumnModel
Overrides:
removeColumn in class DefaultTableColumnModel
Parameters:
column - the TableColumn to be removed
See Also:
DefaultTableColumnModel.addColumn(javax.swing.table.TableColumn)

addColumn

public void addColumn(TableColumn aColumn)
Appends aColumn to the end of the tableColumns array. This method also posts the columnAdded event to its listeners.

Overridden to update internals related to column visibility.

Specified by:
addColumn in interface TableColumnModel
Overrides:
addColumn in class DefaultTableColumnModel
Parameters:
aColumn - the TableColumn to be added
See Also:
DefaultTableColumnModel.removeColumn(javax.swing.table.TableColumn)

moveColumn

public void moveColumn(int columnIndex,
                       int newIndex)
Moves the column and heading at columnIndex to newIndex. The old column at columnIndex will now be found at newIndex. The column that used to be at newIndex is shifted left or right to make room. This will not move any columns if columnIndex equals newIndex. This method also posts a columnMoved event to its listeners.

Overridden to update internals related to column visibility.

Specified by:
moveColumn in interface TableColumnModel
Overrides:
moveColumn in class DefaultTableColumnModel
Parameters:
columnIndex - the index of column to be moved
newIndex - new index to move the column

moveToInvisible

protected void moveToInvisible(TableColumnExt col)
Update internal state after the visibility of the column was changed to invisible. The given column is assumed to be contained in this model.

Parameters:
col - the column which was hidden.

moveToVisible

protected void moveToVisible(TableColumnExt col)
Update internal state after the visibility of the column was changed to visible. The given column is assumed to be contained in this model.

Parameters:
col - the column which was made visible.

getEventListenerList

protected EventListenerList getEventListenerList()
Exposed for testing only - don't use! Will be removed again!

Returns:
super's listener list

propertyChange

public void propertyChange(PropertyChangeEvent evt)
Property Change Listener change method. Used to track changes to the column width or preferred column width.

Specified by:
propertyChange in interface PropertyChangeListener
Overrides:
propertyChange in class DefaultTableColumnModel
Parameters:
evt - PropertyChangeEvent

fireColumnPropertyChange

protected void fireColumnPropertyChange(PropertyChangeEvent evt)
Notifies TableColumnModelExtListeners about property changes of contained columns. The event instance is the original as fired by the TableColumn.

Parameters:
evt - the event received
See Also:
EventListenerList

addColumnModelListener

public void addColumnModelListener(TableColumnModelListener x)
Adds a listener for table column model events.

Overridden to install enhanced notification of listeners of type. TableColumnModelListenerExt about property changes of contained columns.

Specified by:
addColumnModelListener in interface TableColumnModel
Specified by:
addColumnModelListener in interface TableColumnModelExt
Overrides:
addColumnModelListener in class DefaultTableColumnModel
Parameters:
x - a TableColumnModelListener object

removeColumnModelListener

public void removeColumnModelListener(TableColumnModelListener x)
Removes a listener for table column model events.

Overridden to uninstall enhanced notification of listeners of type. TableColumnModelListenerExt about property changes of contained columns.

Specified by:
removeColumnModelListener in interface TableColumnModel
Overrides:
removeColumnModelListener in class DefaultTableColumnModel
Parameters:
x - a TableColumnModelListener object

getTableColumnModelExtListeners

public TableColumnModelExtListener[] getTableColumnModelExtListeners()
Returns:
array of all registered listeners