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 package org.ximtec.igesture.tool.explorer;
28
29 import java.util.HashMap;
30 import java.util.List;
31 import java.util.Map;
32
33 import javax.swing.event.TreeModelListener;
34 import javax.swing.tree.TreeModel;
35 import javax.swing.tree.TreePath;
36
37 import org.ximtec.igesture.tool.explorer.core.NodeInfo;
38
39
40
41
42
43
44
45
46
47
48 public class ExplorerTreeModel implements TreeModel {
49
50
51
52
53 private Object rootElement;
54
55
56
57
58 private Map<Class< ? >, NodeInfo> nodeInfos;
59
60
61
62
63
64
65
66 public ExplorerTreeModel(Object rootElement,
67 Map<Class< ? >, NodeInfo> nodeInfos) {
68 this.rootElement = rootElement;
69 this.nodeInfos = nodeInfos;
70 }
71
72
73
74
75
76
77 public ExplorerTreeModel(Object rootElement, List<NodeInfo> nodeInfos){
78 this(rootElement, createNodeInfoMap(nodeInfos));
79 }
80
81
82
83
84
85
86
87
88 private static Map<Class<?>, NodeInfo> createNodeInfoMap(List<NodeInfo> nodeInfos){
89 Map<Class<?>, NodeInfo> nodeInfoMap = new HashMap<Class<?>, NodeInfo>();
90 for(NodeInfo nodeInfo:nodeInfos){
91 nodeInfoMap.put(nodeInfo.getType(), nodeInfo);
92 }
93 return nodeInfoMap;
94 }
95
96
97 @Override
98 public Object getChild(Object node, int index) {
99 NodeInfo nodeInfo = nodeInfos.get(node.getClass());
100 return nodeInfo.getChildren(node).get(index);
101 }
102
103
104 @Override
105 public int getChildCount(Object node) {
106 NodeInfo nodeInfo = nodeInfos.get(node.getClass());
107 return nodeInfo.getChildren(node).size();
108 }
109
110
111 @Override
112 public int getIndexOfChild(Object node, Object child) {
113 NodeInfo nodeInfo = nodeInfos.get(node.getClass());
114 return nodeInfo.getChildren(node).indexOf(child);
115 }
116
117
118 @Override
119 public Object getRoot() {
120 return rootElement;
121 }
122
123
124 @Override
125 public boolean isLeaf(Object node) {
126 NodeInfo nodeInfo = nodeInfos.get(node.getClass());
127 if(nodeInfo != null){
128 return nodeInfo.isLeaf(node);
129 }
130 return true;
131 }
132
133
134 @Override
135 public void addTreeModelListener(TreeModelListener arg0) {
136
137 }
138
139
140 @Override
141 public void removeTreeModelListener(TreeModelListener arg0) {
142
143 }
144
145
146 @Override
147 public void valueForPathChanged(TreePath arg0, Object arg1) {
148
149 }
150
151 public Map<Class<?>, NodeInfo> getNodeInfos(){
152 return nodeInfos;
153 }
154
155 }