source: vanHelsing/trunk/gui/src/de/dass_it/vanhelsing/gui/DataTree.java@ 871

Last change on this file since 871 was 871, checked in by tobias, on May 10, 2010 at 7:42:51 PM

additional clients can be added to the configuration

File size: 6.6 KB
Line 
1package de.dass_it.vanhelsing.gui;
2
3import java.util.ArrayList;
4import java.util.Enumeration;
5import java.util.HashMap;
6
7import javax.faces.model.SelectItem;
8import javax.swing.tree.DefaultMutableTreeNode;
9import javax.swing.tree.DefaultTreeModel;
10import de.dass_it.vanhelsing.gui.items.ConcreteUserObjectItem;
11import de.dass_it.vanhelsing.gui.items.UserObjectItem;
12import de.dass_it.vanhelsing.gui.items.UserObjectItemType;
13/**
14 * DataTree contains the data tree of a navigation view and the method used by the view regarding the data tree
15 * @author tgoecke
16 */
17//TODO: labeling schema for header nodes
18public class DataTree {
19 private DefaultTreeModel tree;
20 private DefaultMutableTreeNode root;
21 private HashMap<String, SelectItem[]> keyValueList;
22
23 public DataTree() {}
24 /**
25 * creates a new data tree and sets the name value of the root node to the value of argument name
26 * @param name label of the root node
27 */
28 public void setTree(String name){
29 setRoot(new DefaultMutableTreeNode());
30 setTree(new DefaultTreeModel(getRoot()));
31 UserObjectItemType userType = new UserObjectItemType(getRoot());
32 ConcreteUserObjectItem obj = new ConcreteUserObjectItem();
33 getRoot().setUserObject(userType);
34 userType.setUserObject(obj);
35 userType.setLeaf(false);
36 obj.setResName(name);
37 }
38
39 /**
40 * creates a tree node as a child to the parent node containing the given UserObectItem
41 * @param parent root node of the created tree node
42 * @param userObject a user object which implements the UserObjectItem interface, usually a resource type object
43 * @return returns the created node object
44 */
45 public DefaultMutableTreeNode createNode(DefaultMutableTreeNode parent, UserObjectItem userObject){
46 DefaultMutableTreeNode node = new DefaultMutableTreeNode();
47 UserObjectItemType uoit = new UserObjectItemType(node);
48 node.setUserObject(uoit);
49 uoit.setUserObject(userObject);
50 parent.add(node);
51 ((UserObjectItemType)parent.getUserObject()).setLeaf(false);
52 return node;
53 }
54
55 /**
56 * replace a tree nodes UserObject
57 * @param node node object whose userObject will be updated
58 * @param userObject new UserObject to replace the nodes current UserObject
59 */
60 public void updateNode(DefaultMutableTreeNode node, UserObjectItem userObject){
61 ((UserObjectItemType)node.getUserObject()).setUserObject(userObject);
62 }
63
64 /**
65 * retrieves a node by the value of the UserObjects resId
66 * @param id value to be matched by the returned object
67 * @return first node whose UserObject attribute resId matches the argument id
68 */
69 public DefaultMutableTreeNode getNodeById(int id){
70 DefaultMutableTreeNode node;
71 int resId = new Integer(id);
72 Enumeration<DefaultMutableTreeNode> e = root.depthFirstEnumeration();
73
74 while (e.hasMoreElements()){
75 node = e.nextElement();
76 if (resId ==((ConcreteUserObjectItem)(((UserObjectItemType)node.getUserObject()).
77 getUserObject())).getResId()) {
78 return node;
79 }
80 }
81 return null;
82 }
83
84 /**
85 * retrieves a node by the value of the UserObjects resName
86 * @param name string value to be matched by the returned object
87 * @return first node whose UserObject attribute matches the argument name
88 */
89 public DefaultMutableTreeNode getNodeByName(String name){
90 DefaultMutableTreeNode node;
91 Enumeration<DefaultMutableTreeNode> e = root.depthFirstEnumeration();
92
93 while (e.hasMoreElements()){
94 node = e.nextElement();
95 if (name.equals(((ConcreteUserObjectItem)(((UserObjectItemType)node.getUserObject())
96 .getUserObject())).getResName())) {
97 return node;
98 }
99 }
100 return null;
101 }
102
103 /**
104 * deletes the given node from the data tree
105 * @param node the node which is deleted by this operation
106 * @return node the deleted node
107 * @throws ConstraintViolationException if the node has child nodes
108 */
109 public DefaultMutableTreeNode deleteNode(DefaultMutableTreeNode node) throws ConstraintViolationException{
110 if (node.getChildCount()>0) throw new ConstraintViolationException();
111 DefaultMutableTreeNode parent = (DefaultMutableTreeNode) node.getParent();
112 parent.remove(node);
113 return node;
114 }
115 /**
116 * creates all key-Value-lists by traversing the data tree object
117 */
118 public void createKeyValueLists(){
119 DefaultMutableTreeNode parent;
120 DefaultMutableTreeNode node;
121 ConcreteUserObjectItem userObject;
122 SelectItem[] selItems;
123 String key;
124 keyValueList = new HashMap<String, SelectItem[]>();
125 parent = (DefaultMutableTreeNode)tree.getRoot();
126
127 //create true false selectItem array for use with radio groups
128 selItems = new SelectItem[2];
129 selItems[0] = new SelectItem("true", "true");
130 selItems[1] = new SelectItem("false", "false");
131 keyValueList.put("trueFalse", selItems);
132
133 for (int i = 0; i < parent.getChildCount(); i++){
134 node = (DefaultMutableTreeNode)parent.getChildAt(i);
135 selItems = new SelectItem[node.getChildCount()];
136 for (int j = 0; j < node.getChildCount(); j++){
137 userObject = (ConcreteUserObjectItem)((UserObjectItemType)((DefaultMutableTreeNode)node.getChildAt(j)).getUserObject()).getUserObject();
138 selItems[j] = new SelectItem(userObject.getResName(), userObject.getResName());
139 }
140 if (selItems.length > 0){
141 key = ((ConcreteUserObjectItem)((UserObjectItemType)node.getUserObject()).getUserObject()).getResName();
142 keyValueList.put(key.toLowerCase(), selItems);
143 }
144 }
145 }
146 public SelectItem[] getSelectItem(String type){
147 return keyValueList.get(type);
148 }
149 public DefaultMutableTreeNode getRoot(){
150 return root;
151 }
152 public void setRoot(DefaultMutableTreeNode root){
153 this.root = root;
154 }
155 public DefaultTreeModel getTree() {
156 return tree;
157 }
158 public void setTree(DefaultTreeModel tree) {
159 this.tree = tree;
160 }
161
162 public void setKeyValueList(HashMap<String, SelectItem[]> keyValueList){
163 this.keyValueList = keyValueList;
164 }
165 public HashMap<String, SelectItem[]> getKeyValueList(){
166 return keyValueList;
167 }
168
169 public void updateUserObjects(){
170
171 DefaultMutableTreeNode parent;
172 DefaultMutableTreeNode node;
173 parent = (DefaultMutableTreeNode)tree.getRoot();
174 ArrayList<ViewItem> viList;
175
176 for(int i = 0; i < parent.getChildCount(); i++){
177 node = (DefaultMutableTreeNode)parent.getChildAt(i);
178 for (int j = 0; j < node.getChildCount(); j++){
179 viList = ((ConcreteUserObjectItem)((UserObjectItemType)((DefaultMutableTreeNode)node.getChildAt(j))
180 .getUserObject()).getUserObject()).getViewItemList();
181 if (viList != null) {
182 for (ViewItem vi : viList){
183 if (vi.getSelectOneMenu()){
184 vi.setKeyValueList(keyValueList.get(vi.getKey().toLowerCase()));
185 }
186 if (vi.getRadioGroup()){
187 vi.setKeyValueList(keyValueList.get("trueFalse"));
188 System.err.println("Key: " + vi.getKey() +" ");
189 }
190 }
191 }
192 }
193 }
194 }
195
196}
Note: See TracBrowser for help on using the repository browser.