Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: com/arranger/jarl/shell/views/JarlObjectViewTree.java


1   package com.arranger.jarl.shell.views;
2   
3   import com.arranger.jarl.Jarl;
4   import com.arranger.jarl.widget.IWidget;
5   import com.arranger.jarl.base.IJarlObject;
6   import com.arranger.jarl.base.IJarlObjectCollection;
7   import com.arranger.jarl.base.IJarlObjectInfo;
8   import com.arranger.jarl.util.JarlInfoUtil;
9   import com.arranger.jarl.util.StringTools;
10  import com.arranger.jarl.util.IWidgetConfigSegmentFactory;
11  import com.arranger.jarl.util.WidgetConfigSegment;
12  
13  import javax.swing.tree.TreeNode;
14  import java.util.*;
15  
16  import org.w3c.dom.Element;
17  
18  /**
19   * JarlObjectViewTree created on Apr 17, 2003
20   */
21  public class JarlObjectViewTree {
22  
23      public static final String STROKE_DEFS = "Stroke Defintions";
24      public static final String TRAIT_DEFS = "Trait Defintions";
25      public static final String WIDGET_DEFS = "Widget Defintions";
26      public static final String FILTER_DEFS = "Filter Defintions";
27      public static final String WIDGET_INSTANCES = "Widget Instances";
28      public static final String FILTER_INSTANCES = "Filter Instances";
29  
30      public static TreeNode createTree(Jarl jarl) {
31          JarlStumpTreeNode jarlStumpTreeNode = new JarlStumpTreeNode(null);
32          //definitions
33          jarlStumpTreeNode.add(new JarlRootTreeNode(jarlStumpTreeNode, STROKE_DEFS, jarl.getStrokeDefs()));
34          jarlStumpTreeNode.add(new JarlRootTreeNode(jarlStumpTreeNode, TRAIT_DEFS, jarl.getTraitDefs()));
35          jarlStumpTreeNode.add(new JarlRootTreeNode(jarlStumpTreeNode, WIDGET_DEFS, jarl.getWidgetDefs()));
36          jarlStumpTreeNode.add(new JarlRootTreeNode(jarlStumpTreeNode, FILTER_DEFS, jarl.getFilterDefs()));
37          //instances
38          jarlStumpTreeNode.add(new JarlRootTreeNode(jarlStumpTreeNode, WIDGET_INSTANCES, jarl.getRenderManager().getRegisteredWidgets()));
39          jarlStumpTreeNode.add(new JarlRootTreeNode(jarlStumpTreeNode, FILTER_INSTANCES, jarl.getRenderManager().getRegisteredFilters()));
40          return jarlStumpTreeNode;
41      }
42  
43      public static abstract class JarlTreeNode implements TreeNode {
44          protected Vector m_childVector = new Vector();
45          protected TreeNode m_parent;
46  
47          public JarlTreeNode(TreeNode parent) {
48              m_parent = parent;
49          }
50  
51          public int getIndex(TreeNode node) {
52              if (node instanceof JarlTreeNode) {
53                  return ((JarlTreeNode) node).m_childVector.indexOf(this);
54              } else {
55                  return -1;
56              }
57          }
58  
59          /**
60           * Returns the parent <code>TreeNode</code> of the receiver.
61           */
62          public TreeNode getParent() {
63              return m_parent;
64          }
65  
66          /**
67           * Returns the child <code>TreeNode</code> at index
68           * <code>childIndex</code>.
69           */
70          public TreeNode getChildAt(int childIndex) {
71              return (TreeNode) m_childVector.get(childIndex);
72          }
73  
74          /**
75           * Returns true if the receiver allows children.
76           */
77          public boolean getAllowsChildren() {
78              return true;
79          }
80  
81          /**
82           * Returns true if the receiver is a leaf.
83           */
84          public boolean isLeaf() {
85              return false;
86          }
87  
88          /**
89           * Returns the number of children <code>TreeNode</code>s the receiver
90           * contains.
91           */
92          public int getChildCount() {
93              return m_childVector.size();
94          }
95  
96          /**
97           * Returns the children of the receiver as an <code>Enumeration</code>.
98           */
99          public Enumeration children() {
100             return m_childVector.elements();
101         }
102     }
103 
104     public static class JarlStumpTreeNode extends JarlTreeNode {
105 
106         public JarlStumpTreeNode(TreeNode parent) {
107             super(parent);
108         }
109 
110         public void add(TreeNode treeNode) {
111             m_childVector.add(treeNode);
112         }
113 
114         public String toString() {
115             return "Jarl Objects";
116         }
117     }
118 
119     public static class JarlRootTreeNode extends JarlTreeNode {
120 
121         protected String m_title;
122 
123         /**
124          * This constructor is for a map of 'definitions' like widgetDef or traitDef
125          * @param parent
126          * @param title
127          * @param jarlObjectMap
128          */
129         public JarlRootTreeNode(TreeNode parent, String title, Map jarlObjectMap) {
130             super(parent);
131             m_title = title;
132             for (Iterator it = jarlObjectMap.keySet().iterator(); it.hasNext();) {
133                 String jarlObjectName = (String) it.next();
134                 JarlObjectInfoTreeNode jarlTreeNode = new JarlObjectInfoTreeNode(this,
135                         (IJarlObject) jarlObjectMap.get(jarlObjectName), jarlObjectName);
136                 m_childVector.add(jarlTreeNode);
137             }
138         }
139 
140         /**
141          * This constructor is for a list of instances: widget or filter
142          * @param parent
143          * @param title
144          * @param jarlObjectList
145          */
146         public JarlRootTreeNode(TreeNode parent, String title, List jarlObjectList) {
147             super(parent);
148             m_title = title;
149             for (Iterator it = jarlObjectList.iterator(); it.hasNext();) {
150                 IJarlObject jarlObject = (IJarlObject) it.next();
151 
152                 //get the widget Defs or filterDef if available
153                 String objName = JarlInfoUtil.getName(jarlObject);
154                 m_childVector.add(new JarlObjectInfoTreeNode(this, jarlObject, objName));
155             }
156         }
157 
158         public String toString() {
159             return m_title;
160         }
161     }
162 
163     public static class JarlObjectInfoTreeNode extends JarlTreeNode {
164 
165         protected String m_jarlObjectName;
166         protected IJarlObject m_jarlObject;
167         protected IJarlObjectInfo m_jarlObjectInfo;
168         protected boolean m_expandedChildren = false;
169 
170         /**
171          * This will contain more children
172          */
173         public JarlObjectInfoTreeNode(TreeNode parent, IJarlObject jarlObject, String jarlObjectName) {
174             super(parent);
175             m_jarlObject = jarlObject;
176             m_jarlObjectName = jarlObjectName;
177             m_jarlObjectInfo = JarlInfoUtil.getJarlObjectInfo(m_jarlObject);
178             if (m_jarlObjectInfo == null) {
179                 m_jarlObjectInfo = m_jarlObject.getJarlObjectInfo();
180                 JarlInfoUtil.setJarlObjectInfo(m_jarlObject, m_jarlObjectInfo);
181             }
182 
183             if (m_jarlObject instanceof IJarlObjectCollection) {
184                 Collection collection = ((IJarlObjectCollection) m_jarlObject).getChildren();
185                 addCollection(collection);
186             }
187 
188             if (m_jarlObject instanceof IWidget) {
189                 IWidget widget = (IWidget) m_jarlObject;
190                 addCollection(widget.getTraits());
191                 addCollection(widget.getStrokes());
192                 addCollection(widget.getFilters());
193             }
194 
195             if (m_jarlObject instanceof IWidgetConfigSegmentFactory) {
196                 addCollection(((IWidgetConfigSegmentFactory) m_jarlObject).getConfigSegments());
197             }
198 
199             for (Iterator it = m_jarlObjectInfo.getChildren().iterator(); it.hasNext();) {
200                 m_childVector.add(new JarlObjectInfoTreeNode(this, m_jarlObject, (IJarlObjectInfo) it.next()));
201             }
202         }
203 
204         /**
205          * This is for leafs (leaves)
206          */
207         public JarlObjectInfoTreeNode(TreeNode parent, IJarlObject jarlObject, IJarlObjectInfo jarlObjectInfo) {
208             super(parent);
209             m_jarlObject = jarlObject;
210             m_jarlObjectInfo = jarlObjectInfo;
211         }
212 
213         public IJarlObject getJarlObject() {
214             return m_jarlObject;
215         }
216 
217         /**
218          * Returns true if the receiver allows children.
219          */
220         public boolean getAllowsChildren() {
221             return !m_childVector.isEmpty();
222         }
223 
224         /**
225          * Returns true if the receiver is a leaf.
226          */
227         public boolean isLeaf() {
228             return m_childVector.isEmpty();
229         }
230 
231         public String toString() {
232             if (m_jarlObjectName != null) {
233                 return m_jarlObjectName;
234             }
235 
236             StringBuffer buffer = new StringBuffer();
237             buffer.append(m_jarlObjectInfo.getDisplayName());
238             buffer.append(" : ");
239             try {
240                 buffer.append(m_jarlObjectInfo.getDisplay().getDisplayValue(m_jarlObjectInfo.getField().get(m_jarlObject)));
241             } catch (Exception e) {
242                 e.printStackTrace();
243             }
244             return buffer.toString();
245         }
246 
247         protected void addCollection(Collection collection) {
248             if (collection == null) {
249                 return;
250             }
251             for (Iterator it = collection.iterator(); it.hasNext();) {
252                 Object obj = it.next();
253                 if (obj instanceof IJarlObject) {
254                     IJarlObject childJarlObject = (IJarlObject) obj;
255                     String name = JarlInfoUtil.getName(childJarlObject);
256                     m_childVector.add(new JarlObjectInfoTreeNode(this, childJarlObject, name));
257                 } else if (obj instanceof WidgetConfigSegment) {
258                     m_childVector.add(new WidgetConfigSegmentTreeNode(this, (WidgetConfigSegment) obj));
259                 }
260             }
261         }
262     }
263 
264     public static class WidgetConfigSegmentTreeNode extends JarlTreeNode {
265         protected WidgetConfigSegment m_widgetConfigSegment;
266         protected IJarlObjectInfo m_jarlObjectInfo;
267         protected String m_name;
268 
269         public WidgetConfigSegmentTreeNode(TreeNode parent, WidgetConfigSegment widgetConfigSegment) {
270             super(parent);
271             m_widgetConfigSegment = widgetConfigSegment;
272             m_jarlObjectInfo = widgetConfigSegment.getJarlObjectInfo();
273             m_name = "Config Segment: " +
274                     JarlInfoUtil.PCT_DISPLAY.getDisplayValue(new Double(m_widgetConfigSegment.getStartTimePct())) + " -> " +
275                     JarlInfoUtil.PCT_DISPLAY.getDisplayValue(new Double(m_widgetConfigSegment.getEndTimePct()));
276 
277             for (Iterator it = m_jarlObjectInfo.getChildren().iterator(); it.hasNext();) {
278                 m_childVector.add(new WidgetConfigSegmentTreeNode(this, m_widgetConfigSegment, (IJarlObjectInfo) it.next()));
279             }
280         }
281 
282         /**
283          * For leaves (leafs)
284          */
285         public WidgetConfigSegmentTreeNode(TreeNode parent, WidgetConfigSegment widgetConfigSegment, IJarlObjectInfo jarlObjectInfo) {
286             super(parent);
287             m_widgetConfigSegment = widgetConfigSegment;
288             m_jarlObjectInfo = jarlObjectInfo;
289         }
290 
291         /**
292          * Returns true if the receiver allows children.
293          */
294         public boolean getAllowsChildren() {
295             return !m_childVector.isEmpty();
296         }
297 
298         /**
299          * Returns true if the receiver is a leaf.
300          */
301         public boolean isLeaf() {
302             return m_childVector.isEmpty();
303         }
304 
305         public String toString() {
306             if (m_name != null) {
307                 return m_name;
308             }
309 
310             StringBuffer buffer = new StringBuffer();
311             buffer.append(m_jarlObjectInfo.getDisplayName());
312             buffer.append(" : ");
313             try {
314                 buffer.append(m_jarlObjectInfo.getDisplay().getDisplayValue(m_jarlObjectInfo.getField().get(m_widgetConfigSegment)));
315             } catch (Exception e) {
316                 e.printStackTrace();
317             }
318             return buffer.toString();
319         }
320     }
321 }