diff --git a/platform/platform-impl/src/com/intellij/util/ui/CollectionModelEditor.java b/platform/platform-impl/src/com/intellij/util/ui/CollectionModelEditor.java index b3e0cbd6c396..395327aa653c 100644 --- a/platform/platform-impl/src/com/intellij/util/ui/CollectionModelEditor.java +++ b/platform/platform-impl/src/com/intellij/util/ui/CollectionModelEditor.java @@ -25,6 +25,7 @@ import gnu.trove.TObjectObjectProcedure; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import javax.swing.*; import java.util.List; public abstract class CollectionModelEditor> implements ElementProducer { @@ -146,4 +147,20 @@ public abstract class CollectionModelEditor modifiedToOriginal.forEachEntry(procedure); } } + + protected final boolean areSelectedItemsRemovable(@NotNull ListSelectionModel selectionMode) { + int minSelectionIndex = selectionMode.getMinSelectionIndex(); + int maxSelectionIndex = selectionMode.getMaxSelectionIndex(); + if (minSelectionIndex < 0 || maxSelectionIndex < 0) { + return false; + } + + List items = getItems(); + for (int i = minSelectionIndex; i <= maxSelectionIndex; i++) { + if (itemEditor.isRemovable(items.get(i))) { + return true; + } + } + return false; + } } \ No newline at end of file diff --git a/platform/platform-impl/src/com/intellij/util/ui/ListModelEditor.java b/platform/platform-impl/src/com/intellij/util/ui/ListModelEditor.java index 42150a78dcc0..ba9208c3ff91 100644 --- a/platform/platform-impl/src/com/intellij/util/ui/ListModelEditor.java +++ b/platform/platform-impl/src/com/intellij/util/ui/ListModelEditor.java @@ -15,6 +15,7 @@ */ package com.intellij.util.ui; +import com.intellij.openapi.actionSystem.AnActionEvent; import com.intellij.ui.*; import com.intellij.ui.components.JBList; import com.intellij.util.containers.ContainerUtil; @@ -35,7 +36,7 @@ public class ListModelEditor extends ListModelEditorBase { list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); list.setCellRenderer(new MyListCellRenderer()); - toolbarDecorator = ToolbarDecorator.createDecorator(list) + toolbarDecorator = ToolbarDecorator.createDecorator(list, model) .setAddAction(new AnActionButtonRunnable() { @Override public void run(AnActionButton button) { @@ -51,7 +52,13 @@ public class ListModelEditor extends ListModelEditorBase { model.add(item); ListScrollingUtil.selectItem(list, ContainerUtil.indexOfIdentity(model.getItems(), item)); } - }); + }) + .setRemoveActionUpdater(new AnActionButtonUpdater() { + @Override + public boolean isEnabled(AnActionEvent e) { + return areSelectedItemsRemovable(list.getSelectionModel()); + } + }); } @NotNull diff --git a/platform/platform-impl/src/com/intellij/util/ui/table/TableModelEditor.java b/platform/platform-impl/src/com/intellij/util/ui/table/TableModelEditor.java index 5d881b9e1777..8af243e1d817 100644 --- a/platform/platform-impl/src/com/intellij/util/ui/table/TableModelEditor.java +++ b/platform/platform-impl/src/com/intellij/util/ui/table/TableModelEditor.java @@ -365,12 +365,7 @@ public class TableModelEditor extends CollectionModelEditor