blob: a064decb6ce24b9a61486eb22180883fce9aa54f (
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
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
142
|
package NET.worlds.scape;
import NET.worlds.console.TreeNode;
import java.util.Enumeration;
import java.util.Vector;
class PropTreeNode extends TreeNode {
private Object obj;
private boolean allowSorting = true;
public PropTreeNode(Object obj) {
super(null);
this.obj = obj;
assert obj != null;
}
public PropTreeNode(Object obj, TreeNode parent) {
super(parent);
this.obj = obj;
assert obj != null;
}
@Override
public boolean shouldSort() {
return this.allowSorting;
}
@Override
public Vector getChildren() {
Vector ret = null;
Object obj = this.obj;
if (obj instanceof VectorProperty) {
VectorProperty vp = (VectorProperty)obj;
this.allowSorting = vp.shouldSort();
ret = new Vector();
Vector v = (Vector)vp.get();
if (v != null) {
int count = v.size();
for (int i = 0; i < count; i++) {
Object child = v.elementAt(i);
if (child == null) {
System.out.println("Error: VectorProperty " + vp.getName() + " of " + vp.getOwner() + " was null.");
} else {
ret.addElement(new PropTreeNode(child, this));
}
}
}
} else {
if (obj instanceof Property) {
obj = ((Property)obj).get();
}
if (obj instanceof Properties) {
ret = new Vector();
Enumeration e = new EnumProperties(obj);
while (e.hasMoreElements()) {
Property p = (Property)e.nextElement();
if (p instanceof VectorProperty || p.getEditor() == null && p.get() instanceof Properties) {
ret.addElement(new PropTreeNode(p, this));
}
}
}
}
return ret;
}
@Override
public Object getObject() {
return this.obj;
}
@Override
public boolean displayAsTitle() {
return this.obj instanceof VectorProperty || this.obj instanceof Property;
}
public boolean canEdit() {
return false;
}
public VectorProperty getContainingVectorProperty() {
Object obj = this.obj;
TreeNode e = this.getParent();
return !(obj instanceof VectorProperty) && (e == null || !((obj = e.getObject()) instanceof VectorProperty)) ? null : (VectorProperty)obj;
}
public PropAdder getAdder() {
VectorProperty vec = this.getContainingVectorProperty();
return vec != null ? vec.getAdder() : null;
}
public String getContainerName() {
return this.getContainingVectorProperty().getName();
}
public boolean canAdd() {
PropAdder adder = this.getAdder();
return adder != null && adder.hasAddDialog();
}
public boolean canDelete() {
TreeNode e = this.getParent();
Object obj;
Object var3;
return e != null
&& (
(obj = e.getObject()) instanceof VectorProperty && ((VectorProperty)obj).getAdder() != null
|| (var3 = this.getObject()) instanceof Property && ((Property)var3).canSetNull() && ((Property)var3).get() != null
);
}
public Undoable delete(boolean isCut) {
assert this.canDelete();
Object o = this.getParent().getObject();
if (o instanceof VectorProperty) {
VectorProperty owner = (VectorProperty)o;
Vector v = (Vector)owner.get();
int i = v.indexOf(this.obj);
assert i != -1;
return (Undoable)(isCut ? new UndoablCut(owner, i) : new UndoablDelete(owner, i));
} else {
return new UndoablSet((Property)this.getObject(), null);
}
}
@Override
public String toString() {
if (this.obj instanceof SuperRoot) {
return ((SuperRoot)this.obj).getName();
} else {
return this.obj instanceof Property ? ((Property)this.obj).getName() : this.obj.toString();
}
}
}
|