/** Registers this ImageJ 1.x plugin. */ public static void registerMenuItem() { // inject Help>Switch to Modern Mode @SuppressWarnings("unchecked") final Hashtable<String, String> commands = Menus.getCommands(); if (commands != null && !commands.containsKey(MENU_LABEL)) { ActionListener ij1 = IJ.getInstance(); if (ij1 != null) { final Menu helpMenu = Menus.getMenuBar().getHelpMenu(); final MenuItem item = new MenuItem(MENU_LABEL); item.addActionListener(ij1); int index = helpMenu.getItemCount(); while (index > 0) { final String label = helpMenu.getItem(index - 1).getLabel(); if (label.equals("-") || label.startsWith("Update") || label.endsWith("Wiki")) { index--; } else { break; } } helpMenu.insert(item, index); } commands.put(MENU_LABEL, SwitchToModernMode.class.getName()); } } }
/** Gets lists of all the class and jar files in the plugins folder and subfolders of the plugins folder. */ void getPathsAndNames() { String path = Menus.getPlugInsPath(); if (path==null) return; File f = new File(path); String[] list = f.list(); if (list==null) return; Vector v1 = new Vector(1000); Vector v2 = new Vector(1000); for (int i=0; i<list.length; i++) { String name = list[i]; if (name.endsWith(".class") || name.endsWith(".jar")) { v1.addElement(path); v2.addElement(name); } else getSubdirectoryFiles(path, name, v1, v2); } paths = new String[v1.size()]; v1.copyInto((String[])paths); names = new String[v2.size()]; v2.copyInto((String[])names); }
public static void updateImageJMenus() { jarFiles = macroFiles = null; Menus m = new Menus(IJ.getInstance(), IJ.getApplet()); String err = m.addMenuBar(); if (err!=null) IJ.error(err); m.installStartupMacroSet(); IJ.resetClassLoader(); IJ.runPlugIn("ij.plugin.ClassChecker", ""); IJ.showStatus("Menus updated: "+m.nPlugins + " commands, " + m.nMacros + " macros"); }
static void init() { Menus m = new Menus(null, null); Prefs.load(m, null); m.addMenuBar(); }
void removeShortcuts() { Menus.getMacroShortcuts().clear(); Hashtable shortcuts = Menus.getShortcuts(); for (Enumeration en=shortcuts.keys(); en.hasMoreElements();) { Integer key = (Integer)en.nextElement(); String value = (String)shortcuts.get(key); if (value.charAt(0)==commandPrefix) shortcuts.remove(key); } }
String[] getShortcuts() { Vector v = new Vector(); Hashtable commandTable = Menus.getCommands(); for (Enumeration en=commandTable.keys(); en.hasMoreElements();) { String cmd = (String)en.nextElement(); if (cmd.startsWith("*")) v.addElement(cmd); } if (v.size()==0) return null; String[] list = new String[v.size()]; v.copyInto((String[])list); Arrays.sort(list, String.CASE_INSENSITIVE_ORDER); return list; }
public static boolean addAmiraTableList(GenericDialog g, String t) { Vector vector = new Vector(); MenuBar mbar = Menus.getMenuBar(); Menu menu = null; for (int i = 0; i < mbar.getMenuCount(); i++) if (mbar.getMenu(i).getLabel().equals("Window")) { menu = mbar.getMenu(i); break; } if (menu == null) throw new RuntimeException("no Window menu?"); for (int i = 0; i < menu.getItemCount(); i++) { String title = menu.getItem(i).getLabel(); Frame frame = WindowManager.getFrame(title); if (frame != null && frame instanceof AmiraTable) vector.add(title); } if (vector.size() < 1) { IJ.error("No AmiraTable available"); return false; } addChoice(g, t, vector); return true; }
String[] getAllCommands() { Vector v = new Vector(); Hashtable commandTable = Menus.getCommands(); Hashtable shortcuts = Menus.getShortcuts(); for (Enumeration en=commandTable.keys(); en.hasMoreElements();) { String cmd = (String)en.nextElement(); if (!cmd.startsWith("*") && !cmd.startsWith(" ") && cmd.length()<35 && !shortcuts.contains(cmd)) v.addElement(cmd); } String[] list = new String[v.size()]; v.copyInto((String[])list); Arrays.sort(list, String.CASE_INSENSITIVE_ORDER); return list; }
public String[] getShortcuts() { Vector v = new Vector(); Hashtable shortcuts = Menus.getShortcuts(); addShortcutsToVector(shortcuts, v); Hashtable macroShortcuts = Menus.getMacroShortcuts(); addShortcutsToVector(macroShortcuts, v); String[] list = new String[v.size()]; v.copyInto((String[])list); return list; }
if (len>3 || (len>1&&shortcut.charAt(0)!='F'&&shortcut.charAt(0)!='N')) return; int code = Menus.convertShortcutToCode(shortcut); if (code==0) return; Hashtable macroShortcuts = Menus.getMacroShortcuts(); macroShortcuts.put(new Integer(code), commandPrefix+name); nShortcuts++; return; Hashtable shortcuts = Menus.getShortcuts(); if (shortcuts.get(new Integer(code))!=null) { if (shortcutsInUse==null) shortcutsInUse = "\n \n"; return; shortcuts.put(new Integer(code), commandPrefix+name); nShortcuts++;
public static String[] getSampleImageNames() { ArrayList list = new ArrayList(); Hashtable commands = Menus.getCommands(); Menu samplesMenu = Menus.getImageJMenu("File>Open Samples"); if (samplesMenu==null) return new String[0]; for (int i=0; i<samplesMenu.getItemCount(); i++) { MenuItem menuItem = samplesMenu.getItem(i); if (menuItem.getActionListeners().length == 0) continue; // separator? String label = menuItem.getLabel(); if (label.contains("Cache Sample Images")) continue; String command = (String)commands.get(label); if (command==null) continue; String[] items = command.split("\""); if (items.length!=3) continue; String name = items[1]; list.add(name); } return (String[])list.toArray(new String[list.size()]); }
public static void install() { @SuppressWarnings("unchecked") Hashtable<String, String> commands = Menus.getCommands(); InstallHandler handler = new InstallHandler(commands); handleSamples(handler); if (!commands.containsKey(menuItemLabel)) { MenuItem item; if (commands.containsKey(ij1MenuItemLabel)) { item = FijiTools.getMenuItem(menuPath + ">" + ij1MenuItemLabel); commands.put(ij1MenuItemLabel, thisPlugin + "(\"cache\")"); commands.put(menuItemLabel, thisPlugin + "(\"cache\")"); } else { item = FijiTools.installPlugin(menuPath, menuItemLabel, thisPlugin + "(\"cache\")"); } if (item != null) item.setEnabled(handler.hasUncached); } }
void setCommands() { interp.getParens(); Hashtable commands = Menus.getCommands(); props = new Properties(); for (Enumeration en=commands.keys(); en.hasMoreElements();) { String command = (String)en.nextElement(); props.setProperty(command, (String)commands.get(command)); } }
public void keyPressed(KeyEvent e) { int keyCode = e.getKeyCode(); IJ.setKeyDown(keyCode); hotkey = false; if (keyCode==KeyEvent.VK_CONTROL || keyCode==KeyEvent.VK_SHIFT) return; if ((flags & KeyEvent.META_MASK)!=0 && IJ.isMacOSX()) return; if (alt) { Hashtable macroShortcuts = Menus.getMacroShortcuts(); if (macroShortcuts.size()>0) { if (shift) cmd = (String)macroShortcuts.get(new Integer(keyCode+200)); else cmd = (String)macroShortcuts.get(new Integer(keyCode)); if (cmd!=null) { commandName = cmd; || (keyCode>=KeyEvent.VK_NUMPAD0 && keyCode<=KeyEvent.VK_NUMPAD9); if ((!Prefs.requireControlKey||control||meta||functionKey||numPad) && keyChar!='+') { Hashtable shortcuts = Menus.getShortcuts(); if (shift) cmd = (String)shortcuts.get(new Integer(keyCode+200));
void runCommand(String cmd) { Hashtable table = Menus.getCommands(); String className = (String)table.get(cmd); if (className!=null) { String arg = ""; if (IJ.shiftKeyDown() && className.startsWith("ij.plugin.Macro_Runner") && !Menus.getShortcuts().contains("*"+cmd)) IJ.open(IJ.getDirectory("plugins")+arg); else IJ.runPlugIn(cmd, className, arg); if ("Auto Threshold".equals(cmd)&&(String)table.get("Auto Threshold...")!=null) runCommand("Auto Threshold..."); else if ("Enhance Local Contrast (CLAHE)".equals(cmd)&&(String)table.get("CLAHE ")!=null)
if (byName) { command = gd.getNextString(); Hashtable cmds = Menus.getCommands(); if (cmds==null || cmds.get(command)==null) { String command2 = command; if (cmds.get(command)==null) command = command+" "; if (cmds.get(command)==null) { command = command2 + "..."; if (cmds.get(command)==null) { command = command2; IJ.error("Command not found:\n \n "+ "\""+command+"\""); return; Hashtable cmds = Menus.getCommands(); if (command.contains("[") && cmds!=null && cmds.get(command)==null) { if (cmds.get(command+"]")!=null) int err = Menus.installPlugin(plugin,Menus.SHORTCUTS_MENU,"*"+command,shortcut,IJ.getInstance()); switch (err) { case Menus.COMMAND_IN_USE: IJ.showMessage(TITLE, "The command \"" + command + "\" is already installed."); break; case Menus.INVALID_SHORTCUT:
private void listCommands() { String[] commands = getAllCommands(); Hashtable classes = Menus.getCommands(); ResultsTable rt = new ResultsTable(); for (int i=0; i<commands.length; i++) { rt.incrementCounter(); rt.addValue("Command", commands[i]); rt.addValue("Plugin", (String)classes.get(commands[i])); } rt.show("Commands"); }
/** * Runs the command associated with a menu label if there is one. * * @param menuLabel the label of the menu item to run * @param arg the arg to pass to the plugin's run() (or setup()) method */ public static void runGently(String menuLabel, final String arg) { String className = (String)Menus.getCommands().get(menuLabel); if (className != null) IJ.runPlugIn(className, null); }
protected static void handleSamples(SampleHandler handler) { Menu menu = (Menu)FijiTools.getMenuItem(menuPath); if (menu == null) return; Hashtable<?, ?> commands = Menus.getCommands(); for (int i = 0; i < menu.getItemCount(); i++) { String label = menu.getItem(i).getLabel(); String command = (String)commands.get(label); String url = null; if (command != null && command.endsWith("\")") && command.startsWith(plugin + "(\"")) url = command.substring(plugin.length() + 2, command.length() - 2); else if (command != null && command.endsWith("\")") && command.startsWith(thisPlugin + "(\"")) url = command.substring(thisPlugin.length() + 2, command.length() - 2); else continue; if (url.equals("cache")) continue; if (url.indexOf('/') < 0) url = IJ.URL + "/images/" + url; handler.handle(label, url); } }
void undefined() { if (nextToken()=='(') error("Undefined identifier"); else { if (pgm.getSize()==1) { String cmd = pgm.decodeToken(pgm.code[0]); cmd = cmd.replaceAll("_", " "); Hashtable commands = Menus.getCommands(); if (commands!=null && commands.get(cmd)!=null) IJ.run(cmd); else error("Undefined variable"); } else error("Undefined variable"); } }