Class DefaultTreeTableModel
- All Implemented Interfaces:
TreeModel
,TreeTableModel
DefaultTreeTableModel
is a concrete implementation of
AbstractTreeTableModel
and is provided purely as a convenience for
use with TreeTableNode
s. Applications that use JXTreeTable
without TreeTableNode
s are expected to provide their own
implementation of a TreeTableModel
.
The DefaultTreeTableModel
is designed to be used with
TreeTableNode
s. Specifically, users should extend
AbstractMutableTreeTableNode
to provide custom implementations for
data display.
Users who do not provide a list of column identifiers must provide a root that contains at least one column. Without specified identifiers the model will attempt to calculate the columns required for display by querying the root node. Normally, the root node can be little more than a shell (in displays that hide it), but without identifiers, the model relies on the root node metadata for display.
- Author:
- Ramesh Gupta, Karl Schaefer
-
Field Summary
FieldsFields inherited from class org.jdesktop.swingx.treetable.AbstractTreeTableModel
modelSupport, root
-
Constructor Summary
ConstructorsConstructorDescriptionCreates a newDefaultTreeTableModel
with anull
root.Creates a newDefaultTreeTableModel
with the specifiedroot
.DefaultTreeTableModel
(TreeTableNode root, List<?> columnNames) Creates a newDefaultTreeTableModel
with the specifiedroot
and column names. -
Method Summary
Modifier and TypeMethodDescriptionint
getChildCount
(Object parent) int
Returns the number of columns in the model.getColumnName
(int column) Returns the name of the column atcolumnIndex
.int
getIndexOfChild
(Object parent, Object child) getPathToRoot
(TreeTableNode aNode) Gets the path from the root to the specified node.getRoot()
Returns the root of the tree.getValueAt
(Object node, int column) Gets the value for thenode
atcolumn
.void
insertNodeInto
(MutableTreeTableNode newChild, MutableTreeTableNode parent, int index) Invoked this to insert newChild at location index in parents children.boolean
isCellEditable
(Object node, int column) Returns true if the cell for thenode
atcolumnIndex
is editable.boolean
Returnstrue
ifnode
is a leaf.void
Message this to remove node from its parent.void
setColumnIdentifiers
(List<?> columnIdentifiers) Replaces the column identifiers in the model.void
setRoot
(TreeTableNode root) Sets the root for this table model.void
setUserObject
(TreeTableNode node, Object userObject) Sets the user object for a node.void
setValueAt
(Object value, Object node, int column) Sets the value for thenode
atcolumnIndex
tovalue
.void
valueForPathChanged
(TreePath path, Object newValue) Called when value for the item identified by path has been changed.Methods inherited from class org.jdesktop.swingx.treetable.AbstractTreeTableModel
addTreeModelListener, getColumnClass, getHierarchicalColumn, getTreeModelListeners, removeTreeModelListener
-
Field Details
-
columnIdentifiers
TheList
of column identifiers.
-
-
Constructor Details
-
DefaultTreeTableModel
public DefaultTreeTableModel()Creates a newDefaultTreeTableModel
with anull
root. -
DefaultTreeTableModel
Creates a newDefaultTreeTableModel
with the specifiedroot
.- Parameters:
root
- the root node of the tree
-
DefaultTreeTableModel
Creates a newDefaultTreeTableModel
with the specifiedroot
and column names.- Parameters:
root
- the root node of the treecolumnNames
- the names of the columns used by this model- See Also:
-
-
Method Details
-
setColumnIdentifiers
Replaces the column identifiers in the model. If the number ofnewIdentifier
s is greater than the current number of columns, new columns are added to the end of each row in the model. If the number ofnewIdentifier
s is less than the current number of columns, all the extra columns at the end of a row are discarded.- Parameters:
columnIdentifiers
- vector of column identifiers. Ifnull
, set the model to zero columns
-
getRoot
Returns the root of the tree. Returnsnull
only if the tree has no nodes.- Specified by:
getRoot
in interfaceTreeModel
- Overrides:
getRoot
in classAbstractTreeTableModel
- Returns:
- the root of the tree
- Throws:
ClassCastException
- ifroot
is not aTreeTableNode
. Even though subclasses have direct access toroot
, they should avoid accessing it directly.- See Also:
-
getValueAt
Gets the value for thenode
atcolumn
. Delegates toTreeTableNode.getValueAt(int)
- Parameters:
node
- the node whose value is to be queriedcolumn
- the column whose value is to be queried- Returns:
- the value Object at the specified cell
- Throws:
IllegalArgumentException
- ifnode
is not an instance ofTreeTableNode
or is not managed by this model, orcolumn
is not a valid column index- See Also:
-
setValueAt
Sets the value for thenode
atcolumnIndex
tovalue
.is no-op; provided for convenience for uneditable models
- Specified by:
setValueAt
in interfaceTreeTableModel
- Overrides:
setValueAt
in classAbstractTreeTableModel
- Parameters:
value
- the new valuenode
- the node whose value is to be changedcolumn
- the column whose value is to be changed- See Also:
-
getColumnCount
public int getColumnCount()Returns the number of columns in the model. AJXTreeTable
uses this method to determine how many columns it should create and display by default.- Returns:
- the number of columns in the model
- See Also:
-
getColumnName
Returns the name of the column atcolumnIndex
. This is used to initialize the table's column header name. Note: this name does not need to be unique; two columns in a table can have the same name.- Specified by:
getColumnName
in interfaceTreeTableModel
- Overrides:
getColumnName
in classAbstractTreeTableModel
- Parameters:
column
- the index of the column- Returns:
- the name of the column
- See Also:
-
getChild
-
getChildCount
-
getIndexOfChild
-
isCellEditable
Returns true if the cell for thenode
atcolumnIndex
is editable. Otherwise,setValueAt
on the cell will not change the value of that cell. Thenode
must be managed by this model. Unamanaged nodes should throw anIllegalArgumentException
.- Specified by:
isCellEditable
in interfaceTreeTableModel
- Overrides:
isCellEditable
in classAbstractTreeTableModel
- Parameters:
node
- the node whose value to be queriedcolumn
- the column whose value to be queried- Returns:
- true if the cell is editable
- See Also:
-
isLeaf
Returnstrue
ifnode
is a leaf.- Specified by:
isLeaf
in interfaceTreeModel
- Overrides:
isLeaf
in classAbstractTreeTableModel
- Parameters:
node
- a node in the tree, obtained from this data source- Returns:
- true if
node
is a leaf
-
getPathToRoot
Gets the path from the root to the specified node.- Parameters:
aNode
- the node to query- Returns:
- an array of
TreeTableNode
s, wherearr[0].equals(getRoot())
andarr[arr.length - 1].equals(aNode)
, or an empty array if the node is not found. - Throws:
NullPointerException
- ifaNode
isnull
-
setRoot
Sets the root for this table model. If no column identifiers have been specified, this will rebuild the identifier list, usingroot
as an examplar of the table.- Parameters:
root
- the node to set as root
-
insertNodeInto
Invoked this to insert newChild at location index in parents children. This will then message nodesWereInserted to create the appropriate event. This is the preferred way to add children as it will create the appropriate event.- Parameters:
newChild
- MutableTreeTableNodeparent
- MutableTreeTableNodeindex
- TODO maven-javadoc-plugin 3.3.2 needs a doc here
-
removeNodeFromParent
Message this to remove node from its parent. This will message nodesWereRemoved to create the appropriate event. This is the preferred way to remove a node as it handles the event creation for you.- Parameters:
node
- MutableTreeTableNode
-
valueForPathChanged
Called when value for the item identified by path has been changed. If newValue signifies a truly new value the model should post atreeNodesChanged
event.This changes the object backing the
TreeTableNode
described by the path. This change does not alter a nodes children in any way. If you need to change structure of the node, use one of the provided mutator methods.- Specified by:
valueForPathChanged
in interfaceTreeModel
- Overrides:
valueForPathChanged
in classAbstractTreeTableModel
- Parameters:
path
- path to the node that has changednewValue
- the new value- Throws:
NullPointerException
- ifpath
isnull
IllegalArgumentException
- ifpath
is not a path managed by this modelClassCastException
- ifpath.getLastPathComponent()
is not aTreeTableNode
-
setUserObject
Sets the user object for a node. Client code must use this method, so that the model can notify listeners that a change has occurred.This method is a convenient cover for
valueForPathChanged(TreePath, Object)
.- Parameters:
node
- the node to modifyuserObject
- the new user object to set- Throws:
NullPointerException
- ifnode
isnull
IllegalArgumentException
- ifnode
is not a node managed by this model
-