source: vanHelsing/trunk/gui/src/de/dass_it/vanhelsing/gui/TreeNavigation.java@ 859

Last change on this file since 859 was 859, checked in by tobias, on Apr 9, 2010 at 6:02:36 PM

messages resource validation added

File size: 8.1 KB
RevLine 
[830]1package de.dass_it.vanhelsing.gui;
[831]2
[832]3//import org.apache.log4j.Logger;
[844]4import java.lang.reflect.Method;
[848]5import java.util.Enumeration;
[844]6
[831]7import javax.swing.tree.DefaultTreeModel;
8import javax.swing.tree.DefaultMutableTreeNode;
9import de.dass_it.vanhelsing.gui.items.*;
[844]10import de.dass_it.www.vanhelsing.*;
11import de.dass_it.www.vanhelsing.VanHelsingCallbackHandler.*;
12import de.dass_it.www.vanhelsing.VanHelsingStub.*;
[831]13
[830]14/*
[844]15 * Helper class to encapsulate all procedures
16 * to work with the tree structure.
[830]17 */
18public class TreeNavigation extends BeanUtil {
[831]19 private DefaultTreeModel tree;
[832]20 //private Logger logger = Logger.getLogger(this.getClass());
[844]21 public DefaultTreeModel createTree(DefaultMutableTreeNode root,
22 String[] nodes, String title){
[831]23
[844]24 DefaultMutableTreeNode node;
25 DefaultMutableTreeNode myNode;
[831]26 tree = new DefaultTreeModel(root);
[844]27 UserObjectItemType item = new UserObjectItemType(root);
[854]28 item.setLeaf(false);
[856]29 item.setExpanded(true);
[844]30 UserObjectItem uoi = new TreeItem("Configuration");
31 uoi.setResType("Tree");
[858]32 item.setUserObject(uoi);
[844]33 root.setUserObject(item);
34
[831]35 for(int i = 0; i< nodes.length; i++){
[844]36 //root.add(addNode(root, "Tree", nodes[i]));
37 myNode = null;
38 myNode = addNode(root, nodes[i], nodes[i]);
39 if (myNode != null){
40 root.add(myNode);
41 }
[831]42 }
43 return tree;
44 }
45
[844]46 public DefaultMutableTreeNode addNode(DefaultMutableTreeNode parent, String type, String title){
[831]47 DefaultMutableTreeNode node = new DefaultMutableTreeNode();
[844]48 Class subClass;
49 Class myClass;
50 Method[] methods;
51 Object o;
[831]52 UserObjectItemType userObject = new UserObjectItemType(node);
[854]53 userObject.setLeaf(false);
[844]54 String type2 = "de.dass_it.vanhelsing.gui.items." + type + "Item";
55
[831]56 try {
[844]57 subClass = Class.forName(type2);
58 o = subClass.newInstance();
59 UserObjectItem item = (UserObjectItem) o;
60 item.setResType(type);
61 myClass = item.getClass().asSubclass(subClass);
62 methods = myClass.getMethods();
63 for (Method m : methods){
[846]64 //System.err.println(m.getName());
[844]65 if(m.getName().contains("setValue")){
66 m.invoke(item, title);
67 }
68 }
69 //ItemObjekt erzeugen und an das UserObjekt referenzieren
[858]70 userObject.setUserObject((UserObjectItem)o);
[844]71 //Eine Referenz auf das UserObjekt wird an das Nodeobjekt übergeben
72 node.setUserObject(userObject);
73 return node;
74 } catch (ClassNotFoundException e1){
75 System.err.println("Itemclass "+ type2 +" must be in the classpath");
76 } catch (InstantiationException e2){
77 System.err.println("Class "+type2+" must be a concrete class, not an interface or an abstract class");
78 } catch (IllegalAccessException e3){
79 System.err.println("Class " + type2 + " lacks a no-argument constructor");
80 } catch (Exception e){
[847]81 System.err.println("addHeader: " + e.toString());
[831]82 }
[844]83
84 return null;
[831]85 }
[844]86 public DefaultMutableTreeNode addNode(DefaultMutableTreeNode parent, String type, ResourceInfo ri){
87 DefaultMutableTreeNode node = new DefaultMutableTreeNode();
88 Class subClass;
89 Class myClass;
90 Method[] riMethods;
91 Method[] methods;
92 Object o;
93 UserObjectItemType userObject = new UserObjectItemType(node);
94 String type2 = "de.dass_it.vanhelsing.gui.items." + type + "Item";
95
96 try {
97 subClass = Class.forName(type2);
98 o = subClass.newInstance();
99 UserObjectItem item = (UserObjectItem) o;
100 item.setResType(type);
101 myClass = item.getClass().asSubclass(subClass);
102 methods = myClass.getMethods();
103 ;
104 /*for (Method m : methods){
105 if(m.getName().contains("set" + p)){
106 m.invoke(item, title);
107 }
108 }*/
109 for (Method n : ri.getClass().getDeclaredMethods()){
110 if (n.getName().startsWith("get")
111 && !(n.getName().contains("OMElement") || n.getName().contains("PullParser"))){
112
[846]113 //System.err.println("Name: " + n.getName() +" Feld: "+ n.getName().substring(3));
[844]114 for (Method m : methods){
115 if (m.getName().equals("set"+n.getName().substring(3))){
116 m.invoke(item, n.invoke(ri, (Object[])null));
[846]117 break;
[844]118 }
119 }
120
121
122 }
123
124 }
[846]125 //Value-Wert für die TreeView übertragen
126 ((ItemType)o).setValue(((ItemType)o).getResName());
[844]127 //ItemObjekt erzeugen und an das UserObjekt referenzieren
[858]128 userObject.setUserObject((UserObjectItem)o);
[844]129 //Eine Referenz auf das UserObjekt wird an das Nodeobjekt übergeben
130 node.setUserObject(userObject);
131 return node;
132 } catch (ClassNotFoundException e1){
133 System.err.println("Itemclass "+ type2 +" must be in the classpath");
134 } catch (InstantiationException e2){
135 System.err.println("Class "+type2+" must be a concrete class, not an interface or an abstract class");
136 } catch (IllegalAccessException e3){
137 System.err.println("Class " + type2 + " lacks a no-argument constructor");
138 } catch (Exception e){
[847]139 System.err.println("RI: " + e.toString());
[844]140 }
141
142 return null;
143 }
[848]144 public DefaultMutableTreeNode addNode(DefaultMutableTreeNode parent, String type, ResourceAttributeType[] ra){
[849]145
146 //DefaultMutableTreeNode node = new DefaultMutableTreeNode();
[847]147 Class subClass;
148 Class myClass;
149 Method[] raMethods;
150 Method[] methods;
151 Object o;
[849]152 //UserObjectItemType userObject = new UserObjectItemType(node);
[847]153 String type2 = "de.dass_it.vanhelsing.gui.items." + type + "Item";
154 String key = null, value = null;
155 try {
156 subClass = Class.forName(type2);
157 o = subClass.newInstance();
[849]158 UserObjectItem item = ((UserObjectItemType)parent.getUserObject()).getUserObject();
159 //item.setResType(type);
[847]160 myClass = item.getClass().asSubclass(subClass);
161 methods = myClass.getMethods();
162 Method m;
[849]163 Method n;
[847]164 Class[] args = new Class[1];
165 args[0] = String.class;
[848]166 for(ResourceAttributeType rat : ra){
[849]167 /*for (Method n : rat.getClass().getDeclaredMethods()){
[848]168 if (n.getName().equals("getKey")) {
169 key = (String)(n.invoke(rat, (Object[])null));
170 }
171 if (n.getName().equals("getValue")){
172 value = (String)(n.invoke(rat, (Object[])null));
173
174 }
175
[849]176 }*/
177 n = (rat.getClass().getMethod("getKey", (Class[])null));
178 key = (String)n.invoke(rat, (Object[])null);
179 n = (rat.getClass().getMethod("getValue", (Class[])null));
180 value = (String)n.invoke(rat, (Object[])null);
181
[848]182 if(!(key.isEmpty() && value.isEmpty())){
183 key = key.replaceAll(" ", "");
[858]184 key = key.toLowerCase();
[848]185 key = key.replaceFirst(new Character(key.charAt(0)).toString(),
186 new Character(Character.toUpperCase(key.charAt(0))).toString());
187 m = myClass.getMethod(("set"+key), args);
188 m.invoke(item, value);
[849]189 /*if(m.getName().equals("getName") || m.getName().equals("setName")){
[848]190 ((ItemType)o).setValue(key + ": " + value);
[849]191 }*/
[848]192
[847]193 }
194 }
195
196
197
198
199 //Value-Wert aus Key: Value zusammenbauen
200
201 //ItemObjekt erzeugen und an das UserObjekt referenzieren
[849]202 //userObject.setUserObjectItem((UserObjectItem)o);
[847]203 //Eine Referenz auf das UserObjekt wird an das Nodeobjekt übergeben
[849]204 //node.setUserObject(userObject);
[847]205 //System.out.println(((ItemType)((UserObjectItem)(node.getUserObject()))).getResId());
[849]206 return parent;
[847]207 } catch (ClassNotFoundException e1){
208 System.err.println("Itemclass "+ type2 +" must be in the classpath");
209 } catch (InstantiationException e2){
210 System.err.println("Class "+type2+" must be a concrete class, not an interface or an abstract class");
211 } catch (IllegalAccessException e3){
212 System.err.println("Class " + type2 + " lacks a no-argument constructor");
213 } catch (Exception e){
214 System.err.println("Leaf: " + e.toString());
215 }
216
217 return null;
[848]218 }
219 public DefaultMutableTreeNode getNode(String id, DefaultTreeModel tree){
220 DefaultMutableTreeNode root;
221 DefaultMutableTreeNode node;
222 int resId = new Integer(id);
223 root = (DefaultMutableTreeNode)tree.getRoot();
224 Enumeration<DefaultMutableTreeNode> e = root.depthFirstEnumeration();
225
226 while (e.hasMoreElements()){
227 node = e.nextElement();
228 if (resId ==((ItemType)(((UserObjectItemType)node.getUserObject()).getUserObject())).getResId()) {
229 return node;
230 }
[858]231
232
[848]233 }
234 return null;
235 }
236 public UserObjectItem getNodeObject(String id, DefaultTreeModel tree){
237 DefaultMutableTreeNode node = getNode(id, tree);
238 return (UserObjectItem)((UserObjectItem)(node.getUserObject()));
239 }
[830]240}
Note: See TracBrowser for help on using the repository browser.