From d183a7944ad11ac587f2c041d5de805e511ad5c4 Mon Sep 17 00:00:00 2001 From: "kirill.safonov" Date: Tue, 14 Feb 2012 16:19:58 +0400 Subject: [PATCH] Flex project configuration: remove dependency entry when library is deleted (AS-212) --- .../ui/configuration/artifacts/UsageInArtifact.java | 5 +++++ .../projectRoot/BaseLibrariesConfigurable.java | 10 +++------- .../daemon/ProjectStructureElementUsage.java | 2 ++ .../projectRoot/daemon/UsageInModuleClasspath.java | 9 +++++++++ 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/UsageInArtifact.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/UsageInArtifact.java index 72ec74a4e222..942f4d4fc844 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/UsageInArtifact.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/UsageInArtifact.java @@ -76,4 +76,9 @@ public class UsageInArtifact extends ProjectStructureElementUsage { public Icon getIcon() { return myOriginalArtifact.getArtifactType().getIcon(); } + + @Override + public void removeSourceElement() { + removeElement(); + } } diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/BaseLibrariesConfigurable.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/BaseLibrariesConfigurable.java index a2fb94beea6e..11dc4bc30932 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/BaseLibrariesConfigurable.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/BaseLibrariesConfigurable.java @@ -261,7 +261,8 @@ public abstract class BaseLibrariesConfigurable extends BaseStructureConfigurabl Collections.sort(types); final StringBuilder sb = new StringBuilder("Library '"); - sb.append(library.getName()).append("' is used in "); + Library libraryModel = myContext.getLibraryModel(library); + sb.append(libraryModel != null ? libraryModel.getName() : library.getName()).append("' is used in "); for (int i = 0; i < types.size(); i++) { if (i > 0 && i == types.size() - 1) { sb.append(" and in "); @@ -284,13 +285,8 @@ public abstract class BaseLibrariesConfigurable extends BaseStructureConfigurabl if (DialogWrapper.OK_EXIT_CODE == Messages.showOkCancelDialog(myProject, sb.toString(), "Delete Library", Messages.getQuestionIcon())) { - final ModuleStructureConfigurable rootConfigurable = ModuleStructureConfigurable.getInstance(myProject); for (final ProjectStructureElementUsage usage : usages) { - if (usage instanceof UsageInModuleClasspath) { - rootConfigurable.removeLibraryOrderEntry(((ModuleProjectStructureElement)usage.getContainingElement()).getModule(), library); - } else if (usage instanceof UsageInArtifact) { - ((UsageInArtifact)usage).removeElement(); - } + usage.removeSourceElement(); } getModelProvider().getModifiableModel().removeLibrary(library); diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/daemon/ProjectStructureElementUsage.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/daemon/ProjectStructureElementUsage.java index 0d3286963d2b..8cbf14093212 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/daemon/ProjectStructureElementUsage.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/daemon/ProjectStructureElementUsage.java @@ -21,4 +21,6 @@ public abstract class ProjectStructureElementUsage { public abstract boolean equals(Object obj); public abstract Icon getIcon(); + + public abstract void removeSourceElement(); } diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/daemon/UsageInModuleClasspath.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/daemon/UsageInModuleClasspath.java index f76544f9a96f..f401137f655f 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/daemon/UsageInModuleClasspath.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/daemon/UsageInModuleClasspath.java @@ -2,6 +2,7 @@ package com.intellij.openapi.roots.ui.configuration.projectRoot.daemon; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleType; +import com.intellij.openapi.roots.ui.configuration.projectRoot.ModuleStructureConfigurable; import com.intellij.openapi.roots.ui.configuration.projectRoot.StructureConfigurableContext; import org.jetbrains.annotations.NotNull; @@ -63,4 +64,12 @@ public class UsageInModuleClasspath extends ProjectStructureElementUsage { public Icon getIcon() { return ModuleType.get(myModule).getNodeIcon(false); } + + @Override + public void removeSourceElement() { + if (mySourceElement instanceof LibraryProjectStructureElement) { + ModuleStructureConfigurable.getInstance(myModule.getProject()) + .removeLibraryOrderEntry(myModule, ((LibraryProjectStructureElement)mySourceElement).getLibrary()); + } + } }