public static List<CommandMenuItem> parse(String input) { List<CommandMenuItem> result = new LinkedList<>(); if (input == null || input.isEmpty()) { return result; } String[] lines = input.split("\n"); String submenuName = null; for (String line : lines) { CommandMenuItem submenu; CommandMenuItem separator; CommandMenuItem item; if ((submenu = parseSubmenu(line)) != null) { submenuName = submenu.getLabel(); result.add(submenu); } else if ((separator = parseSeparator(line, submenuName)) != null) { result.add(separator); } else if ((item = parseCommand(line, submenuName)) != null) { result.add(item); } else { result.addAll(addCustomCommands(line, submenuName)); } } return result; }
@Override public String test(Window parent, Component component, int x, int y, String value) { StringBuilder errors = new StringBuilder(); List<CommandMenuItem> items = CommandMenuItems.parse(value); for (CommandMenuItem item : items) { if (item.getCommand() != null && item.getCommand().hasError()) { errors.append("<p style='font-family:monospaced;'>"); errors.append("Error in command '").append(item.getLabel()).append("': "); errors.append(formatCommandInfo(item.getCommand().getError())); errors.append("</p>"); } } String output = "No errors found."; if (errors.length() > 0) { output = errors.toString(); } GuiUtil.showNonModalMessage(parent, "Custom Commands", output, JOptionPane.INFORMATION_MESSAGE, true); return null; } };
continue; JButton button = new JButton(item.getLabel()); button.addActionListener(listener); button.setToolTipText(item.getCommand().toString());
public JMenuItem addCommandItem(CommandMenuItem item) { if (item.getCommand() == null && item.getLabel() == null) { addSeparator(item.getPos(), item.getParent()); } else if (item.getCommand() == null) { JMenu menu = getSubmenu(item.getLabel(), item.getPos()); addKey(item, menu); } else { commands.put(item.getId(), item.getCommand()); JMenuItem mItem = addItem(item.getId(), item.getLabel(), item.getPos(), item.getParent(), null); addKey(item, mItem); } return null; }
String errorDescription = String.format( "<p style='font-family:monospaced;'>%s=Error: %s</p>", item.getLabel(), CommandSettings.formatCommandInfo(item.getCommand().getError())); errorsInfo = StringUtil.append(errorsInfo, "<br />", errorDescription);