📄 barfactory.java
字号:
package org.enhydra.jawe;import java.awt.Insets;import java.awt.event.ActionEvent;import java.awt.event.KeyEvent;import java.lang.reflect.Constructor;import javax.swing.Action;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JPopupMenu;import javax.swing.JToolBar;import javax.swing.KeyStroke;import javax.swing.SwingConstants;import org.enhydra.jawe.base.controller.JaWEType;import org.enhydra.jawe.base.controller.JaWETypeChoiceButton;public class BarFactory { public final static String CLASSNAME_POSTFIX = "ClassName"; public final static String SETTINGSNAME_POSTFIX = "SettingsName"; public final static String ACCELERATION_POSTFIX = "Accel"; public final static String MNEMONIC_POSTFIX = "Mnemonic"; public final static String LABEL_POSTFIX = "Label"; public final static String TOOLTIP_POSTFIX = "Tooltip"; public final static String LANGUAGEDEPENDENTNAME_POSTFIX = "LangName"; public final static String JAWE_STANDARD_MENU_PREFIX = "jawe_"; public final static String JAWE_STANDARD_ACTION_PREFIX = "jaweAction_"; public final static String JAWECOMPONENT_AS_MENU_PREFIX = "@"; public final static String SUBMENU_PREFIX = "*"; public final static String ACTION_DELIMITER = " "; public final static String ACTION_SEPARATOR = "-"; public final static String CTRL_PREFIX = "CTRL"; public final static String SHIFT_PREFIX = "SHIFT"; public final static String ALT_PREFIX = "ALT"; public static JMenuBar createMainMenu(JaWEComponent comp) { JMenuBar mbar = new JMenuBar(); String actionOrder = comp.getSettings().getMainMenuActionOrder(); String[] act = Utils.tokenize(actionOrder, ACTION_DELIMITER); for (int i = 0; i < act.length; i++) { 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)); mbar.add(subMenu); } } else if (act[i].startsWith(JAWE_STANDARD_MENU_PREFIX)) { mbar.add(JaWEManager.getInstance() .getJaWEController() .getJaWEActions() .getActionMenu(act[i], true)); } else if (act[i].startsWith(JAWE_STANDARD_ACTION_PREFIX)) { mbar.add(JaWEManager.getInstance() .getJaWEController() .getJaWEActions() .getActionMenuItem(act[i].substring(11), true)); } else if (act[i].startsWith(SUBMENU_PREFIX)) { JMenu sm = createSubMenu(act[i].substring(1), comp, true); if (sm != null) { mbar.add(sm); } } else { JaWEAction ja = comp.getSettings().getAction(act[i]); if (ja != null) { mbar.add(createMenuItem(ja, comp, true)); } } } return mbar; } public static JPopupMenu createPopupMenu(String popupMenuName, JaWEComponent comp) { String actionOrder = comp.getSettings().getMenuActionOrder(popupMenuName); return createMenu(actionOrder, comp, false).getPopupMenu(); } public static JToolBar createToolbar(String toolbarName, JaWEComponent comp) { String actionOrder = comp.getSettings().getToolbarActionOrder(toolbarName); JToolBar toolbar = new JToolBar(); toolbar.setRollover(true); String[] act = Utils.tokenize(actionOrder, ACTION_DELIMITER); for (int i = 0; i < act.length; i++) { if (act[i].equals(ACTION_SEPARATOR)) { toolbar.addSeparator(); } else if (act[i].startsWith(JAWE_STANDARD_MENU_PREFIX)) { toolbar.add(JaWEManager.getInstance() .getJaWEController() .getJaWEActions() .getActionToolbar(act[i])); } else if (act[i].startsWith(JAWE_STANDARD_ACTION_PREFIX)) { toolbar.add(JaWEManager.getInstance() .getJaWEController() .getJaWEActions() .getActionButton(act[i].substring(11))); } else if (act[i].startsWith(SUBMENU_PREFIX)) { toolbar.add(createToolbar(act[i].substring(1), comp)); } else { JaWEAction ja = comp.getSettings().getAction(act[i]); if (ja != null) { toolbar.add(createToolbarButton(ja, comp)); } } } toolbar.setName(comp.getSettings().getLanguageDependentString(toolbarName + LABEL_POSTFIX)); return toolbar; } public static JButton createToolbarButton(JaWEAction ja, JaWEComponent comp) { Action a = ja.getAction(); String aname = null; if (a != null) { aname = (String) a.getValue(Action.NAME); } String depName = ja.getLangDepName(); String label = comp.getSettings().getLanguageDependentString(depName + LABEL_POSTFIX); if (aname == null) { aname = depName; } if (label == null) { label = aname; } JButton b = null; ImageIcon ai = ja.getIcon(); if (ai != null) { if (a instanceof NewActionBase && comp instanceof ChoiceButtonListener) { b = new JaWETypeChoiceButton(JaWEType.class, ((NewActionBase) a).getXPDLTypeClass(), ((NewActionBase) a).getXPDLTypeClassParentForEA(), (ChoiceButtonListener) comp, ai); } else { b = new JButton(ai) { public float getAlignmentY() { return 0.5f; } }; } } else { if (a instanceof NewActionBase && comp instanceof ChoiceButtonListener) { b = new JaWETypeChoiceButton(JaWEType.class, ((NewActionBase) a).getXPDLTypeClass(), ((NewActionBase) a).getXPDLTypeClassParentForEA(), (ChoiceButtonListener) comp, ai); } else { b = new JButton(label) { public float getAlignmentY() { return 0.5f; } }; } } b.setName(aname); b.setMargin(new Insets(1, 1, 1, 1)); b.setRequestFocusEnabled(false); b.setActionCommand(aname); if (a != null) { b.addActionListener(a); b.setEnabled(a.isEnabled()); a.addPropertyChangeListener(new ButtonPropertyChangedListener(b)); } else { b.setEnabled(false); } String tip = comp.getSettings().getLanguageDependentString(depName + TOOLTIP_POSTFIX); if (tip != null) { b.setToolTipText(tip); } return b; } protected static JMenu createMenu(String actionOrder, JaWEComponent comp, boolean addBCListener) { JMenu menu = new JMenu();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -