EchoPoint
1.0

echopoint.tree
Class DefaultTreeModel

java.lang.Object
  extended byechopoint.tree.DefaultTreeModel
All Implemented Interfaces:
java.io.Serializable, TreeModel

public class DefaultTreeModel
extends java.lang.Object
implements TreeModel, java.io.Serializable

A simple tree data model that uses TreeNodes.

See Also:
Serialized Form

Field Summary
protected  boolean asksAllowsChildren
          Determines how the isLeaf method figures out if a node is a leaf node.
protected  nextapp.echo.event.EventListenerList listenerList
          Listeners.
protected  TreeNode root
          Root of the tree.
 
Constructor Summary
DefaultTreeModel(TreeNode root)
          Creates a tree in which any node can have children.
DefaultTreeModel(TreeNode root, boolean asksAllowsChildren)
          Creates a tree specifying whether any node can have children, or whether only certain nodes can have children.
 
Method Summary
 void addTreeModelListener(TreeModelListener l)
          Adds a listener for the TreeModelEvent posted after the tree changes.
 boolean asksAllowsChildren()
          Tells how leaf nodes are determined.
 TreeNode findNodeById(TreeNode parent, java.lang.String idString)
          Finds a node within the tree, starting at parent, with the given idString, ie node.getId.toString().equals(idString) == true
protected  void fireTreeNodesChanged(java.lang.Object source, java.lang.Object[] path, int[] childIndices, java.lang.Object[] children)
           
protected  void fireTreeNodesInserted(java.lang.Object source, java.lang.Object[] path, int[] childIndices, java.lang.Object[] children)
           
protected  void fireTreeNodesRemoved(java.lang.Object source, java.lang.Object[] path, int[] childIndices, java.lang.Object[] children)
           
protected  void fireTreeStructureChanged(java.lang.Object source, java.lang.Object[] path, int[] childIndices, java.lang.Object[] children)
           
 java.lang.Object getChild(java.lang.Object parent, int index)
          Returns the child of parent at index index in the parent's child array.
 int getChildCount(java.lang.Object parent)
          Returns the number of children of parent.
 java.lang.String getIdString(java.lang.Object value)
          This returns a unique id string for the tree cell.
 int getIndexOfChild(java.lang.Object parent, java.lang.Object child)
          Returns the index of child in parent.
 java.lang.Object getParent(java.lang.Object child)
          Returns the parent of child.
 java.lang.Object[] getPathToRoot(java.lang.Object node)
          Builds the parents of node up to and including the root node, where the original node is the last element in the returned array.
 java.lang.Object[] getPathToRoot(java.lang.String idString)
          Builds the parents of node up to and including the root node, where the original node is the last element in the returned array.
protected  TreeNode[] getPathToRoot(TreeNode aNode, int depth)
          Builds the parents of node up to and including the root node, where the original node is the last element in the returned array.
 java.lang.Object getRoot()
          Returns the root of the tree.
 void insertNodeInto(MutableTreeNode newChild, MutableTreeNode parent, int index)
          Invoked this to insert newChild at location index in parents children.
 boolean isLeaf(java.lang.Object node)
          Returns whether the specified node is a leaf node.
 void nodeChanged(TreeNode node)
          Invoke this method after you've changed how node is to be represented in the tree.
 void nodesChanged(TreeNode node, int[] childIndices)
          Invoke this method after you've changed how the children identified by childIndicies are to be represented in the tree.
 void nodeStructureChanged(TreeNode node)
          Invoke this method if you've totally changed the children of node and its childrens children...
 void nodesWereInserted(TreeNode node, int[] childIndices)
          Invoke this method after you've inserted some TreeNodes into node.
 void nodesWereRemoved(TreeNode node, int[] childIndices, java.lang.Object[] removedChildren)
          Invoke this method after you've removed some TreeNodes from node.
 void reload()
          Invoke this method if you've modified the TreeNodes upon which this model depends.
 void reload(TreeNode node)
          Invoke this method if you've modified the TreeNodes upon which this model depends.
 void removeNodeFromParent(MutableTreeNode node)
          Message this to remove node from its parent.
 void removeTreeModelListener(TreeModelListener l)
          Removes a listener previously added with addTreeModelListener().
 void setAsksAllowsChildren(boolean newValue)
          Sets whether or not to test leafness by asking getAllowsChildren() or isLeaf() to the TreeNodes.
 void setRoot(TreeNode root)
          Sets the root to root.
 void valueForPathChanged(TreePath path, java.lang.Object newValue)
          This sets the user object of the TreeNode identified by path and posts a node changed.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

root

protected TreeNode root
Root of the tree.


listenerList

protected nextapp.echo.event.EventListenerList listenerList
Listeners.


asksAllowsChildren

protected boolean asksAllowsChildren
Determines how the isLeaf method figures out if a node is a leaf node. If true, a node is a leaf node if it does not allow children. (If it allows children, it is not a leaf node, even if no children are present.) That lets you distinguish between folder nodes and file nodes in a file system, for example.

If this value is false, then any node which has no children is a leaf node, and any node may acquire children.

Constructor Detail

DefaultTreeModel

public DefaultTreeModel(TreeNode root)
Creates a tree in which any node can have children.

Parameters:
root - a TreeNode object that is the root of the tree

DefaultTreeModel

public DefaultTreeModel(TreeNode root,
                        boolean asksAllowsChildren)
Creates a tree specifying whether any node can have children, or whether only certain nodes can have children.

Parameters:
root - a TreeNode object that is the root of the tree
asksAllowsChildren - a boolean, false if any node can have children, true if each node is asked to see if it can have children
Method Detail

addTreeModelListener

public void addTreeModelListener(TreeModelListener l)
Description copied from interface: TreeModel
Adds a listener for the TreeModelEvent posted after the tree changes.

Specified by:
addTreeModelListener in interface TreeModel
Parameters:
l - the listener to add

asksAllowsChildren

public boolean asksAllowsChildren()
Tells how leaf nodes are determined.

Returns:
true if only nodes which do not allow children are leaf nodes, false if nodes which have no children (even if allowed) are leaf nodes

findNodeById

public TreeNode findNodeById(TreeNode parent,
                             java.lang.String idString)
Finds a node within the tree, starting at parent, with the given idString, ie node.getId.toString().equals(idString) == true


fireTreeNodesChanged

protected void fireTreeNodesChanged(java.lang.Object source,
                                    java.lang.Object[] path,
                                    int[] childIndices,
                                    java.lang.Object[] children)

fireTreeNodesInserted

protected void fireTreeNodesInserted(java.lang.Object source,
                                     java.lang.Object[] path,
                                     int[] childIndices,
                                     java.lang.Object[] children)

fireTreeNodesRemoved

protected void fireTreeNodesRemoved(java.lang.Object source,
                                    java.lang.Object[] path,
                                    int[] childIndices,
                                    java.lang.Object[] children)

fireTreeStructureChanged

protected void fireTreeStructureChanged(java.lang.Object source,
                                        java.lang.Object[] path,
                                        int[] childIndices,
                                        java.lang.Object[] children)

getChild

public java.lang.Object getChild(java.lang.Object parent,
                                 int index)
Returns the child of parent at index index in the parent's child array. parent must be a node previously obtained from this data source. This should not return null if index is a valid index for parent (that is index >= 0 && index < getChildCount(parent)).

Specified by:
getChild in interface TreeModel
Parameters:
parent - a node in the tree, obtained from this data source
Returns:
the child of parent at index index

getChildCount

public int getChildCount(java.lang.Object parent)
Returns the number of children of parent. Returns 0 if the node is a leaf or if it has no children. parent must be a node previously obtained from this data source.

Specified by:
getChildCount in interface TreeModel
Parameters:
parent - a node in the tree, obtained from this data source
Returns:
the number of children of the node parent

getIndexOfChild

public int getIndexOfChild(java.lang.Object parent,
                           java.lang.Object child)
Returns the index of child in parent.

Specified by:
getIndexOfChild in interface TreeModel

getParent

public java.lang.Object getParent(java.lang.Object child)
Returns the parent of child. Returns null if the node has no parent or the tree model does not support traversing from a child to a parent node.

Specified by:
getParent in interface TreeModel
Parameters:
child - a node in the tree
Returns:
the parent of the node child

getPathToRoot

protected TreeNode[] getPathToRoot(TreeNode aNode,
                                   int depth)
Builds the parents of node up to and including the root node, where the original node is the last element in the returned array. The length of the returned array gives the node's depth in the tree.

Parameters:
aNode - the TreeNode to get the path for
depth - an int giving the number of steps already taken towards the root (on recursive calls), used to size the returned array
Returns:
an array of TreeNodes giving the path from the root to the specified node

getPathToRoot

public java.lang.Object[] getPathToRoot(java.lang.Object node)
Builds the parents of node up to and including the root node, where the original node is the last element in the returned array. The length of the returned array gives the node's depth in the tree.

Specified by:
getPathToRoot in interface TreeModel
Parameters:
node - the TreeNode to get the path for

getPathToRoot

public java.lang.Object[] getPathToRoot(java.lang.String idString)
Builds the parents of node up to and including the root node, where the original node is the last element in the returned array. The length of the returned array gives the node's depth in the tree.

A match will be made to a node if the node implements TreeNode and node.getId.toString().equals(idString) == true

Specified by:
getPathToRoot in interface TreeModel
Parameters:
idString - of the node to get the path for

getRoot

public java.lang.Object getRoot()
Returns the root of the tree. Returns null only if the tree has no nodes.

Specified by:
getRoot in interface TreeModel
Returns:
the root of the tree

insertNodeInto

public void insertNodeInto(MutableTreeNode newChild,
                           MutableTreeNode parent,
                           int index)
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.


isLeaf

public boolean isLeaf(java.lang.Object node)
Returns whether the specified node is a leaf node. The way the test is performed depends on the askAllowsChildren setting.

Specified by:
isLeaf in interface TreeModel
Parameters:
node - a node in the tree, obtained from this data source
Returns:
true if node is a leaf

nodeChanged

public void nodeChanged(TreeNode node)
Invoke this method after you've changed how node is to be represented in the tree.


nodesChanged

public void nodesChanged(TreeNode node,
                         int[] childIndices)
Invoke this method after you've changed how the children identified by childIndicies are to be represented in the tree.


nodeStructureChanged

public void nodeStructureChanged(TreeNode node)
Invoke this method if you've totally changed the children of node and its childrens children... This will post a treeStructureChanged event.


nodesWereInserted

public void nodesWereInserted(TreeNode node,
                              int[] childIndices)
Invoke this method after you've inserted some TreeNodes into node. childIndices should be the index of the new elements and must be sorted in ascending order.


nodesWereRemoved

public void nodesWereRemoved(TreeNode node,
                             int[] childIndices,
                             java.lang.Object[] removedChildren)
Invoke this method after you've removed some TreeNodes from node. childIndices should be the index of the removed elements and must be sorted in ascending order. And removedChildren should be the array of the children objects that were removed.


reload

public void reload()
Invoke this method if you've modified the TreeNodes upon which this model depends. The model will notify all of its listeners that the model has changed.


reload

public void reload(TreeNode node)
Invoke this method if you've modified the TreeNodes upon which this model depends. The model will notify all of its listeners that the model has changed below the node.


removeNodeFromParent

public void removeNodeFromParent(MutableTreeNode node)
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.


removeTreeModelListener

public void removeTreeModelListener(TreeModelListener l)
Description copied from interface: TreeModel
Removes a listener previously added with addTreeModelListener().

Specified by:
removeTreeModelListener in interface TreeModel

setAsksAllowsChildren

public void setAsksAllowsChildren(boolean newValue)
Sets whether or not to test leafness by asking getAllowsChildren() or isLeaf() to the TreeNodes. If newvalue is true, getAllowsChildren() is messaged, otherwise isLeaf() is messaged.


setRoot

public void setRoot(TreeNode root)
Sets the root to root. This will throw an IllegalArgumentException if root is null.


getIdString

public java.lang.String getIdString(java.lang.Object value)
This returns a unique id string for the tree cell. If the value is a "TreeNode" then it will use the TreeNode.getId() method to return a unique value. Otherwise it will use System.identityHashCode(value) to get a unique value.

Specified by:
getIdString in interface TreeModel
Parameters:
value - a node in the tree

valueForPathChanged

public void valueForPathChanged(TreePath path,
                                java.lang.Object newValue)
This sets the user object of the TreeNode identified by path and posts a node changed. If you use custom user objects in the TreeModel you're going to need to subclass this and set the user object of the changed node to something meaningful.

Specified by:
valueForPathChanged in interface TreeModel
Parameters:
path - path to the node that the user has altered.
newValue - the new value from the Tree.

EchoPoint
1.0