📄 barfactory.java
字号:
String[] act = Utils.tokenize(actionOrder, ACTION_DELIMITER); for (int i = 0; i < act.length; i++) { if (act[i].equals(ACTION_SEPARATOR)) { menu.addSeparator(); } else if (act[i].startsWith(JAWECOMPONENT_AS_MENU_PREFIX)) { String className = (String) comp.getSettings() .getSetting(act[i].substring(1) + CLASSNAME_POSTFIX); String settingsName = (String) comp.getSettings() .getSetting(act[i].substring(1) + SETTINGSNAME_POSTFIX); JMenu subMenu = getExternalMenu(className, settingsName); BarFactory.setAccelerator(subMenu, comp.getSettings() .getLanguageDependentString(act[i].substring(1) + ACCELERATION_POSTFIX)); BarFactory.setMnemonic(subMenu, comp.getSettings() .getLanguageDependentString(act[i].substring(1) + MNEMONIC_POSTFIX)); menu.add(subMenu); } else if (act[i].startsWith(JAWE_STANDARD_MENU_PREFIX)) { menu.add(JaWEManager.getInstance() .getJaWEController() .getJaWEActions() .getActionMenu(act[i], addBCListener)); } else if (act[i].startsWith(JAWE_STANDARD_ACTION_PREFIX)) { menu.add(JaWEManager.getInstance() .getJaWEController() .getJaWEActions() .getActionMenuItem(act[i].substring(11), addBCListener)); } else if (act[i].startsWith(SUBMENU_PREFIX)) { menu.add(createSubMenu(act[i].substring(1), comp, addBCListener)); } else { JaWEAction ja = comp.getSettings().getAction(act[i]); if (ja != null) { menu.add(createMenuItem(ja, comp, addBCListener)); } } } return menu; } protected static JMenu createSubMenu(String name, JaWEComponent comp, boolean addBCListener) { JMenu menu = new JMenu(); String depName = (String) comp.getSettings() .getSetting(name + LANGUAGEDEPENDENTNAME_POSTFIX); String langDepName = comp.getSettings().getLanguageDependentString(depName + LABEL_POSTFIX); if (langDepName == null) { langDepName = name; } BarFactory.setAccelerator(menu, comp.getSettings() .getLanguageDependentString(depName + ACCELERATION_POSTFIX)); BarFactory.setMnemonic(menu, comp.getSettings() .getLanguageDependentString(depName + MNEMONIC_POSTFIX)); menu.setText(langDepName); String actionOrder = comp.getSettings().getMenuActionOrder(name); String[] act = Utils.tokenize(actionOrder, ACTION_DELIMITER); int cnt=0; for (int i = 0; i < act.length; i++) { if (act[i].equals(ACTION_SEPARATOR)) { menu.addSeparator(); cnt++; } else if (act[i].startsWith(JAWECOMPONENT_AS_MENU_PREFIX)) { String className = (String) comp.getSettings() .getSetting(act[i].substring(1) + CLASSNAME_POSTFIX); String settingsName = (String) comp.getSettings() .getSetting(act[i].substring(1) + SETTINGSNAME_POSTFIX); JMenu subMenu = getExternalMenu(className, settingsName); if (subMenu != null) { BarFactory.setAccelerator(subMenu, comp.getSettings() .getLanguageDependentString(act[i].substring(1) + ACCELERATION_POSTFIX)); BarFactory.setMnemonic(subMenu, comp.getSettings() .getLanguageDependentString(act[i].substring(1) + MNEMONIC_POSTFIX)); menu.add(subMenu); cnt++; } else { System.out.println("Can't create ext meny " + settingsName + " for cn " + className); } } else if (act[i].startsWith(JAWE_STANDARD_MENU_PREFIX)) { menu.add(JaWEManager.getInstance() .getJaWEController() .getJaWEActions() .getActionMenu(act[i], addBCListener)); cnt++; } else if (act[i].startsWith(JAWE_STANDARD_ACTION_PREFIX)) { menu.add(JaWEManager.getInstance() .getJaWEController() .getJaWEActions() .getActionMenuItem(act[i].substring(11), addBCListener)); cnt++; } else if (act[i].startsWith(SUBMENU_PREFIX)) { JMenu sm=createSubMenu(act[i], comp, addBCListener); if (sm!=null) { menu.add(sm); cnt++; } } else { JaWEAction ja = comp.getSettings().getAction(act[i]); if (ja != null) { menu.add(createMenuItem(ja, comp, addBCListener)); cnt++; } } } if (cnt>0) { return menu; } return null; } protected static JMenu getExternalMenu(String className, String settingsClassName) { try { Constructor sc = Class.forName(settingsClassName).getConstructor(new Class[] {}); JaWEComponentSettings settings = (JaWEComponentSettings) sc.newInstance(new Object[0]); Constructor c = Class.forName(className).getConstructor(new Class[] { JaWEComponentSettings.class }); JaWEComponent jc = (JaWEComponent) c.newInstance(new Object[] { settings }); return (JMenu) (jc.getView()); } catch (Throwable thr) { } return null; } public static JMenuItem createMenuItem(JaWEAction ja, JaWEComponent comp, boolean addBCListener) { Action a = ja.getAction(); String aname = null; if (a != null) { aname = (String) a.getValue(Action.NAME); } String depName = ja.getLangDepName(); if (aname == null) { aname = depName; } if (depName == null) { depName = aname; } String label = comp.getSettings().getLanguageDependentString(depName + LABEL_POSTFIX); if (label == null) { label = aname; } JMenuItem mi = new JMenuItem(label); mi.setName(aname); ImageIcon ai = ja.getIcon(); if (ai != null) { mi.setHorizontalTextPosition(SwingConstants.RIGHT); mi.setIcon(ai); } BarFactory.setAccelerator(mi, comp.getSettings() .getLanguageDependentString(depName + ACCELERATION_POSTFIX)); BarFactory.setMnemonic(mi, comp.getSettings() .getLanguageDependentString(depName + MNEMONIC_POSTFIX)); mi.setActionCommand(aname); if (a != null) { mi.addActionListener(a); if (addBCListener) { a.addPropertyChangeListener(new ButtonPropertyChangedListener(mi)); } mi.setEnabled(a.isEnabled()); } else { mi.setEnabled(false); } return mi; } public static void setMnemonic(JMenuItem mi, String mnemonic) { if (mnemonic != null && mnemonic.length() > 0) { mi.setMnemonic(mnemonic.toCharArray()[0]); } } public static void setAccelerator(JMenuItem mi, String accel) { if (accel != null) { try { int mask = 0; if (accel.startsWith(CTRL_PREFIX)) { mask += ActionEvent.CTRL_MASK; accel = accel.substring(CTRL_PREFIX.length() + 1); } if (accel.startsWith(SHIFT_PREFIX)) { mask += ActionEvent.SHIFT_MASK; accel = accel.substring(SHIFT_PREFIX.length() + 1); } if (accel.startsWith(ALT_PREFIX)) { mask += ActionEvent.ALT_MASK; accel = accel.substring(ALT_PREFIX.length() + 1); } int key = KeyEvent.class.getField("VK_" + accel).getInt(null); mi.setAccelerator(KeyStroke.getKeyStroke(key, mask)); } catch (Exception e) { System.err.println("Error while assigning accelerator !!!"); } } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -