From c042799952438ee3e4ed58eea79bdcf028419c97 Mon Sep 17 00:00:00 2001 From: nik Date: Sun, 11 Mar 2012 17:32:03 +0400 Subject: [PATCH] IDEA-82281: It's hard to remove all roots as 'Delete' button is disabled if group node (e.g. 'Classes') is selected --- .../libraryEditor/LibraryRootsComponent.java | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/LibraryRootsComponent.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/LibraryRootsComponent.java index fa6fbf5e7eda..4a6ea36e7de0 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/LibraryRootsComponent.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/libraryEditor/LibraryRootsComponent.java @@ -158,6 +158,13 @@ public class LibraryRootsComponent implements Disposable, LibraryEditorComponent final ItemElement itemElement = (ItemElement)selectedElement; getLibraryEditor().removeRoot(itemElement.getUrl(), itemElement.getRootType()); } + else if (selectedElement instanceof OrderRootTypeElement) { + final OrderRootType rootType = ((OrderRootTypeElement)selectedElement).getOrderRootType(); + final String[] urls = getLibraryEditor().getUrls(rootType); + for (String url : urls) { + getLibraryEditor().removeRoot(url, rootType); + } + } } } }); @@ -197,8 +204,15 @@ public class LibraryRootsComponent implements Disposable, LibraryEditorComponent @Override public boolean isEnabled(AnActionEvent e) { final Object[] selectedElements = getSelectedElements(); - final Class elementsClass = getElementsClass(selectedElements); - return elementsClass != null && !elementsClass.isAssignableFrom(OrderRootTypeElement.class); + for (Object element : selectedElements) { + if (element instanceof ItemElement) { + return true; + } + if (element instanceof OrderRootTypeElement && getLibraryEditor().getUrls(((OrderRootTypeElement)element).getOrderRootType()).length > 0) { + return true; + } + } + return false; } });