/
TreeItem.java
141 lines (113 loc) · 3.84 KB
/
TreeItem.java
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package de.lessvoid.nifty.controls;
import de.lessvoid.nifty.render.NiftyImage;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author ractoc
*/
public class TreeItem<T> {
private List<TreeItem<T>> treeNodes = new ArrayList<TreeItem<T>>();
private TreeItem<T> parentItem;
private boolean expanded;
private T value;
private String displayCaption;
private NiftyImage displayIconCollapsed;
private NiftyImage displayIconExpanded;
public TreeItem(TreeItem<T> parentItem, T value, String displayCaption, NiftyImage displayIconCollapsed, NiftyImage displayIconExpanded, boolean expanded) {
this.parentItem = parentItem;
this.expanded = expanded;
this.value = value;
this.displayCaption = displayCaption;
this.displayIconCollapsed = displayIconCollapsed;
this.displayIconExpanded = displayIconExpanded;
}
public TreeItem(TreeItem<T> parentItem, T value, String displayCaption, NiftyImage displayIconCollapsed, NiftyImage displayIconExpanded) {
this(parentItem, value, displayCaption, displayIconCollapsed, displayIconExpanded, false);
}
public TreeItem(TreeItem<T> parentItem, T value, String displayCaption, NiftyImage displayIcon, boolean expanded) {
this(parentItem, value, displayCaption, displayIcon, null, expanded);
}
public TreeItem(TreeItem<T> parentItem, T value, String displayCaption, NiftyImage displayIcon) {
this(parentItem, value, displayCaption, displayIcon, null, false);
}
public TreeItem() {
this(null, null, "Root", null, null, true);
}
public void addTreeItem(TreeItem<T> item) {
treeNodes.add(item);
}
public void addTreeItems(List<TreeItem<T>> items) {
treeNodes.addAll(items);
}
public List<TreeItem<T>> getTreeItems() {
return treeNodes;
}
public T getValue() {
return value;
}
public void setValue(T value) {
this.value = value;
}
public TreeItem<T> getParentItem() {
return parentItem;
}
public void setParentItem(TreeItem<T> parentItem) {
this.parentItem = parentItem;
}
public boolean isExpanded() {
return expanded;
}
public void setExpanded(boolean expanded) {
this.expanded = expanded;
}
public String getDisplayCaption() {
return displayCaption;
}
public void setDisplayCaption(String displayCaption) {
this.displayCaption = displayCaption;
}
public NiftyImage getDisplayIconCollapsed() {
return displayIconCollapsed;
}
public void setDisplayIconCollapsed(NiftyImage displayIconCollapsed) {
this.displayIconCollapsed = displayIconCollapsed;
}
public NiftyImage getDisplayIconExpanded() {
return displayIconExpanded;
}
public void setDisplayIconExpanded(NiftyImage displayIconExpanded) {
this.displayIconExpanded = displayIconExpanded;
}
public boolean findAncestor(TreeItem<T> ancestor) {
if (this.equals(ancestor)) {
return true;
} else if(this.displayCaption.equals("Root")) {
return false;
}else {
return parentItem.findAncestor(ancestor);
}
}
public boolean contains(TreeItem<T> child) {
if (!isExpanded()) {
return false;
} else if (treeNodes.contains(child)) {
return true;
} else {
for (TreeItem<T> item : treeNodes) {
boolean found = item.contains(child);
if (found) {
return true;
}
}
return false;
}
}
public boolean isLeaf() {
return treeNodes == null || treeNodes.size() <= 0;
}
}