private void initCommandManager() { commandManager = new DefaultCommandManager(); commandUIFactory = new DefaultCommandUIFactory(); commandUIFactory.setCommandManager(commandManager); commandMenuInserter = new DefaultCommandMenuInserter(commandManager); }
/** * Creates a menu item for the given executable command. * * @param command the executable command, must not be <code>null</code> * * @return the menu item */ public JMenuItem createMenuItem(ExecCommand command) { JMenuItem menuItem; if (command.isToggle()) { JCheckBoxMenuItem checkBoxMenuItem = new JCheckBoxMenuItem(command.getAction()); installMutualExclusiveInterest(checkBoxMenuItem, command); menuItem = checkBoxMenuItem; } else { menuItem = new JMenuItem(command.getAction()); } menuItem.setName(command.getCommandID()); KeyStroke keyStroke = command.getAccelerator(); if (keyStroke != null) { menuItem.setAccelerator(keyStroke); } // Ensure that the menu item has some text, so that is guranteed to be visible for the user if (menuItem.getText() == null) { menuItem.setText(command.getCommandID()); } enableHelp(menuItem, command); return menuItem; }
@Test public void testAddContextDependingMenuItemsOnlyOneTime() { DefaultCommandManager manager = new DefaultCommandManager(); createCommand("com1", manager); createCommand("com2", manager); createCommand("com3", manager); manager.getCommandAt(0).setProperty(Command.ACTION_KEY_CONTEXT, "band"); manager.getCommandAt(1).setProperty(Command.ACTION_KEY_CONTEXT, new String[]{"band", "virtualBand"}); manager.getCommandAt(2).setProperty(Command.ACTION_KEY_CONTEXT, "virtualBand"); DefaultCommandUIFactory uiFactory = new DefaultCommandUIFactory(); uiFactory.setCommandManager(manager); JPopupMenu bandMenu = new JPopupMenu(); uiFactory.addContextDependentMenuItems("virtualBand", bandMenu); assertEquals(2, bandMenu.getComponentCount()); JPopupMenu virtualBandMenu = new JPopupMenu(); uiFactory.addContextDependentMenuItems("band", virtualBandMenu); assertEquals(2, virtualBandMenu.getComponentCount()); JPopupMenu bandAndVbMenu = new JPopupMenu(); uiFactory.addContextDependentMenuItems("band", bandAndVbMenu); uiFactory.addContextDependentMenuItems("virtualBand", bandAndVbMenu); assertEquals(3, bandAndVbMenu.getComponentCount()); }
/** * Creates a tool bar button for the given tool command. * * @param command the tool command, must not be <code>null</code> * * @return the tool bar button */ public AbstractButton createToolBarButton(ToolCommand command) { AbstractButton button = ToolButtonFactory.createButton(command.getAction(), true); button.setName(command.getCommandID()); button.setSelected(command.isSelected()); installMutualExclusiveInterest(button, command); return button; }
/** * Creates a menu item for the given command group. * * @param commandGroup the command group, must not be <code>null</code> * * @return the menu item */ public JMenuItem createMenuItem(CommandGroup commandGroup) { JMenu menu = new JMenu(commandGroup.getAction()); menu.setName(commandGroup.getCommandID()); // Ensure that the menu has some text, so that is guranteed to be visible for the user if (menu.getText() == null) { menu.setText(commandGroup.getCommandID()); } enableHelp(menu, commandGroup); return menu; }
@Test public void testAddContextDependingMenuItems() { DefaultCommandManager manager = new DefaultCommandManager(); createCommand("com1", manager); createCommand("com2", manager); createCommand("com3", manager); manager.getCommandAt(0).setProperty(Command.ACTION_KEY_CONTEXT, "image"); manager.getCommandAt(1).setProperty(Command.ACTION_KEY_CONTEXT, "notImage"); manager.getCommandAt(2).setProperty(Command.ACTION_KEY_CONTEXT, "image"); manager.getCommandAt(2).setEnabled(false); DefaultCommandUIFactory uiFactory = new DefaultCommandUIFactory(); uiFactory.setCommandManager(manager); JPopupMenu menu = uiFactory.addContextDependentMenuItems("image", new JPopupMenu()); assertEquals(2, menu.getComponentCount()); menu = uiFactory.addContextDependentMenuItems("notImage", new JPopupMenu()); assertEquals(1, menu.getComponentCount()); }
/** * Creates a tool bar button for the given executable command. * * @param command the executable command, must not be <code>null</code> * * @return the tool bar button */ public AbstractButton createToolBarButton(ExecCommand command) { AbstractButton button = ToolButtonFactory.createButton(command.getAction(), command.isToggle()); button.setName(command.getCommandID()); button.setSelected(command.isSelected()); installMutualExclusiveInterest(button, command); return button; }
@Test public void testPlaceAtContextTop() { DefaultCommandManager manager = new DefaultCommandManager(); ExecCommand standardCommand1 = createCommand("com1", manager); ExecCommand standardCommand2 = createCommand("com2", manager); ExecCommand topCommand = createCommand("com3", manager); standardCommand1.setProperty(Command.ACTION_KEY_CONTEXT, "band"); standardCommand2.setProperty(Command.ACTION_KEY_CONTEXT, "band"); topCommand.setProperty(Command.ACTION_KEY_CONTEXT, "band"); topCommand.setPlaceAtContextTop(true); DefaultCommandUIFactory uiFactory = new DefaultCommandUIFactory(); uiFactory.setCommandManager(manager); JPopupMenu popup = new JPopupMenu(); uiFactory.addContextDependentMenuItems("band", popup); assertEquals(3, popup.getComponentCount()); String[] expectedOrder = new String[]{"com3", "com1", "com2",}; assertEquals(expectedOrder[0], popup.getComponent(0).getName()); assertEquals(expectedOrder[1], popup.getComponent(1).getName()); assertEquals(expectedOrder[2], popup.getComponent(2).getName()); }