1 package jimm.datavision.gui; 2 import jimm.datavision.PaperFormat; 3 import jimm.util.I18N; 4 import jimm.util.StringUtils; 5 import java.awt.Font ; 6 import java.awt.event.*; 7 import java.util.List ; 8 import java.util.Iterator ; 9 import javax.swing.*; 10 11 16 public class MenuUtils { 17 18 public static JMenu readMenu(String key) { 19 JMenu menu = new JMenu(I18N.get(I18N.MENU_FILE_PREFIX, key)); 20 setKeys(menu, key); return menu; 22 } 23 24 public static JMenuItem readItem(ActionListener listener, String key, 25 Font font) 26 { 27 JMenuItem item = new JMenuItem(I18N.get(I18N.MENU_FILE_PREFIX, key)); 28 modifyItem(item, listener, key, font); 29 return item; 30 } 31 32 public static JCheckBoxMenuItem readCheckboxItem(ActionListener listener, 33 String key, Font font) 34 { 35 JCheckBoxMenuItem item = 36 new JCheckBoxMenuItem(I18N.get(I18N.MENU_FILE_PREFIX, key)); 37 modifyItem(item, listener, key, font); 38 return item; 39 } 40 41 protected static void modifyItem(JMenuItem item, ActionListener listener, 42 String key, Font font) 43 { 44 if (listener != null) 45 item.addActionListener(listener); 46 if (font != null) 47 item.setFont(font); 48 49 String val = I18N.getNullIfMissing(I18N.MENU_FILE_PREFIX, key + ".action"); 50 if (val != null && val.length() > 0) 51 item.setActionCommand(val); 52 53 val = I18N.getNullIfMissing(I18N.MENU_FILE_PREFIX, key + ".enabled"); 54 if (val != null && val.length() > 0 55 && ("false".equalsIgnoreCase(val) 56 || "no".equalsIgnoreCase(val))) 57 item.setEnabled(false); 58 59 setKeys(item, key); } 61 62 69 public static JMenuItem addToMenu(ActionListener listener, JMenu menu, 70 String key) 71 { 72 return addToMenu(listener, menu, key, null); 73 } 74 75 83 public static JMenuItem addToMenu(ActionListener listener, JMenu menu, 84 String key, Font font) 85 { 86 JMenuItem item = readItem(listener, key, font); 87 menu.add(item); 88 return item; 89 } 90 91 98 public static JMenuItem addToMenu(ActionListener listener, JPopupMenu menu, 99 String key) 100 { 101 return addToMenu(listener, menu, key, null); 102 } 103 104 112 public static JMenuItem addToMenu(ActionListener listener, JPopupMenu menu, 113 String key, Font font) 114 { 115 JMenuItem item = readItem(listener, key, font); 116 menu.add(item); 117 return item; 118 } 119 120 128 public static JCheckBoxMenuItem addCheckboxToMenu(ActionListener listener, 129 JMenu menu, String key, 130 Font font) 131 { 132 JCheckBoxMenuItem item = readCheckboxItem(listener, key, font); 133 menu.add(item); 134 return item; 135 } 136 137 145 public static JCheckBoxMenuItem addCheckboxToMenu(ActionListener listener, 146 JPopupMenu menu, String key, 147 Font font) 148 { 149 JCheckBoxMenuItem item = readCheckboxItem(listener, key, font); 150 menu.add(item); 151 return item; 152 } 153 154 161 public static JMenuItem addToMenu(JMenu menu, Action action, String key) { 162 JMenuItem item = menu.add(action); 163 setKeys(item, key); return item; 165 } 166 167 protected static void setKeys(JMenuItem item, String key) { 168 String keys = 169 I18N.getNullIfMissing(I18N.MENU_FILE_PREFIX, key + ".keys"); 170 if (keys == null) 171 return; 172 173 List split = StringUtils.split(keys, " "); 174 175 if (split.size() >= 1) { key = (String )split.get(0); 177 item.setMnemonic((int)key.charAt(0)); 178 } 179 180 if (split.size() >= 2) { key = (String )split.get(1); 182 int stroke = (int)key.charAt(0); 183 int mask = ActionEvent.CTRL_MASK; 184 if ("DEL".equals(key)) { 185 stroke = KeyEvent.VK_DELETE; 186 mask = 0; 187 } 188 item.setAccelerator(KeyStroke.getKeyStroke(stroke, mask)); 189 } 190 } 191 192 199 public static JMenu buildAlignMenu(ActionListener listener, Font font) 200 { 201 JMenu menu = readMenu("Align.menu"); 202 203 MenuUtils.addToMenu(listener, menu, "Align.menu_tops", font); 204 MenuUtils.addToMenu(listener, menu, "Align.menu_middles", font); 205 MenuUtils.addToMenu(listener, menu, "Align.menu_bottoms", font); 206 MenuUtils.addToMenu(listener, menu, "Align.menu_lefts", font); 207 MenuUtils.addToMenu(listener, menu, "Align.menu_centers", font); 208 MenuUtils.addToMenu(listener, menu, "Align.menu_rights", font); 209 MenuUtils.addToMenu(listener, menu, "Align.menu_snap", font); 210 211 return menu; 212 } 213 214 221 public static JMenu buildSizeMenu(ActionListener listener, Font font) 222 { 223 JMenu menu = readMenu("Size.menu"); 224 225 MenuUtils.addToMenu(listener, menu, "Size.menu_same_width", font); 226 MenuUtils.addToMenu(listener, menu, "Size.menu_same_height", font); 227 MenuUtils.addToMenu(listener, menu, "Size.menu_same_size", font); 228 229 return menu; 230 } 231 232 242 public static JMenu buildPaperSizeMenu(ActionListener listener, 243 PaperFormat currChoice, 244 ButtonGroup orientationGroup, 245 ButtonGroup nameGroup) 246 { 247 JMenu menu = readMenu("MenuUtils.menu_paper_size"); 248 249 JRadioButtonMenuItem item = null; 250 251 String key = "MenuUtils.menu_paper_size_portrait"; 253 String str = I18N.get(I18N.MENU_FILE_PREFIX, key); 254 item = new JRadioButtonMenuItem(str); 255 256 String action = 257 I18N.getNullIfMissing(I18N.MENU_FILE_PREFIX, key + ".action"); 258 if (action != null && action.length() > 0) 259 item.setActionCommand(action); 260 261 orientationGroup.add(item); 262 if (listener != null) item.addActionListener(listener); 263 if (currChoice.getOrientation() == PaperFormat.PORTRAIT) 264 item.setSelected(true); 265 menu.add(item); 266 267 key = "MenuUtils.menu_paper_size_landscape"; 269 str = I18N.get(I18N.MENU_FILE_PREFIX, key); 270 item = new JRadioButtonMenuItem(str); 271 272 action = I18N.getNullIfMissing(I18N.MENU_FILE_PREFIX, key + ".action"); 273 if (action != null && action.length() > 0) 274 item.setActionCommand(action); 275 276 orientationGroup.add(item); 277 if (listener != null) item.addActionListener(listener); 278 if (currChoice.getOrientation() == PaperFormat.LANDSCAPE) 279 item.setSelected(true); 280 menu.add(item); 281 282 menu.addSeparator(); 283 284 for (Iterator iter = PaperFormat.names(); iter.hasNext();) { 286 String name = (String )iter.next(); 287 item = new JRadioButtonMenuItem(name); 288 nameGroup.add(item); 289 if (listener != null) item.addActionListener(listener); 290 291 if (name.equals(currChoice.getName())) 292 item.setSelected(true); 293 294 menu.add(item); 295 } 296 297 return menu; 298 } 299 } 300 | Popular Tags |