1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| /**
* Return a list of all nodes found in the tree.
* All nodes should be of {@link TreeNode} type or
* there will be a {@link ClassCastException}.
*
* @param tree The tree.
* @return The list of {@link TreeNode}.
*/
public static List<TreeNode> getAllNodes(JTree tree) {
List<TreeNode> nodes = new ArrayList<TreeNode>();
TreeNode root = (TreeNode) tree.getModel().getRoot();
nodes.add(root);
appendAllChildrenToList(nodes, root, true);
return nodes;
}
/**
* Return a list of all nodes that are child, grand-child, etc...
* of the given {@link TreeNode}.
* All nodes should be of {@link TreeNode} type or
* there will be a {@link ClassCastException}.
*
* @param node The parent node.
* @return The list of {@link TreeNode}.
*/
public static List<TreeNode> getAllNodes(TreeNode node) {
return getAllNodes(node, true);
}
/**
* Return a list of all nodes that are child, grand-child, etc...
* of the given {@link TreeNode}.
* All nodes should be of {@link TreeNode} type or
* there will be a {@link ClassCastException}.
*
* @param node The parent node.
* @param getChildChildren <code>true</code> if children of each child should be taken too.
* @return The list of {@link TreeNode}.
*/
public static List<TreeNode> getAllNodes(TreeNode node, boolean getChildChildren) {
List<TreeNode> nodes = new ArrayList<TreeNode>();
appendAllChildrenToList(nodes, node, getChildChildren);
return nodes;
}
/**
* Append all children of <code>parent</code> to the <code>nodes</code> list.
*
* @param nodes The list to append on.
* @param parent The parent node.
* @param getChildChildren <code>true</code> if children of each child should be taken too.
*/
private static void appendAllChildrenToList(List<TreeNode> nodes, TreeNode parent, boolean getChildChildren) {
Enumeration children = parent.children();
if (children != null) {
while (children.hasMoreElements()) {
TreeNode node = (TreeNode) children.nextElement();
nodes.add(node);
if (getChildChildren) {
appendAllChildrenToList(nodes, node, getChildChildren);
}
}
}
} |
Partager