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

Last change on this file since 868 was 868, checked in by tobias, on May 3, 2010 at 7:12:46 PM

configurationView moved to new DataTree class.
implemented selectOneMenu on DataTree

File size: 5.7 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 public void createKeyValueLists(){
117 DefaultMutableTreeNode parent;
118 DefaultMutableTreeNode node;
119 ConcreteUserObjectItem userObject;
120 SelectItem[] selItems;
121 String key;
122 parent = (DefaultMutableTreeNode)tree.getRoot();
123 for (int i = 0; i < parent.getChildCount(); i++){
124 node = (DefaultMutableTreeNode)parent.getChildAt(i);
125 selItems = new SelectItem[node.getChildCount()];
126 for (int j = 0; j < node.getChildCount(); j++){
127 userObject = (ConcreteUserObjectItem)((DefaultMutableTreeNode)node.getChildAt(j)).getUserObject();
128 selItems[j] = new SelectItem(userObject.getResName(), userObject.getResName());
129 }
130 key = ((ConcreteUserObjectItem)((DefaultMutableTreeNode)node.getChildAt(i)).getUserObject()).getResType();
131 keyValueList.put(key, selItems);
132 }
133 }
134 public SelectItem[] getSelectItem(String type){
135 return keyValueList.get(type);
136 }
137 public DefaultMutableTreeNode getRoot(){
138 return root;
139 }
140 public void setRoot(DefaultMutableTreeNode root){
141 this.root = root;
142 }
143 public DefaultTreeModel getTree() {
144 return tree;
145 }
146 public void setTree(DefaultTreeModel tree) {
147 this.tree = tree;
148 }
149 public void updateUserObjects(){
150 DefaultMutableTreeNode parent;
151 DefaultMutableTreeNode node;
152 parent = (DefaultMutableTreeNode)tree.getRoot();
153 ArrayList<ViewItem> viList;
154 for(int i = 0; i < parent.getChildCount(); i++){
155 node = (DefaultMutableTreeNode)parent.getChildAt(i);
156 for (int j = 0; j < node.getChildCount(); j++){
157 viList = ((ConcreteUserObjectItem)((UserObjectItemType)node.getUserObject()).getUserObject()).getViewItemList();
158 for (ViewItem vi : viList){
159 if (vi.getRenderer().equals("selectOneMenu")){
160 vi.setKeyValueList(keyValueList.get(vi.getResType()));
161 }
162 }
163 }
164 }
165 }
166
167
168}
Note: See TracBrowser for help on using the repository browser.