fri.gui.swing.polytreetable
Class DefaultPolyTreeTableModel

java.lang.Object
  |
  +--fri.gui.swing.polytreetable.AbstractPolyTreeTableModel
        |
        +--fri.gui.swing.polytreetable.DefaultPolyTreeTableModel
All Implemented Interfaces:
PolyTreeTableModel

public class DefaultPolyTreeTableModel
extends AbstractPolyTreeTableModel

An concrete implementation of the PolyTreeTableModel interface that provides insert, change and remove of nodes. Furthermore it provides programmatically created columns.

This class sets as default the tree column as the only column, with no table header. To render the nodes, node.toString() is called in getValueAt().
Subclasses should override

to render more than one column, with headers. This methods could delegate to a DefaultPolyTreeNode subclass, that hold the required information.

Author:
Ritzberger Fritz
See Also:
PolyTreeTableModel, AbstractPolyTreeTableModel

Field Summary
protected  java.util.Vector columnNames
           
protected  java.util.Vector columns
           
protected  javax.swing.event.EventListenerList listenerList
          List of listeners
 
Fields inherited from class fri.gui.swing.polytreetable.AbstractPolyTreeTableModel
asksAllowsChildren, asksAllowsParents, startNode
 
Constructor Summary
DefaultPolyTreeTableModel(PolyTreeNode startNode)
          Create a model with given start node and asking for allows parents/children.
DefaultPolyTreeTableModel(PolyTreeNode startNode, boolean asksAllowsParents, boolean asksAllowsChildren)
          Create a model with given start node and the parents/children properties.
 
Method Summary
 int addColumn(java.lang.Class columnClass, java.lang.String columnName)
          Adds a column to this TableModel and returns index of new column.
 void addPolyTreeTableModelListener(PolyTreeTableModelListener l)
           
protected  void fireTreeNodeChanged(MutablePolyTreeNode source)
           
protected  void fireTreeNodesInserted(boolean isParentInsert, MutablePolyTreeNode source, PolyTreeNode[] nodes, int[] indexes)
           
protected  void fireTreeNodesRemoved(boolean isParentRemove, MutablePolyTreeNode source, PolyTreeNode[] nodes, int[] indexes)
           
 java.lang.Class getColumnClass(int column)
          Implements PolyTreeTableModel.
 int getColumnCount()
          Implements PolyTreeTableModel.
 java.lang.String getColumnName(int column)
          Implements PolyTreeTableModel.
 java.lang.Object getValueAt(PolyTreeNode node, int column)
          Implements PolyTreeTableModel.
protected  void initColumns(java.lang.Object userObject)
          If a PolyTreeTableUserObject was passed in cnstructor, initialize columns from it.
 void insertChildIntoNode(PolyTreeNode newChild, MutablePolyTreeNode node, int index)
          This method replaces DefaultTreeModel.insertNodeInto().
 void insertParentIntoNode(PolyTreeNode newParent, MutablePolyTreeNode node, int index)
          This method replaces DefaultTreeModel.insertNodeInto().
 void removeChildFromNode(PolyTreeNode removeNode, MutablePolyTreeNode node)
          This method replaces DefaultTreeModel.removeNodeFromParent().
 void removeColumn(java.lang.Class columnClass)
          Removes a column from this TableModel, identified by class.
 void removeColumn(int columnIndex)
          Removes a column from this TableModel, identified by index.
 void removeColumn(java.lang.String columnName)
          Removes a column from this TableModel, identified by name.
 void removeParentFromNode(PolyTreeNode removeNode, MutablePolyTreeNode node)
          This method replaces DefaultTreeModel.removeNodeFromParent().
 void removePolyTreeTableModelListener(PolyTreeTableModelListener l)
           
 void setValueAt(java.lang.Object aValue, MutablePolyTreeNode node, int column)
          Implements PolyTreeTableModel.
 
Methods inherited from class fri.gui.swing.polytreetable.AbstractPolyTreeTableModel
getAsksAllowsChildren, getAsksAllowsParents, getChild, getChildCount, getIndexOfChild, getIndexOfParent, getParent, getParentCount, getStartNode, isCellEditable, isChildLeaf, isParentLeaf, setAsksAllowsChildren, setAsksAllowsParents
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

listenerList

protected javax.swing.event.EventListenerList listenerList
List of listeners


columns

protected java.util.Vector columns

columnNames

protected java.util.Vector columnNames
Constructor Detail

DefaultPolyTreeTableModel

public DefaultPolyTreeTableModel(PolyTreeNode startNode)
Create a model with given start node and asking for allows parents/children. This differs from DefaultTreeModel that defaults asksAllowsChildren to false!


DefaultPolyTreeTableModel

public DefaultPolyTreeTableModel(PolyTreeNode startNode,
                                 boolean asksAllowsParents,
                                 boolean asksAllowsChildren)
Create a model with given start node and the parents/children properties.

Method Detail

initColumns

protected void initColumns(java.lang.Object userObject)
If a PolyTreeTableUserObject was passed in cnstructor, initialize columns from it.


getValueAt

public java.lang.Object getValueAt(PolyTreeNode node,
                                   int column)
Implements PolyTreeTableModel. If the passed node is instanceof DefaultPolyTreeNode, getColumnObect() on the node is returned, else, if columns were defined, throws an Exception, else returns node itself to render it in the only tree column. Override this to retun specific values for more columns or use DefaultPolyTreeNode and override getColumnObject().


setValueAt

public void setValueAt(java.lang.Object aValue,
                       MutablePolyTreeNode node,
                       int column)
Implements PolyTreeTableModel. This method replaces DefaultTreeModel.valueForPathChanged(). It delegates to setColumnObject() if the node is instanceof DefaultPolyTreeNode. Then it just calls fireTreeNodeChanged(). Override this and set aValue to node in a specific way, then delegate to super.setValue(...) to fire the change event. Alternately you can use DefaultPolyTreeNode and override setColumnObject().


getColumnCount

public int getColumnCount()
Implements PolyTreeTableModel. Returns 1 to set the tree as the only column. if no columns were added, else the current column count. Override this to set more than one column programmatically.


getColumnName

public java.lang.String getColumnName(int column)
Implements PolyTreeTableModel. Returns null, so the tree will have no header column, if no columns were added, else the name of passed column. Override this to set a column name that will appear in table header.


getColumnClass

public java.lang.Class getColumnClass(int column)
Implements PolyTreeTableModel. Returns PolyTreeTableModel.class as the only column class of table, if no columns were added. Override this to set more than one column classes programmatically.


addColumn

public int addColumn(java.lang.Class columnClass,
                     java.lang.String columnName)
Adds a column to this TableModel and returns index of new column.


removeColumn

public void removeColumn(java.lang.Class columnClass)
Removes a column from this TableModel, identified by class.


removeColumn

public void removeColumn(java.lang.String columnName)
Removes a column from this TableModel, identified by name.


removeColumn

public void removeColumn(int columnIndex)
Removes a column from this TableModel, identified by index.


insertParentIntoNode

public void insertParentIntoNode(PolyTreeNode newParent,
                                 MutablePolyTreeNode node,
                                 int index)
This method replaces DefaultTreeModel.insertNodeInto(). It delegates to the node and fires an insert event.


insertChildIntoNode

public void insertChildIntoNode(PolyTreeNode newChild,
                                MutablePolyTreeNode node,
                                int index)
This method replaces DefaultTreeModel.insertNodeInto(). It delegates to the node and fires an insert event.


removeParentFromNode

public void removeParentFromNode(PolyTreeNode removeNode,
                                 MutablePolyTreeNode node)
This method replaces DefaultTreeModel.removeNodeFromParent(). It delegates to node and fires an remove event.


removeChildFromNode

public void removeChildFromNode(PolyTreeNode removeNode,
                                MutablePolyTreeNode node)
This method replaces DefaultTreeModel.removeNodeFromParent(). It delegates to node and fires an remove event.


addPolyTreeTableModelListener

public void addPolyTreeTableModelListener(PolyTreeTableModelListener l)

removePolyTreeTableModelListener

public void removePolyTreeTableModelListener(PolyTreeTableModelListener l)

fireTreeNodeChanged

protected void fireTreeNodeChanged(MutablePolyTreeNode source)

fireTreeNodesInserted

protected void fireTreeNodesInserted(boolean isParentInsert,
                                     MutablePolyTreeNode source,
                                     PolyTreeNode[] nodes,
                                     int[] indexes)

fireTreeNodesRemoved

protected void fireTreeNodesRemoved(boolean isParentRemove,
                                    MutablePolyTreeNode source,
                                    PolyTreeNode[] nodes,
                                    int[] indexes)