package org.robotframework.swing.testapp;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JTree;
import javax.swing.event.TreeModelListener;
import javax.swing.tree.TreeModel;
import javax.swing.tree.TreePath;
public class TreeWithoutTreeNode extends JTree {
private static Node root =
new Node("root",
new Node("node1"),
new Node("node2"),
new Node("node3",
new Node("node4"),
new Node("node5",
new Node("node6")
)
),
new Node("node7")
);
public TreeWithoutTreeNode() {
super(new MyTreeModel(root));
setName("otherTree");
}
}
class MyTreeModel implements TreeModel {
private final Node root;
MyTreeModel(Node root) {
this.root = root;
}
public Object getChild(Object parent, int index) {
return ((Node)parent).getChild(index);
}
public int getChildCount(Object parent) {
return ((Node)parent).getChildCount();
}
public int getIndexOfChild(Object parent, Object child) {
return ((Node)parent).indexOf(child);
}
public Object getRoot() {
return root;
}
public boolean isLeaf(Object node) {
return ((Node)node).isLeaf();
}
public void addTreeModelListener(TreeModelListener l) {}
public void removeTreeModelListener(TreeModelListener l) {}
public void valueForPathChanged(TreePath path, Object newValue) {}
}
class Node {
private List<Node> childNodes = new ArrayList<Node>();
private final String name;
public Node(String name) {
this.name = name;
}
public Node(String name, Node... children) {
this(name);
for (Node node : children) {
childNodes.add(node);
}
}
public Node getChild(int index) {
return childNodes.get(index);
}
public int getChildCount() {
return childNodes.size();
}
public int indexOf(Object child) {
return childNodes.indexOf(child);
}
public boolean isLeaf() {
return childNodes.isEmpty();
}
@Override
public String toString() {
return name;
}
}