1 13 package com.tonbeller.wcf.toolbar; 14 15 import java.util.ArrayList ; 16 import java.util.HashMap ; 17 import java.util.Iterator ; 18 import java.util.List ; 19 import java.util.Map ; 20 import java.util.MissingResourceException ; 21 22 import org.apache.log4j.Logger; 23 import org.w3c.dom.Document ; 24 import org.w3c.dom.Element ; 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 35 public class ToolBar extends NestableComponentSupport implements Bookmarkable { 36 private static Logger logger = Logger.getLogger(ToolBar.class); 37 private Resources resb; 38 private List content = new ArrayList (); 39 private Map buttonMap = new HashMap (); 40 private Map radioGroups = new HashMap (); 41 private boolean globalButtonIds = false; 42 43 public ToolBar(String id, Component parent) { 44 super(id, parent); 45 } 46 47 public void initialize(RequestContext context) throws Exception { 48 super.initialize(context); 49 for (Iterator it = content.iterator(); it.hasNext();) { 50 ToolBarComponent cc = (ToolBarComponent) it.next(); 51 cc.initialize(context, this); 52 } 53 } 54 55 58 public Element render(RequestContext context, Document factory) throws Exception { 59 Element root = XoplonNS.createElement(factory, "tool-bar"); 60 ToolBarComponent separator = null; 61 boolean foundButton = false; 62 for (Iterator it = content.iterator(); it.hasNext();) { 63 ToolBarComponent cc = (ToolBarComponent) it.next(); 64 if (!cc.isVisible(context)) 66 continue; 67 if (cc.isSeparator()) { 69 separator = cc; 70 continue; 71 } 72 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 getButtons() { 83 return buttonMap; 84 } 85 86 public void addButton(ToolButton button) { 87 content.add(button); 88 List list = getRadioGroup(button); 89 if (list != null) 90 list.add(button); 91 buttonMap.put(button.getId(), button); 92 } 93 94 public List getRadioGroup(ToolButton button) { 95 String group = button.getRadioGroup(); 96 if (group == null || group.length() == 0) 97 return null; 98 List list = (List ) radioGroups.get(group); 99 if (list == null) { 100 list = new ArrayList (); 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 getBookmarkState(int levelOfDetail) { 116 Map map = (Map ) super.getBookmarkState(levelOfDetail); 117 for (Iterator it = content.iterator(); it.hasNext();) { 118 ToolBarComponent cc = (ToolBarComponent) it.next(); 119 map.put(cc.getId(), new Boolean (cc.isVisible())); 120 } 121 return map; 122 } 123 124 public void setBookmarkState(Object state) { 125 super.setBookmarkState(state); 126 Map map = (Map )state; 127 for (Iterator it = content.iterator(); it.hasNext();) { 128 ToolBarComponent cc = (ToolBarComponent) it.next(); 129 Boolean b = (Boolean )map.get(cc.getId()); 130 if (b != null) 131 cc.setVisible(b.booleanValue()); 132 } 133 } 134 135 143 public String getTooltip(String tooltip) { 144 try { 145 if (tooltip == null) 146 return ""; 147 if (resb != null) 148 return resb.getString(tooltip); 149 return tooltip; 150 } catch (MissingResourceException e) { 151 logger.error("missing resource for " + tooltip); 152 return tooltip; 153 } 154 } 155 156 159 public void setBundle(Resources resb) { 160 this.resb = resb; 161 } 162 163 166 public boolean isGlobalButtonIds() { 167 return globalButtonIds; 168 } 169 170 173 public void setGlobalButtonIds(boolean globalButtonIds) { 174 this.globalButtonIds = globalButtonIds; 175 } 176 } 177 | Popular Tags |