The following code can be
added to PipelineLayoutTool to permit automatic installation of
additional menu items in the PLT. Additional file dependencies and
examples attached.
protected JMenuBar createMenuBar() {
JISTApplicationPluginBuilder builder = new
JISTApplicationPluginBuilder();
toggleItems = new ArrayList();
JMenuBar menuBar = new JMenuBar();
JMenuItem menuItem;
JMenu menuFile = new JMenu("File");
menuFile.setMnemonic(KeyEvent.VK_F);
menuBar.add(menuFile);
JMenu menuEdit = new JMenu("Edit");
menuEdit.setMnemonic(KeyEvent.VK_E);
menuBar.add(menuEdit);
JMenu menuAction = new JMenu("Project");
menuAction.setMnemonic(KeyEvent.VK_P);
menuBar.add(menuAction);
menuItem = new JMenuItem("New");
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,
ActionEvent.CTRL_MASK));
menuItem.setMnemonic(KeyEvent.VK_N);
menuItem.addActionListener(this);
menuFile.add(menuItem);
menuItem = new JMenuItem("Open");
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O,
ActionEvent.CTRL_MASK));
menuItem.setMnemonic(KeyEvent.VK_O);
menuItem.addActionListener(this);
menuFile.add(menuItem);
recentFiles = new JMenu("Recent Files");
menuFile.add(recentFiles);
toggleItems.add(menuItem = new JMenuItem("Save"));
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
ActionEvent.CTRL_MASK));
menuItem.setMnemonic(KeyEvent.VK_S);
menuItem.addActionListener(this);
menuFile.add(menuItem);
toggleItems.add(menuItem = new JMenuItem("Save As..."));
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S,
ActionEvent.CTRL_MASK | ActionEvent.SHIFT_MASK));
menuItem.setMnemonic(KeyEvent.VK_A);
menuItem.addActionListener(this);
menuFile.add(menuItem);
toggleItems.add(menuItem = new JMenuItem("Close"));
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W,
ActionEvent.CTRL_MASK));
menuItem.setMnemonic(KeyEvent.VK_C);
menuItem.addActionListener(this);
menuFile.add(menuItem);
toggleItems.add(menuItem = new JMenuItem("Clear Image
Registry"));
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R,
ActionEvent.CTRL_MASK));
menuItem.setMnemonic(KeyEvent.VK_R);
menuItem.addActionListener(this);
menuFile.add(menuItem);
JMenu menuFilePlugins = new JMenu("More ...");
menuFile.add(menuFilePlugins);
menuItem = new JMenuItem("Exit");
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q,
ActionEvent.CTRL_MASK));
menuItem.setMnemonic(KeyEvent.VK_X);
menuItem.addActionListener(this);
menuFile.add(menuItem);
toggleItems.add(menuItem = new JMenuItem("Delete"));
menuItem.addActionListener(this);
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_DELETE,
0));
menuItem.setMnemonic(KeyEvent.VK_D);
menuEdit.add(menuItem);
removeItem = menuItem;
toggleItems.add(menuItem = new JMenuItem("Undo"));
menuItem.addActionListener(this);
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z,
ActionEvent.CTRL_MASK));
menuItem.setMnemonic(KeyEvent.VK_U);
menuEdit.add(menuItem);
undoItem = menuItem;
toggleItems.add(menuItem = new JMenuItem("Redo"));
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Y,
ActionEvent.CTRL_MASK));
menuItem.setMnemonic(KeyEvent.VK_R);
menuItem.addActionListener(this);
menuEdit.add(menuItem);
redoItem = menuItem;
toggleItems.add(menuItem = new JMenuItem("Cut"));
menuItem.addActionListener(this);
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_X,
ActionEvent.CTRL_MASK));
menuItem.setMnemonic(KeyEvent.VK_T);
menuEdit.add(menuItem);
cutItem = menuItem;
toggleItems.add(menuItem = new JMenuItem("Copy"));
menuItem.addActionListener(this);
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C,
ActionEvent.CTRL_MASK));
menuItem.setMnemonic(KeyEvent.VK_C);
menuEdit.add(menuItem);
copyItem = menuItem;
toggleItems.add(menuItem = new JMenuItem("Paste"));
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V,
ActionEvent.CTRL_MASK));
menuItem.addActionListener(this);
menuEdit.add(menuItem);
pasteItem = menuItem;
toggleItems.add(menuItem = new JMenuItem("Layout
Preferences"));
menuItem.addActionListener(this);
menuAction.add(menuItem);
menuItem = new JMenuItem("Global Preferences");
menuItem.addActionListener(this);
menuAction.add(menuItem);
menuItem = new JMenuItem("Rebuild Library");
menuItem.addActionListener(this);
menuAction.add(menuItem);
/*
* menuItem = new JMenuItem("Set Library Directory");
* menuItem.addActionListener(this); menuAction.add(menuItem);
*/
toggleItems.add(menuItem = new JMenuItem("Process Manager"));
menuItem.addActionListener(this);
menuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_M,
ActionEvent.CTRL_MASK));
menuItem.setMnemonic(KeyEvent.VK_M);
menuAction.add(menuItem);
JMenu menuPlugins = new JMenu("Plug-Ins");
menuPlugins.setMnemonic(KeyEvent.VK_G);
menuBar.add(menuPlugins);
JMenu menuHelp = new JMenu("Help");
menuHelp.setMnemonic(KeyEvent.VK_H);
menuBar.add(menuHelp);
toggleItems.add(aboutItem = new JMenuItem("About"));
aboutItem.addActionListener(this);
menuHelp.add(aboutItem);
JMenu menuActionPlugins = new JMenu("More ...");
menuAction.add(menuActionPlugins);
JMenu menuEditPlugins = new JMenu("More ...");
menuEdit.add(menuEditPlugins);
JISTApplicationPluginBuilder.ContextDataGrabber grabber = new
JISTApplicationPluginBuilder.ContextDataGrabber() {
public Object getContextData() {
return LayoutPanel.getInstance().getActiveFrame()
.getPipelineLayout();
}
};
//Specify menus where context data should be displayed.
builder.setMenu(ContextType.MENU_PROJECT, menuActionPlugins);
builder.setMenu(ContextType.MENU_PLUGINS, menuPlugins);
builder.setMenu(ContextType.MENU_HELP, menuHelp);
builder.setMenu(ContextType.MENU_FILE, menuFilePlugins);
builder.setMenu(ContextType.MENU_EDIT, menuEditPlugins);
//Specify grabber for pulling context data.
builder.setGrabber(ContextType.MENU_PROJECT, grabber);
builder.setGrabber(ContextType.MENU_PLUGINS, grabber);
builder.setGrabber(ContextType.MENU_HELP, grabber);
builder.setGrabber(ContextType.MENU_FILE, grabber);
builder.setGrabber(ContextType.MENU_EDIT, grabber);
//Thread installation process.
builder.install();
return menuBar;
}