diff --git a/java/debugger/impl/src/com/intellij/debugger/ui/InstanceFilterEditor.java b/java/debugger/impl/src/com/intellij/debugger/ui/InstanceFilterEditor.java index 19be8f6d1761..7970a9c68da9 100644 --- a/java/debugger/impl/src/com/intellij/debugger/ui/InstanceFilterEditor.java +++ b/java/debugger/impl/src/com/intellij/debugger/ui/InstanceFilterEditor.java @@ -20,6 +20,9 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.Messages; import com.intellij.ui.classFilter.ClassFilter; import com.intellij.ui.classFilter.ClassFilterEditor; +import com.intellij.util.IconUtil; + +import javax.swing.*; /** * User: lex @@ -29,7 +32,6 @@ import com.intellij.ui.classFilter.ClassFilterEditor; public class InstanceFilterEditor extends ClassFilterEditor { public InstanceFilterEditor(Project project) { super(project); - myAddPatternButton.setVisible(false); } protected void addClassFilter() { @@ -51,6 +53,16 @@ public class InstanceFilterEditor extends ClassFilterEditor { return DebuggerBundle.message("button.add"); } + @Override + protected Icon getAddButtonIcon() { + return IconUtil.getAddIcon(); + } + + @Override + protected boolean addPatternButtonVisible() { + return false; + } + protected ClassFilter createFilter(String pattern) { try { Long.parseLong(pattern); diff --git a/java/openapi/src/com/intellij/ui/classFilter/ClassFilterEditor.java b/java/openapi/src/com/intellij/ui/classFilter/ClassFilterEditor.java index 570c90aa8d55..b27b7dce8d2f 100644 --- a/java/openapi/src/com/intellij/ui/classFilter/ClassFilterEditor.java +++ b/java/openapi/src/com/intellij/ui/classFilter/ClassFilterEditor.java @@ -47,7 +47,6 @@ import java.util.LinkedList; import java.util.List; public class ClassFilterEditor extends JPanel implements ComponentWithEmptyText { - protected AnActionButton myAddPatternButton; protected JBTable myTable = null; protected FilterTableModel myTableModel = null; protected final Project myProject; @@ -68,20 +67,21 @@ public class ClassFilterEditor extends JPanel implements ComponentWithEmptyText myPatternsHelpId = patternsHelpId; myTable = new JBTable(); - add( - ToolbarDecorator.createDecorator(myTable) - .addExtraAction(new AnActionButton(getAddButtonText(), IconUtil.getAddClassIcon()) { - @Override - public void actionPerformed(AnActionEvent e) { - addClassFilter(); - } + final ToolbarDecorator decorator = ToolbarDecorator.createDecorator(myTable) + .addExtraAction(new AnActionButton(getAddButtonText(), getAddButtonIcon()) { + @Override + public void actionPerformed(AnActionEvent e) { + addClassFilter(); + } - @Override - public void updateButton(AnActionEvent e) { - super.updateButton(e); - setEnabled(!myProject.isDefault()); - } - }).addExtraAction(myAddPatternButton = new AnActionButton(getAddPatternButtonText(), IconUtil.getAddPatternIcon()) { + @Override + public void updateButton(AnActionEvent e) { + super.updateButton(e); + setEnabled(!myProject.isDefault()); + } + }); + if (addPatternButtonVisible()) { + decorator.addExtraAction(new AnActionButton(getAddPatternButtonText(), getAddPatternButtonIcon()) { @Override public void actionPerformed(AnActionEvent e) { addPatternFilter(); @@ -92,14 +92,15 @@ public class ClassFilterEditor extends JPanel implements ComponentWithEmptyText super.updateButton(e); setEnabled(!myProject.isDefault()); } - }).setRemoveAction(new AnActionButtonRunnable() { - @Override - public void run(AnActionButton button) { - TableUtil.removeSelectedItems(myTable); - } - }).setButtonComparator(getAddButtonText(), getAddPatternButtonText(), "Remove") - .disableUpDownActions().createPanel(), BorderLayout.CENTER - ); + }); + } + add(decorator.setRemoveAction(new AnActionButtonRunnable() { + @Override + public void run(AnActionButton button) { + TableUtil.removeSelectedItems(myTable); + } + }).setButtonComparator(getAddButtonText(), getAddPatternButtonText(), "Remove") + .disableUpDownActions().createPanel(), BorderLayout.CENTER); myChooserFilter = classFilter; myProject = project; @@ -137,6 +138,18 @@ public class ClassFilterEditor extends JPanel implements ComponentWithEmptyText return UIBundle.message("button.add.pattern"); } + protected Icon getAddButtonIcon() { + return IconUtil.getAddClassIcon(); + } + + protected Icon getAddPatternButtonIcon() { + return IconUtil.getAddPatternIcon(); + } + + protected boolean addPatternButtonVisible() { + return true; + } + public void setFilters(com.intellij.ui.classFilter.ClassFilter[] filters) { myTableModel.setFilters(filters); } diff --git a/platform/core-api/src/com/intellij/util/PlatformIcons.java b/platform/core-api/src/com/intellij/util/PlatformIcons.java index 2650f5219f92..7de89de85ea8 100644 --- a/platform/core-api/src/com/intellij/util/PlatformIcons.java +++ b/platform/core-api/src/com/intellij/util/PlatformIcons.java @@ -116,4 +116,6 @@ public interface PlatformIcons { Icon EXPORT_ICON = IconLoader.getIcon("/toolbarDecorator/export.png"); Icon IMPORT_ICON = IconLoader.getIcon("/toolbarDecorator/import.png"); + + Icon SEPARATOR_HORIZONTAL_ICON = IconLoader.getIcon("/general/separatorH.png"); } diff --git a/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/QuickListPanel.form b/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/QuickListPanel.form index 758323b6d653..bb2584ca890d 100644 --- a/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/QuickListPanel.form +++ b/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/QuickListPanel.form @@ -50,83 +50,13 @@ - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/QuickListPanel.java b/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/QuickListPanel.java index 3dadaa95ca61..c18c98d4a148 100644 --- a/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/QuickListPanel.java +++ b/platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/QuickListPanel.java @@ -17,6 +17,7 @@ package com.intellij.openapi.keymap.impl.ui; import com.intellij.openapi.actionSystem.ActionManager; import com.intellij.openapi.actionSystem.AnAction; +import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.openapi.actionSystem.Separator; import com.intellij.openapi.actionSystem.ex.QuickList; import com.intellij.openapi.actionSystem.ex.QuickListsManager; @@ -24,43 +25,37 @@ import com.intellij.openapi.keymap.KeyMapBundle; import com.intellij.openapi.keymap.KeymapManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.IconLoader; -import com.intellij.ui.DocumentAdapter; -import com.intellij.ui.JBDefaultTreeCellRenderer; +import com.intellij.ui.*; import com.intellij.ui.components.JBList; +import com.intellij.util.PlatformIcons; import com.intellij.util.ui.EmptyIcon; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NotNull; import javax.swing.*; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; import javax.swing.tree.DefaultMutableTreeNode; import java.awt.*; -import java.awt.event.*; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; public class QuickListPanel { private static final Icon EMPTY_ICON = EmptyIcon.ICON_18; private static final Icon QUICK_LIST_ICON = IconLoader.getIcon("/actions/quickList.png"); - private JButton myRemoveActionButton; - private JButton myIncludeActionButton; - private JButton myMoveActionDownButton; - private JButton myMoveActionUpButton; private JPanel myPanel; private JBList myActionsList; private JTextField myDisplayName; private JTextField myDescription; - private JButton myAddSeparatorButton; - private final boolean myEditable; + private JPanel myListPanel; private final QuickList[] myAllQuickLists; public QuickListPanel(QuickList origin, final QuickList[] allQuickLists, Project project) { myAllQuickLists = allQuickLists; - myEditable = !QuickListsManager.getInstance().getSchemesManager().isShared(origin); - myActionsList.setModel(new DefaultListModel()); + myActionsList = new JBList(new DefaultListModel()); myActionsList.setCellRenderer(new MyListCellRenderer()); myActionsList.getEmptyText().setText(KeyMapBundle.message("no.actions")); + myActionsList.setEnabled(!QuickListsManager.getInstance().getSchemesManager().isShared(origin)); myActionsList.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { @@ -70,61 +65,19 @@ public class QuickListPanel { } }); - myActionsList.getSelectionModel().addListSelectionListener(new ListSelectionListener() { - public void valueChanged(ListSelectionEvent e) { - update(); - } - }); - - myIncludeActionButton.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - includeSelectedAction(); - } - }); - - myAddSeparatorButton.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - addSeparator(); - } - }); - - myActionsList.registerKeyboardAction(new ActionListener() { - public void actionPerformed(ActionEvent e) { - excludeSelectionAction(); - } - }, KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0), JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); - - myRemoveActionButton.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - excludeSelectionAction(); - } - }); - - myMoveActionUpButton.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - int idx = myActionsList.getSelectedIndex(); - if (idx > 0) { - DefaultListModel listModel = (DefaultListModel)myActionsList.getModel(); - Object oldValue = listModel.get(idx); - listModel.removeElementAt(idx); - listModel.add(--idx, oldValue); - myActionsList.getSelectionModel().setSelectionInterval(idx, idx); + myListPanel.add( + ToolbarDecorator.createDecorator(myActionsList) + .setAddAction(new AnActionButtonRunnable() { + @Override + public void run(AnActionButton button) { + includeSelectedAction(); + } + }).addExtraAction(new AnActionButton("Add Separator", PlatformIcons.SEPARATOR_HORIZONTAL_ICON) { + @Override + public void actionPerformed(AnActionEvent e) { + addSeparator(); } - } - }); - - myMoveActionDownButton.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - int idx = myActionsList.getSelectedIndex(); - DefaultListModel listModel = (DefaultListModel)myActionsList.getModel(); - if (idx < listModel.getSize() - 1) { - Object oldValue = listModel.get(idx); - listModel.removeElementAt(idx); - listModel.add(++idx, oldValue); - myActionsList.getSelectionModel().setSelectionInterval(idx, idx); - } - } - }); + }).setButtonComparator("Add", "Add Separator", "Remove", "Up", "Down").createPanel(), BorderLayout.CENTER); myDisplayName.setText(origin.getDisplayName()); myDescription.setText(origin.getDescription()); @@ -133,11 +86,9 @@ public class QuickListPanel { for (String id : ids) { includeActionId(id); } - - update(); } - public void addNameListener(DocumentAdapter adapter){ + public void addNameListener(DocumentAdapter adapter) { myDisplayName.getDocument().addDocumentListener(adapter); } @@ -147,10 +98,9 @@ public class QuickListPanel { private void excludeSelectionAction() { int[] ids = myActionsList.getSelectedIndices(); - for (int i = ids.length - 1; i >=0; i--) { + for (int i = ids.length - 1; i >= 0; i--) { ((DefaultListModel)myActionsList.getModel()).remove(ids[i]); } - update(); } private void includeSelectedAction() { @@ -174,14 +124,12 @@ public class QuickListPanel { selectionModel.addSelectionInterval(idx, idx); } } - update(); } } private void addSeparator() { DefaultListModel model = (DefaultListModel)myActionsList.getModel(); model.addElement(QuickList.SEPARATOR_ID); - update(); } public JList getActionsList() { @@ -196,24 +144,6 @@ public class QuickListPanel { return myDisplayName.getText(); } - private void update() { - if (myEditable) { - myIncludeActionButton.setEnabled(true); - myRemoveActionButton.setEnabled(myActionsList.getSelectedValues().length > 0); - boolean enableMove = myActionsList.getSelectedValues().length == 1; - myMoveActionUpButton.setEnabled(enableMove && myActionsList.getSelectedIndex() > 0); - myMoveActionDownButton.setEnabled(enableMove && myActionsList.getSelectedIndex() < myActionsList.getModel().getSize() - 1); - } - else { - myIncludeActionButton.setEnabled(false); - myRemoveActionButton.setEnabled(false); - myMoveActionUpButton.setEnabled(false); - myMoveActionDownButton.setEnabled(false); - myAddSeparatorButton.setEnabled(false); - - } - } - private void includeActionId(String id) { DefaultListModel model = (DefaultListModel)myActionsList.getModel(); if (!QuickList.SEPARATOR_ID.equals(id) && model.contains(id)) return; @@ -251,8 +181,6 @@ public class QuickListPanel { if (icon == null) { icon = expanded ? getOpenIcon() : getClosedIcon(); } - - } else if (userObject instanceof String) { String actionId = (String)userObject; @@ -277,7 +205,6 @@ public class QuickListPanel { else if (userObject instanceof Separator) { // TODO[vova,anton]: beautify setText("-------------"); - } else { throw new IllegalArgumentException("unknown userObject: " + userObject); @@ -289,7 +216,7 @@ public class QuickListPanel { setForeground(getSelectionForeground(tree)); } else { - Color foreground = used ? UIUtil.getInactiveTextColor() :UIUtil.getTreeForeground(); + Color foreground = used ? UIUtil.getInactiveTextColor() : UIUtil.getTreeForeground(); setForeground(foreground); } } @@ -319,7 +246,7 @@ public class QuickListPanel { icon = actionIcon; } } - if (actionId.startsWith(QuickList.QUICK_LIST_PREFIX)){ + if (actionId.startsWith(QuickList.QUICK_LIST_PREFIX)) { icon = QUICK_LIST_ICON; } setIcon(ActionsTree.getEvenIcon(icon)); diff --git a/platform/platform-resources-en/src/messages/CodeInsightBundle.properties b/platform/platform-resources-en/src/messages/CodeInsightBundle.properties index d2b6f218630a..44959f82bda1 100644 --- a/platform/platform-resources-en/src/messages/CodeInsightBundle.properties +++ b/platform/platform-resources-en/src/messages/CodeInsightBundle.properties @@ -396,7 +396,7 @@ i18nize.error.title=Cannot I18nize Selection i18nize.error.message=You can only i18nize Java string literal or substring thereof.\nPlease point the caret inside Java string literal or select part of it. display.coverage.prompt=Do you want to display coverage data for ''{0}''? code.coverage=Code Coverage -coverage.button.add.package=Add &Package +coverage.button.add.package=Add Package coverage.pattern.filter.editor.choose.package.title=Choose Package no.coverage=No coverage code.coverage.is.not.supported=Code coverage is supported for jre 5.0 or higher diff --git a/resources-en/src/messages/DebuggerBundle.properties b/resources-en/src/messages/DebuggerBundle.properties index 540078755e40..37b2fbe141bc 100644 --- a/resources-en/src/messages/DebuggerBundle.properties +++ b/resources-en/src/messages/DebuggerBundle.properties @@ -198,7 +198,7 @@ label.compound.renderer.configurable.when.expanding=When expanding the node label.compound.renderer.configurable.test.can.expand=Test if the node can be expanded (optional): title.compound.renderer.configurable.choose.renderer.reference.type=Renderer Reference Type text.base.renderer.configurable.no.class.patterns=No class patterns configured -button.add=&Add +button.add=Add button.remove=&Remove button.move.up=Move &Up button.move.down=Move &Down