|
EchoPoint API - 3.0.0b5 App Webcontainer |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectechopoint.tree.DefaultMutableTreeNode<M>
public class DefaultMutableTreeNode<M>
A DefaultMutableTreeNode is a general-purpose node in a tree
data structure. A tree node may have at most one parent and 0 or more
children. DefaultMutableTreeNode provides operations for
examining and modifying a node's parent and children and also operations
for examining the tree that the node is a part of. A node's tree is the set
of all nodes that can be reached by starting at the node and following all
the possible links to parents and children. A node with no parent is the
root of its tree; a node with no children is a leaf. A tree may consist of
many subtrees, each node acting as the root for its own subtree.
DefaultMutableTreeNode may also hold a reference to a user
object, the use of which is left to the user. Asking a
DefaultMutableTreeNode for its string representation with
toString() returns the string representation of its user
object.
This is not a thread safe class.If you intend to use a
DefaultMutableTreeNode (or a tree of TreeNodes) in more than one thread,
you need to do your own synchronizing. A good convention to adopt is
synchronizing on the root node of a tree.
While DefaultMutableTreeNode implements the MutableTreeNode interface and
will allow you to add in any implementation of MutableTreeNode not all of
the methods in DefaultMutableTreeNode will be applicable to all
MutableTreeNodes implementations. Especially with some of the enumerations
that are provided, using some of these methods assumes the
DefaultMutableTreeNode contains only DefaultMutableNode instances. All of
the TreeNode/MutableTreeNode methods will behave as defined no matter what
implementations are added.
| Field Summary | |
|---|---|
protected String |
actionCommand
this node's action command |
protected boolean |
allowsChildren
true if the node is able to have children |
protected Vector<TreeNode> |
children
Array of children, may be null if this node has no children |
static Enumeration<TreeNode> |
EMPTY_ENUMERATION
An enumeration that is always empty. |
protected MutableTreeNode |
parent
this node's parent, or null if this node has no parent |
protected M |
userObject
optional user object |
| Constructor Summary | |
|---|---|
DefaultMutableTreeNode()
Creates a tree node that has no parent and no children, but which allows children. |
|
DefaultMutableTreeNode(M userObject)
Creates a tree node with no parent, no children, but which allows children, and initializes it with the specified user object. |
|
DefaultMutableTreeNode(M userObject,
boolean allowsChildren)
Creates a tree node with no parent, no children, initialized with the specified user object, and that allows children only if specified. |
|
| Method Summary | |
|---|---|
void |
add(MutableTreeNode newChild)
Removes newChild from its parent and makes it a child of
this node by adding it to the end of this node's child array. |
Enumeration<TreeNode> |
breadthFirstEnumeration()
Creates and returns an enumeration that traverses the subtree rooted at this node in breadth-first order. |
Enumeration<TreeNode> |
children()
Creates and returns a forward-order enumeration of this node's children. |
Enumeration<TreeNode> |
depthFirstEnumeration()
Creates and returns an enumeration that traverses the subtree rooted at this node in depth-first order. |
String |
getActionCommand()
Returns the Action command string associated with this node |
boolean |
getAllowsChildren()
Returns true if this node is allowed to have children. |
TreeNode |
getChildAfter(TreeNode aChild)
Returns the child in this node's child array that immediately follows aChild, which must be a child of this node. |
TreeNode |
getChildAt(int index)
Returns the child at the specified index in this node's child array. |
TreeNode |
getChildBefore(TreeNode aChild)
Returns the child in this node's child array that immediately precedes aChild, which must be a child of this node. |
int |
getChildCount()
Returns the number of children of this node. |
int |
getDepth()
Returns the depth of the tree rooted at this node -- the longest distance from this node to a leaf. |
TreeNode |
getFirstChild()
Returns this node's first child. |
DefaultMutableTreeNode |
getFirstLeaf()
Finds and returns the first leaf that is a descendant of this node -- either this node or its first child's first leaf. |
int |
getIndex(TreeNode aChild)
Returns the index of the specified child in this node's child array. |
TreeNode |
getLastChild()
Returns this node's last child. |
DefaultMutableTreeNode |
getLastLeaf()
Finds and returns the last leaf that is a descendant of this node -- either this node or its last child's last leaf. |
int |
getLeafCount()
Returns the total number of leaves that are descendants of this node. |
int |
getLevel()
Returns the number of levels above this node -- the distance from the root to this node. |
DefaultMutableTreeNode |
getNextLeaf()
Returns the leaf after this node or null if this node is the last leaf in the tree. |
DefaultMutableTreeNode |
getNextNode()
Returns the node that follows this node in a preorder traversal of this node's tree. |
DefaultMutableTreeNode |
getNextSibling()
Returns the next sibling of this node in the parent's children array. |
TreeNode |
getParent()
Returns this node's parent or null if this node has no parent. |
TreeNode[] |
getPath()
Returns the path from the root, to get to this node. |
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. |
DefaultMutableTreeNode |
getPreviousLeaf()
Returns the leaf before this node or null if this node is the first leaf in the tree. |
DefaultMutableTreeNode |
getPreviousNode()
Returns the node that precedes this node in a preorder traversal of this node's tree. |
DefaultMutableTreeNode |
getPreviousSibling()
Returns the previous sibling of this node in the parent's children array. |
TreeNode |
getRoot()
Returns the root of the tree that contains this node. |
TreeNode |
getSharedAncestor(DefaultMutableTreeNode aNode)
Returns the nearest common ancestor to this node and aNode. |
int |
getSiblingCount()
Returns the number of siblings of this node. |
M |
getUserObject()
|
Object[] |
getUserObjectPath()
Returns the user object path, from the root, to get to this node. |
void |
insert(MutableTreeNode newChild,
int childIndex)
Removes newChild from its present parent (if it has a
parent), sets the child's parent to this node, and then adds the child to
this node's child array at index childIndex. |
boolean |
isLeaf()
Returns true if this node has no children. |
boolean |
isNodeAncestor(TreeNode anotherNode)
Returns true if anotherNode is an ancestor of this node --
if it is this node, this node's parent, or an ancestor of this node's
parent. |
boolean |
isNodeChild(TreeNode aNode)
Returns true if aNode is a child of this node. |
boolean |
isNodeDescendant(DefaultMutableTreeNode anotherNode)
Returns true if anotherNode is a descendant of this node --
if it is this node, one of this node's children, or a descendant of one
of this node's children. |
boolean |
isNodeRelated(DefaultMutableTreeNode aNode)
Returns true if and only if aNode is in the same tree as
this node. |
boolean |
isNodeSibling(TreeNode anotherNode)
Returns true if anotherNode is a sibling of (has the same
parent as) this node. |
boolean |
isRoot()
Returns true if this node is the root of the tree. |
Enumeration<TreeNode> |
pathFromAncestorEnumeration(TreeNode ancestor)
Creates and returns an enumeration that follows the path from ancestor to this node. |
Enumeration<TreeNode> |
postorderEnumeration()
Creates and returns an enumeration that traverses the subtree rooted at this node in postorder. |
Enumeration<TreeNode> |
preorderEnumeration()
Creates and returns an enumeration that traverses the subtree rooted at this node in preorder. |
void |
remove(int childIndex)
Removes the child at the specified index from this node's children and sets that node's parent to null. |
void |
remove(MutableTreeNode aChild)
Removes aChild from this node's child array, giving it a
null parent. |
void |
removeAllChildren()
Removes all of this node's children, setting their parents to null. |
void |
removeFromParent()
Removes the subtree rooted at this node from the tree, giving this node a null parent. |
void |
setActionCommand(String newActionCommand)
Sets this node's action command to newActionCommand |
void |
setAllowsChildren(boolean allows)
Determines whether or not this node is allowed to have children. |
void |
setParent(MutableTreeNode newParent)
Sets this node's parent to newParent but does not change the
parent's child array. |
void |
setUserObject(M userObject)
Sets the user object for this node to userObject. |
String |
toString()
Returns the result of sending toString() to this node's user
object, or null if this node has no user object. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
| Field Detail |
|---|
protected String actionCommand
protected MutableTreeNode parent
protected Vector<TreeNode> children
protected transient M userObject
protected boolean allowsChildren
public static final Enumeration<TreeNode> EMPTY_ENUMERATION
| Constructor Detail |
|---|
public DefaultMutableTreeNode()
public DefaultMutableTreeNode(M userObject)
userObject - an Object provided by the user that constitutes the
node's data
public DefaultMutableTreeNode(M userObject,
boolean allowsChildren)
userObject - an Object provided by the user that constitutes the
node's dataallowsChildren - if true, the node is allowed to have child nodes --
otherwise, it is always a leaf node| Method Detail |
|---|
public void add(MutableTreeNode newChild)
newChild from its parent and makes it a child of
this node by adding it to the end of this node's child array.
newChild - The child node to add.
IllegalArgumentException - if newChild is null
IllegalStateException - if this node does not allow childrenpublic Enumeration<TreeNode> breadthFirstEnumeration()
nextElement() method is this node.
Modifying the tree by inserting, removing, or moving a node invalidates
any enumerations created before the modification.
public Enumeration<TreeNode> children()
children in interface TreeNodepublic Enumeration<TreeNode> depthFirstEnumeration()
nextElement() method is the leftmost leaf.
This is the same as a postorder traversal.
Modifying the tree by inserting, removing, or moving a node invalidates
any enumerations created before the modification.
public String getActionCommand()
getActionCommand in interface TreeNodepublic boolean getAllowsChildren()
getAllowsChildren in interface TreeNodepublic TreeNode getChildAfter(TreeNode aChild)
aChild, which must be a child of this node. If
aChild is the last child, returns null. This method performs
a linear search of this node's children for aChild and is
O(n) where n is the number of children; to traverse the entire array of
children, use an enumeration instead.
aChild - The child node from which the next node is to be retrieved.
aChild
IllegalArgumentException - if aChild is null or is not
a child of this nodepublic TreeNode getChildAt(int index)
getChildAt in interface TreeNodeindex - an index into this node's child array
ArrayIndexOutOfBoundsException - if index is out of
boundspublic TreeNode getChildBefore(TreeNode aChild)
aChild, which must be a child of this node. If
aChild is the first child, returns null. This method
performs a linear search of this node's children for aChild
and is O(n) where n is the number of children.
aChild - The node from which the node before is to be retrieved.
aChild
IllegalArgumentException - if aChild is null or is not
a child of this nodepublic int getChildCount()
getChildCount in interface TreeNodepublic int getDepth()
getLevel() because it
must effectively traverse the entire tree rooted at this node.
public TreeNode getFirstChild()
NoSuchElementException - if this node has no childrenpublic DefaultMutableTreeNode getFirstLeaf()
public int getIndex(TreeNode aChild)
-1.
This method performs a linear search and is O(n) where n is the number of
children.
getIndex in interface TreeNodeaChild - the TreeNode to search for among this node's children
-1 if the specified node is a not a child of this
node
IllegalArgumentException - if aChild is nullpublic TreeNode getLastChild()
NoSuchElementException - if this node has no childrenpublic DefaultMutableTreeNode getLastLeaf()
public int getLeafCount()
1. This method is O(n) where n
is the number of descendants of this node.
public int getLevel()
public DefaultMutableTreeNode getNextLeaf()
MutableNode interface, this
operation is very inefficient. In order to determine the next node, this
method first performs a linear search in the parent's child-list in order
to find the current node.
That implementation makes the operation suitable for short traversals
from a known position. But to traverse all of the leaves in the tree, you
should use depthFirstEnumeration to enumerate the nodes in
the tree and use isLeaf on each node to determine which are
leaves.
null.public DefaultMutableTreeNode getNextNode()
public DefaultMutableTreeNode getNextSibling()
public TreeNode getParent()
getParent in interface TreeNodepublic TreeNode[] getPath()
protected TreeNode[] getPathToRoot(TreeNode aNode,
int depth)
aNode - the TreeNode to get the path fordepth - an int giving the number of steps already taken towards the
root (on recursive calls), used to size the returned array
public DefaultMutableTreeNode getPreviousLeaf()
MutableNode interface, this
operation is very inefficient. In order to determine the previous node,
this method first performs a linear search in the parent's child-list in
order to find the current node.
That implementation makes the operation suitable for short traversals
from a known position. But to traverse all of the leaves in the tree, you
should use depthFirstEnumeration to enumerate the nodes in
the tree and use isLeaf on each node to determine which are
leaves.
public DefaultMutableTreeNode getPreviousNode()
public DefaultMutableTreeNode getPreviousSibling()
public TreeNode getRoot()
public TreeNode getSharedAncestor(DefaultMutableTreeNode aNode)
aNode.
Returns null, if no such ancestor exists -- if this node and
aNode are in different trees or if aNode is
null. A node is considered an ancestor of itself.
aNode - The node for which the common ancestor is to be retrieved.
public int getSiblingCount()
1).
public M getUserObject()
public Object[] getUserObjectPath()
public void insert(MutableTreeNode newChild,
int childIndex)
newChild from its present parent (if it has a
parent), sets the child's parent to this node, and then adds the child to
this node's child array at index childIndex.
newChild must not be null and must not be an ancestor of
this node.
insert in interface MutableTreeNode<M>newChild - The child to add.childIndex - The index at which to add the child.public boolean isLeaf()
getAllowsChildren
isLeaf in interface TreeNodetrue if the receiver is a leaf.public boolean isNodeAncestor(TreeNode anotherNode)
anotherNode is an ancestor of this node --
if it is this node, this node's parent, or an ancestor of this node's
parent. (Note that a node is considered an ancestor of itself.) If
anotherNode is null, this method returns false. This
operation is at worst O(h) where h is the distance from the root to this
node.
anotherNode - The node to check.
true if the specified node is an ancestor.public boolean isNodeChild(TreeNode aNode)
aNode is a child of this node. If
aNode is null, this method returns false.
aNode - The node to check.
true if aNode is a child of this node;
false if aNode is nullpublic boolean isNodeDescendant(DefaultMutableTreeNode anotherNode)
anotherNode is a descendant of this node --
if it is this node, one of this node's children, or a descendant of one
of this node's children. Note that a node is considered a descendant of
itself. If anotherNode is null, returns false. This
operation is at worst O(h) where h is the distance from the root to
anotherNode.
anotherNode - The node to check.
true is the node is a descendent of this node.public boolean isNodeRelated(DefaultMutableTreeNode aNode)
aNode is in the same tree as
this node. Returns false if aNode is null.
aNode - The node to check.
true if the node is in the same tree.public boolean isNodeSibling(TreeNode anotherNode)
anotherNode is a sibling of (has the same
parent as) this node. A node is its own sibling. If
anotherNode is null, returns false.
anotherNode - node to test as sibling of this node
anotherNode is a sibling of this nodepublic boolean isRoot()
public Enumeration<TreeNode> pathFromAncestorEnumeration(TreeNode ancestor)
ancestor to this node. The enumeration's
nextElement() method first returns ancestor,
then the child of ancestor that is an ancestor of this node,
and so on, and finally returns this node. Creation of the enumeration is
O(m) where m is the number of nodes between this node and
ancestor, inclusive. Each nextElement() message
is O(1).
Modifying the tree by inserting, removing, or moving a node invalidates
any enumerations created before the modification.
ancestor - The ancestor node from which the path is to be generated.
public Enumeration<TreeNode> postorderEnumeration()
nextElement() method is the leftmost leaf. This is the same
as a depth-first traversal.
Modifying the tree by inserting, removing, or moving a node invalidates
any enumerations created before the modification.
public Enumeration<TreeNode> preorderEnumeration()
nextElement() method is this node.
Modifying the tree by inserting, removing, or moving a node invalidates
any enumerations created before the modification.
public void remove(int childIndex)
MutableTreeNode.
remove in interface MutableTreeNode<M>childIndex - the index in this node's child array of the child to
remove
ArrayIndexOutOfBoundsException - if childIndex is out
of boundspublic void remove(MutableTreeNode aChild)
aChild from this node's child array, giving it a
null parent.
remove in interface MutableTreeNode<M>aChild - a child of this node to remove
IllegalArgumentException - if aChild is null or is not
a child of this nodepublic void removeAllChildren()
public void removeFromParent()
removeFromParent in interface MutableTreeNode<M>public void setActionCommand(String newActionCommand)
newActionCommand
newActionCommand - this node's new action commandpublic void setAllowsChildren(boolean allows)
allows is false, all of this node's children are removed.
Note: By default, a node allows children.
allows - true if this node is allowed to have childrenpublic void setParent(MutableTreeNode newParent)
newParent but does not change the
parent's child array. This method is called from insert()
and remove() to reassign a child's parent, it should not be
messaged from anywhere else.
setParent in interface MutableTreeNode<M>newParent - this node's new parentpublic void setUserObject(M userObject)
userObject.
setUserObject in interface MutableTreeNode<M>userObject - The user object of the receiverpublic String toString()
toString() to this node's user
object, or null if this node has no user object.
toString in class Object
|
EchoPoint API - 3.0.0b5 App Webcontainer |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||