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

Quick Search    Search Deep

Source code: com/arranger/jarl/util/IconUtil.java


1   package com.arranger.jarl.util;
2   
3   import com.arranger.jarl.shell.views.JarlObjectViewTree;
4   import com.arranger.jarl.base.IJarlObject;
5   import com.arranger.jarl.widget.IWidget;
6   import com.arranger.jarl.stroke.IStroke;
7   import com.arranger.jarl.trait.ITrait;
8   import com.arranger.jarl.filter.IFilter;
9   
10  import javax.swing.*;
11  import javax.swing.tree.TreeNode;
12  import java.io.ByteArrayOutputStream;
13  import java.io.InputStream;
14  import java.util.HashMap;
15  import java.util.Map;
16  
17  /**
18   * IconUtil created on Apr 18, 2003
19   */
20  public class IconUtil {
21  
22      public static final int TREE_NODE_LEAF = 0;
23      public static final int TREE_NODE_OPEN = 1;
24      public static final int TREE_NODE_CLOSED = 2;
25  
26      public static final String ICON_PATH = "/com/arranger/jarl/icons/";
27      public static final String DEFAULT_TREE_LEAF_ICON = "defaultLeaf.gif";
28      public static final String DEFAULT_TREE_OPEN_ICON = "defaultOpen.gif";
29      public static final String DEFAULT_TREE_CLOSED_ICON = "defaultClosed.gif";
30  
31      public static final String FILTER_DEF_ICON = "filterDef.gif";
32      public static final String STROKE_DEF_ICON = "strokeDef.gif";
33      public static final String TRAIT_DEF_ICON = "traitDef.gif";
34      public static final String WIDGET_DEF_ICON = "widgetDef.gif";
35  
36      public static final String FILTER_INST_ICON = "filterInstance.gif";
37      public static final String STROKE_INST_ICON = "strokeInstance.gif";
38      public static final String TRAIT_INST_ICON = "traitInstance.gif";
39      public static final String WIDGET_INST_ICON = "widgetInstance.gif";
40  
41      public static final String FILTER_SEG_ICON = "filterSegment.gif";
42      public static final String STROKE_SEG_ICON = "strokeSegment.gif";
43      public static final String TRAIT_SEG_ICON = "traitSegment.gif";
44      public static final String WIDGET_SEG_ICON = "widgetSegment.gif";
45  
46      public static final String ATTRIBUTE_ICON = "attribute.gif";
47  
48      protected static Map m_iconMap = new HashMap();
49      protected static boolean m_init = false;
50  
51  
52      /**
53       * Get an icon for this treeNode
54       * @param treeNode
55       * @param treeNodeType either {@link #TREE_NODE_LEAF} or {@link #TREE_NODE_OPEN} or {@link #TREE_NODE_CLOSED}
56       * @return an appropriate icon
57       */
58      public static Icon getIcon(TreeNode treeNode, int treeNodeType) {
59          checkInit();
60          String key = getKey(treeNode);
61  
62          Icon icon = (Icon) m_iconMap.get(key);
63          if (icon == null) {
64              String name = (treeNodeType == TREE_NODE_LEAF) ? DEFAULT_TREE_LEAF_ICON :
65                      (treeNodeType == TREE_NODE_OPEN) ? DEFAULT_TREE_OPEN_ICON : DEFAULT_TREE_CLOSED_ICON;
66              icon = (Icon) m_iconMap.get(name);
67              m_iconMap.put(key, icon);
68          }
69          return icon;
70      }
71  
72      protected static String getKey(TreeNode treeNode) {
73          String key = null;
74          if (treeNode instanceof JarlObjectViewTree.JarlStumpTreeNode) {
75              key = DEFAULT_TREE_OPEN_ICON;
76          } else if (treeNode instanceof JarlObjectViewTree.JarlRootTreeNode) {
77              String name = treeNode.toString();
78              if (JarlObjectViewTree.STROKE_DEFS.equals(name)) {
79                  key = STROKE_DEF_ICON;
80              } else if (JarlObjectViewTree.TRAIT_DEFS.equals(name)) {
81                  key = TRAIT_DEF_ICON;
82              } else if (JarlObjectViewTree.WIDGET_DEFS.equals(name)) {
83                  key = WIDGET_DEF_ICON;
84              } else if (JarlObjectViewTree.FILTER_DEFS.equals(name)) {
85                  key = FILTER_DEF_ICON;
86              } else if (JarlObjectViewTree.WIDGET_INSTANCES.equals(name)) {
87                  key = WIDGET_INST_ICON;
88              } else if (JarlObjectViewTree.FILTER_INSTANCES.equals(name)) {
89                  key = FILTER_INST_ICON;
90              } else {
91                  System.out.println("Unknown node: " + treeNode.toString());
92                  key = DEFAULT_TREE_OPEN_ICON;
93              }
94          } else if (treeNode instanceof JarlObjectViewTree.JarlObjectInfoTreeNode) {
95              //can be anything here except segments...
96              if (treeNode.isLeaf()) {
97                  key = ATTRIBUTE_ICON;
98              } else {
99                  IJarlObject jarlObject = ((JarlObjectViewTree.JarlObjectInfoTreeNode) treeNode).getJarlObject();
100                 //if it has a 'name' attribute, it is a def, otherwise an instance
101                 boolean isDef = !StringTools.isEmpty(jarlObject.getConfigElement().getAttribute("name"));
102                 if (jarlObject instanceof IWidget) {
103                     key = (isDef) ? WIDGET_DEF_ICON : WIDGET_INST_ICON;
104                 } else if (jarlObject instanceof IStroke) {
105                     key = (isDef) ? STROKE_DEF_ICON : STROKE_INST_ICON;
106                 } else if (jarlObject instanceof ITrait) {
107                     key = (isDef) ? TRAIT_DEF_ICON : TRAIT_INST_ICON;
108                 } else if (jarlObject instanceof IFilter) {
109                     key = (isDef) ? FILTER_DEF_ICON : FILTER_INST_ICON;
110                 } else {
111                     System.out.println("Unknown node: " + treeNode.toString());
112                     key = DEFAULT_TREE_OPEN_ICON;
113                 }
114             }
115         } else if (treeNode instanceof JarlObjectViewTree.WidgetConfigSegmentTreeNode) {
116             //can be lots as well
117             if (treeNode.isLeaf()) {
118                 key = ATTRIBUTE_ICON;
119             } else {
120                 //determine type from parent
121                 TreeNode parentNode = treeNode.getParent();
122                 if (parentNode instanceof JarlObjectViewTree.JarlObjectInfoTreeNode) {
123                     IJarlObject jarlObject = ((JarlObjectViewTree.JarlObjectInfoTreeNode) parentNode).getJarlObject();
124                     if (jarlObject instanceof IWidget) {
125                         key = WIDGET_SEG_ICON;
126                     } else if (jarlObject instanceof IStroke) {
127                         key = STROKE_SEG_ICON;
128                     } else if (jarlObject instanceof ITrait) {
129                         key = TRAIT_SEG_ICON;
130                     } else if (jarlObject instanceof IFilter) {
131                         key = FILTER_SEG_ICON;
132                     } else {
133                         System.out.println("Unknown node: " + treeNode.toString());
134                         key = ATTRIBUTE_ICON;
135                     }
136                 } else {
137                     System.out.println("Unknown node: " + treeNode.toString());
138                     key = ATTRIBUTE_ICON;
139                 }
140             }
141         } else {
142             System.out.println("Unknown node: " + treeNode.toString());
143             key = ATTRIBUTE_ICON;
144         }
145 
146         return key;
147     }
148 
149     protected static void checkInit() {
150         if (!m_init) {
151             //load defaults
152             try {
153                 m_iconMap.put(DEFAULT_TREE_LEAF_ICON, loadIcon(DEFAULT_TREE_LEAF_ICON));
154                 m_iconMap.put(DEFAULT_TREE_OPEN_ICON, loadIcon(DEFAULT_TREE_OPEN_ICON));
155                 m_iconMap.put(DEFAULT_TREE_CLOSED_ICON, loadIcon(DEFAULT_TREE_CLOSED_ICON));
156 
157                 m_iconMap.put(FILTER_DEF_ICON, loadIcon(FILTER_DEF_ICON));
158                 m_iconMap.put(STROKE_DEF_ICON, loadIcon(STROKE_DEF_ICON));
159                 m_iconMap.put(TRAIT_DEF_ICON, loadIcon(TRAIT_DEF_ICON));
160                 m_iconMap.put(WIDGET_DEF_ICON, loadIcon(WIDGET_DEF_ICON));
161 
162                 m_iconMap.put(FILTER_INST_ICON, loadIcon(FILTER_INST_ICON));
163                 m_iconMap.put(STROKE_INST_ICON, loadIcon(STROKE_INST_ICON));
164                 m_iconMap.put(TRAIT_INST_ICON, loadIcon(TRAIT_INST_ICON));
165                 m_iconMap.put(WIDGET_INST_ICON, loadIcon(WIDGET_INST_ICON));
166 
167                 m_iconMap.put(FILTER_SEG_ICON, loadIcon(FILTER_SEG_ICON));
168                 m_iconMap.put(STROKE_SEG_ICON, loadIcon(STROKE_SEG_ICON));
169                 m_iconMap.put(TRAIT_SEG_ICON, loadIcon(TRAIT_SEG_ICON));
170                 m_iconMap.put(WIDGET_SEG_ICON, loadIcon(WIDGET_SEG_ICON));
171 
172                 m_iconMap.put(ATTRIBUTE_ICON, loadIcon(ATTRIBUTE_ICON));
173             } catch (Exception e) {
174                 e.printStackTrace();
175             }
176 
177             m_init = true;
178         }
179     }
180 
181     protected static Icon loadIcon(String name) throws Exception {
182         InputStream is = m_iconMap.getClass().getResourceAsStream(ICON_PATH + name);
183         ByteArrayOutputStream baos = new ByteArrayOutputStream();
184         IOUtil.copyStream(is, baos);
185         is.close();
186 
187         return new ImageIcon(baos.toByteArray());
188     }
189 }