JPanel () { if (mySplitter == null) { mySplitter = new Splitter(false, 0.5f); final String value = PropertiesComponent.getInstance().getValue(SPLITTER_PROPORTION); if (value != null) { mySplitter.setProportion(Float.parseFloat(value)); } mySplitter.setFirstComponent( ToolbarDecorator.createDecorator(myMacrosList) .setEditAction(new AnActionButtonRunnable() { @Override public void run(AnActionButton button) { final int selIndex = myMacrosList.getSelectedIndex(); if (selIndex == -1) return; final ActionMacro macro = myMacrosModel.getElementAt(selIndex); String newName; do { newName = Messages.showInputDialog(mySplitter, IdeBundle.message("prompt.enter.new.name"), IdeBundle.message("title.rename.macro"), Messages.getQuestionIcon(), macro.getName(), null); if (newName == null || macro.getName().equals(newName)) return; } while (!canRenameMacro(newName)); myRenamingMap.put(ActionMacro.MACRO_ACTION_PREFIX + macro.getName(), ActionMacro.MACRO_ACTION_PREFIX + newName); macro.setName(newName); myMacrosList.repaint(); } private boolean canRenameMacro(final String name) { final Enumeration<ActionMacro> elements = myMacrosModel.elements(); while (elements.hasMoreElements()) { final ActionMacro macro = elements.nextElement(); if (macro.getName().equals(name)) { if (!MessageDialogBuilder .yesNo(IdeBundle.message("title.macro.name.already.used"), IdeBundle.message("message.macro.exists", name)) .icon(Messages.getWarningIcon()).ask(mySplitter)) { return false; } myMacrosModel.removeElement(macro); break; } } return true; } }).disableAddAction().disableUpDownActions().createPanel()); mySplitter.setSecondComponent( ToolbarDecorator.createDecorator(myMacroActionsList) .setRemoveAction(new AnActionButtonRunnable() { @Override public void run(AnActionButton button) { final int macrosSelectedIndex = myMacrosList.getSelectedIndex(); if (macrosSelectedIndex != -1) { final ActionMacro macro = myMacrosModel.getElementAt(macrosSelectedIndex); macro.deleteAction(myMacroActionsList.getSelectedIndex()); } ListUtil.removeSelectedItems(myMacroActionsList); } }).disableAddAction().disableUpDownActions().createPanel()); } return mySplitter; }