/** Refresh system menu */ public void updateSystemMenu() { if ((systemMenuBar != null) && (systemMenuBar.getMenuCount() > 0)) { final JMenu menu; if (systemMenuCallback != null) menu = systemMenuCallback.getMenu(); else menu = getDefaultSystemMenu(); // ensure compatibility with heavyweight component menu.getPopupMenu().setLightWeightPopupEnabled(false); // rebuild menu systemMenuBar.removeAll(); systemMenuBar.add(menu); systemMenuBar.validate(); } }
public boolean isValid(final KeyStroke keystroke, final Character keyChar) { if (keystroke == null) { return true; } final Node menuBarNode = menuBuilder.getMenuBar(menuBuilder.get(key)); if (menuBarNode == null) { return true; } if (keyChar != KeyEvent.CHAR_UNDEFINED && (keystroke.getModifiers() & (Event.ALT_MASK | Event.CTRL_MASK | Event.META_MASK)) == 0) { final String keyTypeActionString = ResourceController.getResourceController() .getProperty("key_type_action", FirstAction.EDIT_CURRENT.toString()); FirstAction keyTypeAction = FirstAction.valueOf(keyTypeActionString); return FirstAction.IGNORE.equals(keyTypeAction); } if ((keystroke.getModifiers() & (Event.ALT_MASK | Event.CTRL_MASK | Event.META_MASK)) == Event.ALT_MASK) { final JMenuBar menuBar = (JMenuBar) menuBarNode.getUserObject(); final int menuCount = menuBar.getMenuCount(); for (int i = 0; i < menuCount; i++) { final JMenu menu = menuBar.getMenu(i); final char c = (char) menu.getMnemonic(); if (Character.toLowerCase(keystroke.getKeyCode()) == Character.toLowerCase(c)) { JOptionPane.showMessageDialog( parentComponent, menu.getText(), TextUtils.getText("used_in_menu"), JOptionPane.WARNING_MESSAGE); return false; } } } if (!checkForOverwriteShortcut(menuBarNode, keystroke)) { return false; } final KeyStroke derivedKS = FreeplaneMenuBar.derive(keystroke, keyChar); if (derivedKS == keystroke) { return true; } return checkForOverwriteShortcut(menuBarNode, derivedKS); }
private void hookMenu(View view, ExtensionHook hook) { if (view == null) { return; } if (hook.getHookMenu() == null) { return; } ExtensionHookMenu hookMenu = hook.getHookMenu(); // init menus List<JMenuItem> list = null; JMenuItem item = null; JMenu menu = null; JMenu menuFile = view.getMainFrame().getMainMenuBar().getMenuFile(); JMenu menuEdit = view.getMainFrame().getMainMenuBar().getMenuEdit(); JMenu menuView = view.getMainFrame().getMainMenuBar().getMenuView(); JMenu menuAnalyse = view.getMainFrame().getMainMenuBar().getMenuAnalyse(); JMenu menuTools = view.getMainFrame().getMainMenuBar().getMenuTools(); JMenu menuHelp = view.getMainFrame().getMainMenuBar().getMenuHelp(); JMenu menuReport = view.getMainFrame().getMainMenuBar().getMenuReport(); // process new menus JMenuBar bar = view.getMainFrame().getMainMenuBar(); list = hookMenu.getNewMenus(); for (int i = 0; i < list.size(); i++) { menu = (JMenu) list.get(i); bar.add(menu, bar.getMenuCount() - 2); // 2 menus at the back (Tools/Help) } // process menu - File list = hookMenu.getFile(); int existingCount = 2; for (int i = 0; i < list.size(); i++) { item = (JMenuItem) list.get(i); if (item == null) continue; if (item == ExtensionHookMenu.MENU_SEPARATOR) { menuFile.addSeparator(); continue; } menuFile.add(item, menuFile.getItemCount() - existingCount); } // process menu - Tools list = hookMenu.getTools(); existingCount = 2; for (int i = 0; i < list.size(); i++) { item = (JMenuItem) list.get(i); if (item == null) continue; if (item == ExtensionHookMenu.MENU_SEPARATOR) { menuTools.addSeparator(); continue; } menuTools.add(item, menuTools.getItemCount() - existingCount); } // process Edit menu list = hookMenu.getEdit(); for (int i = 0; i < list.size(); i++) { item = (JMenuItem) list.get(i); if (item == null) continue; if (item == ExtensionHookMenu.MENU_SEPARATOR) { menuEdit.addSeparator(); continue; } menuEdit.add(item, menuEdit.getItemCount()); } // process View menu list = hookMenu.getView(); for (int i = 0; i < list.size(); i++) { item = (JMenuItem) list.get(i); if (item == null) continue; if (item == ExtensionHookMenu.MENU_SEPARATOR) { menuView.addSeparator(); continue; } menuView.add(item, menuView.getItemCount()); } // process Analyse menu list = hookMenu.getAnalyse(); for (int i = 0; i < list.size(); i++) { item = (JMenuItem) list.get(i); if (item == null) continue; if (item == ExtensionHookMenu.MENU_SEPARATOR) { menuAnalyse.addSeparator(); continue; } menuAnalyse.add(item, menuAnalyse.getItemCount()); } // process popup menus list = hookMenu.getPopupMenus(); for (int i = 0; i < list.size(); i++) { item = (ExtensionPopupMenu) list.get(i); if (item == null) continue; view.getPopupList().add(item); } // ZAP: process Help menu list = hookMenu.getHelpMenus(); for (int i = 0; i < list.size(); i++) { item = (JMenuItem) list.get(i); if (item == null) continue; if (item == ExtensionHookMenu.MENU_SEPARATOR) { menuHelp.addSeparator(); continue; } menuHelp.add(item, menuHelp.getItemCount()); } // ZAP: process Report menu list = hookMenu.getReportMenus(); for (int i = 0; i < list.size(); i++) { item = (JMenuItem) list.get(i); if (item == null) continue; if (item == ExtensionHookMenu.MENU_SEPARATOR) { menuReport.addSeparator(); continue; } menuReport.add(item, menuReport.getItemCount()); } }