Window | Choose Font
Sets the font across all tabs, and saves it for future sessions. Works nicely; JBidwatcher looks fascinating in Lucida Handwriting. :)
[#308 state:resolved tagged:committed]
- ~
- jbidwatcher
- trunk
- src
- com
- jbidwatcher
- ui
- JBidMenuBar.java
| JBidMenuBar.java |
|---|
cyberfox 1 package com.jbidwatcher.ui; cyberfox 2 /* cyberfox 3 * Copyright (c) 2000-2007, CyberFOX Software, Inc. All Rights Reserved. cyberfox 4 * cyberfox 5 * Developed by mrs (Morgan Schweers) cyberfox 6 */ cyberfox 7 cyberfox 8 import com.jbidwatcher.platform.Platform; mrs 9 import com.jbidwatcher.util.config.JConfig; mrs 10 import com.jbidwatcher.ui.util.JContext; mrs 11 import com.jbidwatcher.util.Constants; cyberfox 12 cyberfox 13 import java.awt.*; cyberfox 14 import java.awt.event.*; cyberfox 15 import javax.swing.*; mrs 16 import javax.swing.event.PopupMenuListener; mrs 17 import javax.swing.event.PopupMenuEvent; cyberfox 18 import java.util.HashMap; cyberfox 19 cyberfox 20 /** cyberfox 21 * The GUI Menu bar. This will create the menu bar for the application. cyberfox 22 * mrs 23 * @version $Revision: 1.38 $ cyberfox 24 */ cyberfox 25 public class JBidMenuBar extends JMenuBar { mrs 26 protected static JBidMenuBar _instance = null; cyberfox 27 protected JMenuBar _menuBar; cyberfox 28 protected JMenu _fileMenu; cyberfox 29 protected JMenu _editMenu; mrs 30 protected JMenu _debugMenu; cyberfox 31 protected JMenu _serverMenu; mrs 32 protected JMenu mWindowMenu; mrs 33 protected JMenu mTabMenu; cyberfox 34 protected JMenu _auctionMenu; cyberfox 35 protected JMenu _helpMenu; cyberfox 36 protected ActionListener _actionDirector; cyberfox 37 mrs 38 protected JMenuItem makeMenuItem( cyberfox 39 JMenu inMenu, cyberfox 40 String inName, cyberfox 41 String inActionCommand, cyberfox 42 int mnemonic, cyberfox 43 KeyStroke accelerator) { mrs 44 return makeMenuItem(inMenu, inName, inActionCommand, mnemonic, accelerator, true); cyberfox 45 } cyberfox 46 mrs 47 protected JMenuItem makeMenuItem(JMenu inMenu, String inName, String inActionCommand, int mnemonic, KeyStroke accelerator, boolean add) { mrs 48 JMenuItem constructItem = new JMenuItem(); cyberfox 49 mrs 50 constructItem.setText(inName); mrs 51 constructItem.setActionCommand(inActionCommand); mrs 52 constructItem.addActionListener(_actionDirector); mrs 53 constructItem.setMnemonic(mnemonic); cyberfox 54 mrs 55 if (accelerator != null) { mrs 56 constructItem.setAccelerator(accelerator); mrs 57 } // end of if (accelerator != null) cyberfox 58 mrs 59 if (add) inMenu.add(constructItem); mrs 60 return constructItem; mrs 61 } cyberfox 62 mrs 63 protected JMenuItem makeMenuItem( cyberfox 64 JMenu inMenu, cyberfox 65 String inName, cyberfox 66 int mnemonic, cyberfox 67 KeyStroke accelerator) { cyberfox 68 mrs 69 return makeMenuItem(inMenu, inName, inName, mnemonic, accelerator, true); cyberfox 70 } cyberfox 71 cyberfox 72 mrs 73 protected JMenuItem makeMenuItem(JMenu inMenu, String inName, String inActionCommand, char mnemonic) { cyberfox 74 JMenuItem constructItem = new JMenuItem(); cyberfox 75 cyberfox 76 constructItem.setText(inName); cyberfox 77 constructItem.setActionCommand(inActionCommand); cyberfox 78 constructItem.addActionListener(_actionDirector); cyberfox 79 constructItem.setMnemonic(mnemonic); cyberfox 80 cyberfox 81 inMenu.add(constructItem); mrs 82 return constructItem; cyberfox 83 } cyberfox 84 mrs 85 protected JMenuItem makeMenuItem(JMenu inMenu, String inName, char mnemonic) { mrs 86 return makeMenuItem(inMenu, inName, inName, mnemonic); cyberfox 87 } cyberfox 88 mrs 89 protected JMenuItem makeMenuItem(JMenu inMenu, String inName, int mnemonic) { mrs 90 return makeMenuItem(inMenu, inName, inName, mnemonic, null); cyberfox 91 } cyberfox 92 cyberfox 93 mrs 94 protected JMenuItem makeMenuItem(JMenu inMenu, String inName) { mrs 95 return makeMenuItem(inMenu, inName, inName, '\0'); cyberfox 96 } cyberfox 97 cyberfox 98 protected void establishFileMenu(JMenu inMenu) { cyberfox 99 makeMenuItem( cyberfox 100 inMenu, mrs 101 "Save Auctions", "Save", cyberfox 102 KeyEvent.VK_S, cyberfox 103 KeyStroke.getKeyStroke(KeyEvent.VK_S, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); cyberfox 104 mrs 105 makeMenuItem(inMenu, "Dump Cache", "Dump", KeyEvent.VK_D, mrs 106 KeyStroke.getKeyStroke(KeyEvent.VK_D, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); mrs 107 cyberfox 108 if(Platform.isMac()) { cyberfox 109 makeMenuItem( cyberfox 110 inMenu, cyberfox 111 "Configure", cyberfox 112 KeyEvent.VK_C, cyberfox 113 KeyStroke.getKeyStroke(KeyEvent.VK_COMMA, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); cyberfox 114 } else { cyberfox 115 makeMenuItem( cyberfox 116 inMenu, cyberfox 117 "Configure", cyberfox 118 KeyEvent.VK_C, cyberfox 119 KeyStroke.getKeyStroke(KeyEvent.VK_C, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); cyberfox 120 } cyberfox 121 mrs 122 makeMenuItem(inMenu, "Scripting Manager", "Scripting", 'M'); cyberfox 123 makeMenuItem(inMenu, "Check For Updates", KeyEvent.VK_U); mrs 124 makeMenuItem(inMenu, "Clear Deleted Tracking", "Clear Deleted", KeyEvent.VK_D, KeyStroke.getKeyStroke(KeyEvent.VK_D, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); cyberfox 125 if(!Platform.isMac()) inMenu.add(new JSeparator()); cyberfox 126 makeMenuItem( cyberfox 127 inMenu, cyberfox 128 "Exit", cyberfox 129 "Exit", cyberfox 130 KeyEvent.VK_X, cyberfox 131 KeyStroke.getKeyStroke(KeyEvent.VK_Q, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()), !Platform.isMac()); mrs 132 String launcher = System.getenv("JBIDWATCHER_LAUNCHER"); mrs 133 if(launcher != null && JConfig.debugging()) { mrs 134 makeMenuItem(inMenu, "Restart", "Restart", 'R'); mrs 135 } cyberfox 136 } cyberfox 137 cyberfox 138 protected void establishDebugMenu(JMenu inMenu) { mrs 139 makeMenuItem(inMenu, "Serialize"); mrs 140 makeMenuItem(inMenu, "Deserialize"); cyberfox 141 inMenu.add(new JSeparator()); mrs 142 makeMenuItem(inMenu, "Submit Log File"); cyberfox 143 } cyberfox 144 cyberfox 145 protected void establishEditMenu(JMenu inMenu) { mrs 146 JMenu copyMenu = new JMenu("Copy"); cyberfox 147 copyMenu.add(JContext.makeGeneralMenuItem("Information", "Copy")).addActionListener(_actionDirector); cyberfox 148 copyMenu.add(JContext.makeGeneralMenuItem("URL", "CopyURL")).addActionListener(_actionDirector); cyberfox 149 copyMenu.add(JContext.makeGeneralMenuItem("Auction Id", "CopyID")).addActionListener(_actionDirector); cyberfox 150 inMenu.add(copyMenu); cyberfox 151 //makeMenuItem(inMenu, "Copy Auction URL", "CopyURL", KeyEvent.VK_C, cyberfox 152 // KeyStroke.getKeyStroke(KeyEvent.VK_C, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); cyberfox 153 //makeMenuItem(inMenu, "Copy Auction ID", "CopyID", 'I'); mrs 154 makeMenuItem(inMenu, "Paste Auction", "Paste", KeyEvent.VK_P, mrs 155 KeyStroke.getKeyStroke(KeyEvent.VK_V, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); cyberfox 156 inMenu.add(new JSeparator()); cyberfox 157 makeMenuItem(inMenu, "Find", "Search", KeyEvent.VK_F, cyberfox 158 KeyStroke.getKeyStroke(KeyEvent.VK_F, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); cyberfox 159 inMenu.add(new JSeparator()); cyberfox 160 makeMenuItem(inMenu, "Set Background Color", "Set Background Color", 'B'); cyberfox 161 makeMenuItem(inMenu, "Show/Hide Toolbar", "Toolbar", 'T'); cyberfox 162 } cyberfox 163 cyberfox 164 protected void establishServerMenu(JMenu inMenu) { cyberfox 165 String doTimeSync = JConfig.queryConfiguration("timesync.enabled", "true"); mrs 166 mrs 167 makeMenuItem(inMenu, "Update Auctions", "UpdateAll", 'U'); cyberfox 168 makeMenuItem(inMenu, "Stop Activity", "StopUpdating", KeyEvent.VK_S, cyberfox 169 KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); mrs 170 mrs 171 if(doTimeSync.equals("true")) { mrs 172 inMenu.add(new JSeparator()); cyberfox 173 makeMenuItem(inMenu, "Time Information", "Show Time Info", 'T'); mrs 174 makeMenuItem(inMenu, "Synchronize Time", "Resync", 'R'); mrs 175 } cyberfox 176 } cyberfox 177 mrs 178 protected void establishWindowMenu(JMenu inMenu) { mrs 179 makeMenuItem(inMenu, "Activity Log", "View Activity", 'A'); mrs 180 makeMenuItem(inMenu, "Errors Log", "View Log", 'E'); mrs 181 makeMenuItem(inMenu, "Search Manager", "Search", 'S'); mrs 182 makeMenuItem(inMenu, "Configuration", "Configure", 'C'); mrs 183 makeMenuItem(inMenu, "Scripting", 'P'); mrs 184 inMenu.add(new JSeparator()); mrs 185 makeMenuItem(inMenu, "Choose Font", "Font", 'F'); mrs 186 } mrs 187 cyberfox 188 protected void establishAuctionMenu(JMenu inMenu) { cyberfox 189 // The mac doesn't have an 'INSERT' key. I suppose 'Overwrite' cyberfox 190 // mode is too complex? Frustration abounds, as CMD-A is 'select cyberfox 191 // all'. We're going with CMD-I to mirror 'Insert'. mrs 192 JMenuItem add; cyberfox 193 if(Platform.isMac()) { mrs 194 add = makeMenuItem(inMenu, "Add New", KeyEvent.VK_A, mrs 195 KeyStroke.getKeyStroke(KeyEvent.VK_N, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); cyberfox 196 } else { mrs 197 add = makeMenuItem(inMenu, "Add", KeyEvent.VK_A, mrs 198 KeyStroke.getKeyStroke(KeyEvent.VK_INSERT, 0)); cyberfox 199 } mrs 200 add.registerKeyboardAction(_actionDirector, "Add", KeyStroke.getKeyStroke(KeyEvent.VK_ADD, 0), WHEN_IN_FOCUSED_WINDOW); mrs 201 add.registerKeyboardAction(_actionDirector, "Add", KeyStroke.getKeyStroke(KeyEvent.VK_EQUALS, KeyEvent.SHIFT_DOWN_MASK), WHEN_IN_FOCUSED_WINDOW); cyberfox 202 cyberfox 203 // Require 'CMD-Del' for the Mac, because otherwise it catches cyberfox 204 // the 'Del' operation in the middle of text entry. (D'oh!) cyberfox 205 if(Platform.isMac()) { cyberfox 206 makeMenuItem(inMenu, "Delete", KeyEvent.VK_D, cyberfox 207 KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); cyberfox 208 } else { cyberfox 209 makeMenuItem(inMenu, "Delete", KeyEvent.VK_D, cyberfox 210 KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0)); cyberfox 211 } cyberfox 212 cyberfox 213 inMenu.add(new JSeparator()); cyberfox 214 makeMenuItem(inMenu, "Snipe", 'S', KeyStroke.getKeyStroke(KeyEvent.VK_E, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); cyberfox 215 makeMenuItem(inMenu, "Multiple Snipe", 'i'); mrs 216 makeMenuItem(inMenu, "Cancel Snipe", 'C'); cyberfox 217 inMenu.add(new JSeparator()); mrs 218 makeMenuItem(inMenu, "Bid", 'B'); mrs 219 makeMenuItem(inMenu, "Buy", 'y'); mrs 220 inMenu.add(new JSeparator()); cyberfox 221 makeMenuItem(inMenu, "Update", 'U'); mrs 222 if(Platform.isMac()) { mrs 223 makeMenuItem(inMenu, "Show Information", "Information", 'I', KeyStroke.getKeyStroke(KeyEvent.VK_I, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); mrs 224 } else { mrs 225 makeMenuItem(inMenu, "Show Information", "Information", 'I'); mrs 226 } cyberfox 227 // makeMenuItem(inMenu, "Show Last Error Page", "ShowError", 'l'); mrs 228 makeMenuItem(inMenu, "Show In Browser", "Browse", 'b', KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, Toolkit.getDefaultToolkit().getMenuShortcutKeyMask())); cyberfox 229 // makeMenuItem(inMenu, "Show status", "Status", 't'); cyberfox 230 inMenu.add(new JSeparator()); mrs 231 JMenu commentMenu = new JMenu("Comment"); mrs 232 commentMenu.add(JContext.makeGeneralMenuItem("Add", "Add Comment")).addActionListener(_actionDirector); mrs 233 commentMenu.add(JContext.makeGeneralMenuItem("View", "View Comment")).addActionListener(_actionDirector); mrs 234 commentMenu.add(JContext.makeGeneralMenuItem("Remove", "Remove Comment")).addActionListener(_actionDirector); mrs 235 inMenu.add(commentMenu); cyberfox 236 } cyberfox 237 cyberfox 238 protected void establishHelpMenu(JMenu inMenu) { mrs 239 makeMenuItem(inMenu, "Explain Colors And Icons", 'E'); cyberfox 240 makeMenuItem(inMenu, "FAQ", 'F', KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0)); mrs 241 makeMenuItem(inMenu, "Donate", 'D'); mrs 242 makeMenuItem(inMenu, "License Details", "License", 'D'); cyberfox 243 inMenu.add(new JSeparator()); mrs 244 makeMenuItem(inMenu, "About " + Constants.PROGRAM_NAME, 'A'); cyberfox 245 } cyberfox 246 cyberfox 247 private static HashMap<String, JBidMenuBar> _frameMenus = new HashMap<String, JBidMenuBar>(10); cyberfox 248 cyberfox 249 /** cyberfox 250 * @brief Return the menu instance associated with a specific frame name. cyberfox 251 * cyberfox 252 * @param inAction - The action underlying the menu, in case it has to be created. cyberfox 253 * @param frameName - The name of the frame to associated the menu bar with. cyberfox 254 * cyberfox 255 * @return - A menu bar usable with said frame. cyberfox 256 */ cyberfox 257 protected static JBidMenuBar getFrameInstance(ActionListener inAction, String frameName) { cyberfox 258 JBidMenuBar retInstance = _frameMenus.get(frameName); cyberfox 259 if(retInstance == null) { cyberfox 260 if(inAction == null) { cyberfox 261 throw new RuntimeException("JBidMenuBar.getInstance(null) called when no matching instance \"" + frameName + "\" yet created!"); cyberfox 262 } cyberfox 263 retInstance = new JBidMenuBar(inAction); cyberfox 264 _frameMenus.put(frameName, retInstance); cyberfox 265 } cyberfox 266 cyberfox 267 if(_instance == null) _instance = retInstance; cyberfox 268 cyberfox 269 return retInstance; cyberfox 270 } cyberfox 271 cyberfox 272 /** cyberfox 273 * @brief Return the 'global instance' of the menu bar. cyberfox 274 * cyberfox 275 * @param inAction - The action handler to use under the menu bar. cyberfox 276 * cyberfox 277 * @return - The global instance of the menu bar. cyberfox 278 */ cyberfox 279 public static JBidMenuBar getInstance(ActionListener inAction) { cyberfox 280 return getInstance(inAction, null); cyberfox 281 } cyberfox 282 cyberfox 283 /** cyberfox 284 * @brief Get an instance of the menu bar for use with a given frame name. cyberfox 285 * cyberfox 286 * @param inAction - The action to use underneath the menu bar. cyberfox 287 * @param frameName - The name of the frame this menu bar is to be associated with. cyberfox 288 * cyberfox 289 * @return - A menu bar, either the 'global instance', or a specific one for the frame. cyberfox 290 */ cyberfox 291 public static JBidMenuBar getInstance(ActionListener inAction, String frameName) { cyberfox 292 if(inAction == null && _instance == null && _frameMenus == null) { cyberfox 293 throw new RuntimeException("JBidMenuBar.getInstance(null, null) called when no instance yet created!"); cyberfox 294 } cyberfox 295 cyberfox 296 if(frameName != null) { cyberfox 297 return getFrameInstance(inAction, frameName); cyberfox 298 } cyberfox 299 cyberfox 300 // Return the 'global instance'. cyberfox 301 if(_instance == null) { cyberfox 302 _instance = new JBidMenuBar(inAction); cyberfox 303 } cyberfox 304 return _instance; cyberfox 305 } cyberfox 306 cyberfox 307 private JBidMenuBar(ActionListener inAction) { cyberfox 308 _actionDirector = inAction; cyberfox 309 _fileMenu = new JMenu("File"); cyberfox 310 _fileMenu.setMnemonic('F'); cyberfox 311 _editMenu = new JMenu("Edit"); cyberfox 312 _editMenu.setMnemonic('E'); mrs 313 if(JConfig.debugging()) { mrs 314 _debugMenu = new JMenu("Debug"); mrs 315 _debugMenu.setMnemonic('D'); mrs 316 establishDebugMenu(_debugMenu); mrs 317 } cyberfox 318 _serverMenu = new JMenu("Servers"); cyberfox 319 _serverMenu.setMnemonic('S'); mrs 320 _auctionMenu = new JMenu("Auction"); mrs 321 _auctionMenu.setMnemonic('A'); mrs 322 mTabMenu = new JMenu("Tab"); mrs 323 mTabMenu.setMnemonic('T'); mrs 324 mWindowMenu = new JMenu("Windows"); mrs 325 mWindowMenu.setMnemonic('W'); cyberfox 326 _helpMenu = new JMenu("Help"); cyberfox 327 _helpMenu.setMnemonic('H'); cyberfox 328 cyberfox 329 establishFileMenu(_fileMenu); cyberfox 330 establishEditMenu(_editMenu); cyberfox 331 establishServerMenu(_serverMenu); mrs 332 establishAuctionMenu(_auctionMenu); mrs 333 establishTabMenu(mTabMenu); mrs 334 establishWindowMenu(mWindowMenu); cyberfox 335 establishHelpMenu(_helpMenu); cyberfox 336 cyberfox 337 add(_fileMenu); cyberfox 338 add(_editMenu); mrs 339 if (JConfig.debugging()) { mrs 340 add(_debugMenu); mrs 341 } cyberfox 342 add(_serverMenu); mrs 343 add(_auctionMenu); mrs 344 add(mTabMenu); mrs 345 add(mWindowMenu); cyberfox 346 add(_helpMenu); cyberfox 347 } mrs 348 mrs 349 private void establishTabMenu(JMenu tabMenu) { mrs 350 final JTabPopupMenu pop = new JTabPopupMenu(JTabManager.getInstance().getTabs(), tabMenu.getPopupMenu()); mrs 351 mrs 352 tabMenu.getPopupMenu().addPopupMenuListener(new PopupMenuListener() { mrs 353 public void popupMenuWillBecomeVisible(PopupMenuEvent e) { mrs 354 pop.preparePopup(JTabManager.getInstance().getTabs().getSelectedIndex()); mrs 355 } mrs 356 mrs 357 public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { } mrs 358 public void popupMenuCanceled(PopupMenuEvent e) { } mrs 359 }); mrs 360 } cyberfox 361 }
Check out the code: svn co jbidwatcher/trunk/src/com/jbidwatcher/ui/JBidMenuBar.java
