KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > tonbeller > wcf > toolbar > ToolBar


1 /*
2  * ====================================================================
3  * This software is subject to the terms of the Common Public License
4  * Agreement, available at the following URL:
5  * http://www.opensource.org/licenses/cpl.html .
6  * Copyright (C) 2003-2004 TONBELLER AG.
7  * All Rights Reserved.
8  * You must accept the terms of that agreement to use this software.
9  * ====================================================================
10  *
11  *
12  */

13 package com.tonbeller.wcf.toolbar;
14
15 import java.util.ArrayList JavaDoc;
16 import java.util.HashMap JavaDoc;
17 import java.util.Iterator JavaDoc;
18 import java.util.List JavaDoc;
19 import java.util.Map JavaDoc;
20 import java.util.MissingResourceException JavaDoc;
21
22 import org.apache.log4j.Logger;
23 import org.w3c.dom.Document JavaDoc;
24 import org.w3c.dom.Element JavaDoc;
25
26 import com.tonbeller.tbutils.res.Resources;
27 import com.tonbeller.wcf.bookmarks.Bookmarkable;
28 import com.tonbeller.wcf.component.Component;
29 import com.tonbeller.wcf.component.NestableComponentSupport;
30 import com.tonbeller.wcf.controller.RequestContext;
31 import com.tonbeller.wcf.utils.XoplonNS;
32 /**
33  * @author av
34  */

35 public class ToolBar extends NestableComponentSupport implements Bookmarkable {
36   private static Logger logger = Logger.getLogger(ToolBar.class);
37   private Resources resb;
38   private List JavaDoc content = new ArrayList JavaDoc();
39   private Map JavaDoc buttonMap = new HashMap JavaDoc();
40   private Map JavaDoc radioGroups = new HashMap JavaDoc();
41   private boolean globalButtonIds = false;
42
43   public ToolBar(String JavaDoc id, Component parent) {
44     super(id, parent);
45   }
46
47   public void initialize(RequestContext context) throws Exception JavaDoc {
48     super.initialize(context);
49     for (Iterator JavaDoc it = content.iterator(); it.hasNext();) {
50       ToolBarComponent cc = (ToolBarComponent) it.next();
51       cc.initialize(context, this);
52     }
53   }
54
55   /**
56    * renders toolbar content. Avoids consecutive separators
57    */

58   public Element JavaDoc render(RequestContext context, Document JavaDoc factory) throws Exception JavaDoc {
59     Element JavaDoc root = XoplonNS.createElement(factory, "tool-bar");
60     ToolBarComponent separator = null;
61     boolean foundButton = false;
62     for (Iterator JavaDoc it = content.iterator(); it.hasNext();) {
63       ToolBarComponent cc = (ToolBarComponent) it.next();
64       // ignore invisible components
65
if (!cc.isVisible(context))
66         continue;
67       // remember seaparator until there is a button to separate
68
if (cc.isSeparator()) {
69         separator = cc;
70         continue;
71       }
72       // not a separator
73
if (foundButton && separator != null)
74         separator.render(context, root);
75       separator = null;
76       foundButton = true;
77       cc.render(context, root);
78     }
79     return root;
80   }
81
82   public Map JavaDoc getButtons() {
83     return buttonMap;
84   }
85
86   public void addButton(ToolButton button) {
87     content.add(button);
88     List JavaDoc list = getRadioGroup(button);
89     if (list != null)
90       list.add(button);
91     buttonMap.put(button.getId(), button);
92   }
93
94   public List JavaDoc getRadioGroup(ToolButton button) {
95     String JavaDoc group = button.getRadioGroup();
96     if (group == null || group.length() == 0)
97       return null;
98     List JavaDoc list = (List JavaDoc) radioGroups.get(group);
99     if (list == null) {
100       list = new ArrayList JavaDoc();
101       radioGroups.put(group, list);
102     }
103     return list;
104   }
105
106   public void addSeparator(ToolSeparator separator) {
107     content.add(separator);
108   }
109
110   public void addImgButton(ImgButton button) {
111     content.add(button);
112     buttonMap.put(button.getId(), button);
113   }
114
115   public Object JavaDoc getBookmarkState(int levelOfDetail) {
116     Map JavaDoc map = (Map JavaDoc) super.getBookmarkState(levelOfDetail);
117     for (Iterator JavaDoc it = content.iterator(); it.hasNext();) {
118       ToolBarComponent cc = (ToolBarComponent) it.next();
119       map.put(cc.getId(), new Boolean JavaDoc(cc.isVisible()));
120     }
121     return map;
122   }
123
124   public void setBookmarkState(Object JavaDoc state) {
125     super.setBookmarkState(state);
126     Map JavaDoc map = (Map JavaDoc)state;
127     for (Iterator JavaDoc it = content.iterator(); it.hasNext();) {
128       ToolBarComponent cc = (ToolBarComponent) it.next();
129       Boolean JavaDoc b = (Boolean JavaDoc)map.get(cc.getId());
130       if (b != null)
131         cc.setVisible(b.booleanValue());
132     }
133   }
134
135   /**
136    * returns tooltip from resource bundle
137    *
138    * @param tooltip
139    * name of the value in the resource bundle
140    * @return value from resource bundle or <code>tooltip</code> if there is
141    * no resource bundle
142    */

143   public String JavaDoc getTooltip(String JavaDoc tooltip) {
144     try {
145       if (tooltip == null)
146         return "";
147       if (resb != null)
148         return resb.getString(tooltip);
149       return tooltip;
150     } catch (MissingResourceException JavaDoc e) {
151       logger.error("missing resource for " + tooltip);
152       return tooltip;
153     }
154   }
155
156   /**
157    * @param resb
158    */

159   public void setBundle(Resources resb) {
160     this.resb = resb;
161   }
162
163   /**
164    * should be false.
165    */

166   public boolean isGlobalButtonIds() {
167     return globalButtonIds;
168   }
169
170   /**
171    * should be false.
172    */

173   public void setGlobalButtonIds(boolean globalButtonIds) {
174     this.globalButtonIds = globalButtonIds;
175   }
176 }
177
Popular Tags