private static CommandMenuItem makeItem(String label, String command, String submenu, int pos, String key) { if (command == null) { // For separators return new CommandMenuItem(null, null, submenu, pos, key); } CustomCommand parsedCommand = CustomCommand.parse(command.trim()); return new CommandMenuItem(label, parsedCommand, submenu, pos, key); }
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; }
if (item.getCommand() == null) { continue; JButton button = new JButton(item.getLabel()); button.addActionListener(listener); button.setToolTipText(item.getCommand().toString()); commands.put(button, item.getCommand()); if (item.getParent() != null && !item.getParent().startsWith("a")) { secondaryButton = true; button.setMargin(GuiUtil.SMALL_BUTTON_INSETS); getRow(item.getParent()).add(button); if (item.getCommand() != null && item.getCommand().getCommandName() != null) { String commandName = item.getCommand().getCommandName(); if (commandName.equalsIgnoreCase("modunmod")) { button.setVisible(false); addShortcut(item.getKey(), button, secondaryButton, noKeyLabels);
@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; } };
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; }
List<CommandMenuItem> items = CommandMenuItems.parse(value); for (CommandMenuItem item : items) { if (item.getCommand() != null && item.getCommand().getError() != 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); errorCount++;
private static CommandMenuItem parseSeparator(String line, String currentSubmenu) { line = line.trim(); Matcher m = SEPARTOR_PATTERN.matcher(line); if (m.matches()) { String submenu = m.group(1) != null ? currentSubmenu : null; int pos = m.group(2) == null ? -1 : Integer.parseInt(m.group(2)); return new CommandMenuItem(null, null, submenu, pos, null); } return null; }
private static CommandMenuItem parseSubmenu(String line) { line = line.trim(); Matcher m = SUBMENU_PATTERN.matcher(line); if (m.matches()) { String name = m.group(1).trim(); int pos = m.group(2) == null ? -1 : Integer.parseInt(m.group(2)); String key = m.group(3); return new CommandMenuItem(name, null, null, pos, key); } return null; }
expected1.add(new CommandMenuItem("Test", CustomCommand.parse("/Hello"), null, -1, null)); expected1.add(new CommandMenuItem("Test", CustomCommand.parse("/Hello"), null, 0, null)); expected1.add(new CommandMenuItem("Test", CustomCommand.parse("/Hello"), null, 0, "k")); expected1.add(new CommandMenuItem("Test", CustomCommand.parse("/Hello"), null, -1, "k")); expected1.add(new CommandMenuItem("Test", CustomCommand.parse("/Hello"), null, -1, "k")); expected1.add(new CommandMenuItem("Test", CustomCommand.parse("/Test $1-"), null, -1, null)); expected1.add(new CommandMenuItem("Test", CustomCommand.parse("/Test $1-"), null, 0, null)); expected1.add(new CommandMenuItem("Test", CustomCommand.parse("/Test $1-"), null, 0, "k")); expected1.add(new CommandMenuItem("Test", CustomCommand.parse("/Test $1-"), null, -1, "k")); expected1.add(new CommandMenuItem("Hello World", CustomCommand.parse("/Hello_World $1-"), null, -1, null)); expected1.add(new CommandMenuItem("Menu Name", null, null, -1, null)); expected1.add(new CommandMenuItem("Menu Name", null, null, 0, null)); expected1.add(new CommandMenuItem("Menu Name", null, null, 0, "k")); expected1.add(new CommandMenuItem(null, null, "Menu Name", -1, null)); expected1.add(new CommandMenuItem(null, null, null, -1, null)); expected1.add(new CommandMenuItem(null, null, null, 0, null)); expected1.add(new CommandMenuItem(null, null, null, 1, null)); expected1.add(new CommandMenuItem(null, null, "Menu Name", 0, null)); expected1.add(new CommandMenuItem("1m", CustomCommand.parse("/timeout $1 60 $2-"), null, -1, null)); expected1.add(new CommandMenuItem("1m", CustomCommand.parse("/timeout $1 60 $2-"), null, -1, "ctrl+t")); expected1.add(new CommandMenuItem("1m", CustomCommand.parse("/timeout $1 60 $2-"), null, -1, "ctrl+t|ct")); expected1.add(new CommandMenuItem("1m", CustomCommand.parse("/timeout $1 60 $2-"), null, 0, null)); expected1.add(new CommandMenuItem("Test", CustomCommand.parse("/Test $1-"), "Menu Name", -1, null)); expected1.add(new CommandMenuItem("Test", CustomCommand.parse("/Test $1-"), CommandMenuItems.CUSTOM_COMMANDS_SUBMENU, -1, null)); expected1.add(new CommandMenuItem("Test", CustomCommand.parse("/Test $1-"), "Menu Name", -1, null)); expected1.add(new CommandMenuItem("60s", CustomCommand.parse("/timeout $1 60 $2-"), null, -1, null)); expected1.add(new CommandMenuItem("1m", CustomCommand.parse("/timeout $1 60 $2-"), null, -1, null)); expected1.add(new CommandMenuItem("1m", CustomCommand.parse("/timeout $1 60 $2-"), null, -1, null)); expected1.add(new CommandMenuItem("Uptime", CustomCommand.parse("Stream Uptime: $(streamuptime)"), null, -1, null));