public class HashTreeModel<T>
extends java.lang.Object
implements javax.swing.tree.TreeModel
HashTreeModel
is an implementation of the Swing TreeModel
backed by a
HashMap
. Any objects can be added as nodes or the class can be parameterized so that only nodes
belonging to some type may be added (noting that TreeModel
methods will still use Object
).
An object may only be inserted into the tree once as enforced by Object.equals(java.lang.Object)
as this causes problems with the
JTree
.Constructor and Description |
---|
HashTreeModel(T root)
Create the
HashTreeModel with the given object as root. |
Modifier and Type | Method and Description |
---|---|
void |
addChild(T parent,
T child)
Add a node to a parent.
|
void |
addTreeModelListener(javax.swing.event.TreeModelListener l) |
T |
getChild(java.lang.Object parent,
int index) |
int |
getChildCount(java.lang.Object parent) |
int |
getIndexOfChild(java.lang.Object parent,
java.lang.Object child) |
T |
getRoot()
Returns the root object.
|
boolean |
isLeaf(java.lang.Object node) |
boolean |
isMember(java.lang.Object node)
Return true if the given node is a member of the tree.
|
void |
removeChildren(T node) |
void |
removeNode(T node)
Remove a node from the tree.
|
void |
removeTreeModelListener(javax.swing.event.TreeModelListener l) |
void |
valueForPathChanged(javax.swing.tree.TreePath path,
java.lang.Object newValue) |
public HashTreeModel(T root)
HashTreeModel
with the given object as root.root
- the root objectpublic T getRoot()
getRoot
in interface javax.swing.tree.TreeModel
public void addChild(T parent, T child)
parent
- the node in the tree to add a new node tochild
- a node to add to the treejava.lang.IllegalArgumentException
- if the parent is not a member or the child already is a member of the treejava.lang.NullPointerException
- if either argument is null
public void removeNode(T node)
node
- a node to removejava.lang.NullPointerException
- if the node is null
java.lang.IllegalArgumentException
- if the node is not a member or if the node is the root of the treepublic void removeChildren(T node)
public boolean isMember(java.lang.Object node)
node
- a node to testpublic T getChild(java.lang.Object parent, int index)
getChild
in interface javax.swing.tree.TreeModel
public int getChildCount(java.lang.Object parent)
getChildCount
in interface javax.swing.tree.TreeModel
public boolean isLeaf(java.lang.Object node)
isLeaf
in interface javax.swing.tree.TreeModel
public void valueForPathChanged(javax.swing.tree.TreePath path, java.lang.Object newValue)
valueForPathChanged
in interface javax.swing.tree.TreeModel
public int getIndexOfChild(java.lang.Object parent, java.lang.Object child)
getIndexOfChild
in interface javax.swing.tree.TreeModel
public void addTreeModelListener(javax.swing.event.TreeModelListener l)
addTreeModelListener
in interface javax.swing.tree.TreeModel
public void removeTreeModelListener(javax.swing.event.TreeModelListener l)
removeTreeModelListener
in interface javax.swing.tree.TreeModel