summaryrefslogtreecommitdiff
path: root/NET/worlds/console/TreeNode.java
blob: f424f12486e5ffdc558d315cb48f6ff4d68013ec (plain) (blame)
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
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();
}