package NET.worlds.console; import java.util.Vector; public abstract class TreeNode { private int level; private TreeNode parent; private boolean isOpen; protected TreeNode(TreeNode parent) { this.parent = parent; if (parent != null) { this.level = parent.getLevel() + 1; } } public int getLevel() { return this.level; } public TreeNode getParent() { return this.parent; } public boolean isDescendant(TreeNode e) { while (e != null) { if ((e = e.getParent()) == this) { return true; } } return false; } public boolean isOpen() { return this.isOpen; } public void setOpen(boolean isOpen) { this.isOpen = isOpen; } public boolean displayAsTitle() { return false; } @Override public boolean equals(Object obj) { return obj instanceof TreeNode && this.getObject().equals(((TreeNode)obj).getObject()); } @Override public int hashCode() { return this.getObject().hashCode(); } public abstract Vector getChildren(); public boolean shouldSort() { return true; } public abstract Object getObject(); }