From bab860ab6ea4361313c7fc963e5a4d62a2daa1ae Mon Sep 17 00:00:00 2001 From: nik Date: Fri, 7 Oct 2011 14:36:36 +0400 Subject: [PATCH] project structure: renderer for project structure elements refactored --- .../ui/configuration/ProjectConfigurable.java | 4 - ...factsStructureConfigurableContextImpl.java | 3 - .../BaseStructureConfigurable.java | 67 +-------------- .../ProjectStructureElementRenderer.java | 82 +++++++++++++++++++ .../LibraryProjectStructureElement.java | 6 +- .../daemon/ProjectConfigurationProblems.java | 4 - .../ProjectStructureDaemonAnalyzer.java | 18 +--- ...rojectStructureDaemonAnalyzerListener.java | 3 - .../daemon/ProjectStructureProblemType.java | 6 +- .../ProjectStructureProblemsHolderImpl.java | 30 ++++--- 10 files changed, 110 insertions(+), 113 deletions(-) create mode 100644 java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/ProjectStructureElementRenderer.java diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ProjectConfigurable.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ProjectConfigurable.java index 74523fdd67f9..a0b446202597 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ProjectConfigurable.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/ProjectConfigurable.java @@ -98,10 +98,6 @@ public class ProjectConfigurable extends ProjectStructureElementConfigurable fixes = Arrays.asList(new AddLibraryToDependenciesFix(), new RemoveLibraryFix()); return new ProjectStructureProblemDescription(getPresentableName() + " is not used", null, createPlace(), fixes, - ProjectStructureProblemType.warning("unused-library")); + ProjectStructureProblemType.unused("unused-library")); } @Override diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/daemon/ProjectConfigurationProblems.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/daemon/ProjectConfigurationProblems.java index 32b88307778e..9a6bd4565b53 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/daemon/ProjectConfigurationProblems.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/daemon/ProjectConfigurationProblems.java @@ -39,10 +39,6 @@ public class ProjectConfigurationProblems { myAnalyzer = analyzer; myContext = context; analyzer.addListener(new ProjectStructureDaemonAnalyzerListener() { - @Override - public void usagesCollected(@NotNull ProjectStructureElement containingElement) { - } - @Override public void problemsChanged(@NotNull ProjectStructureElement element) { updateErrors(element); diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/daemon/ProjectStructureDaemonAnalyzer.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/daemon/ProjectStructureDaemonAnalyzer.java index a19db243dbd0..74cb9ed00a78 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/daemon/ProjectStructureDaemonAnalyzer.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/daemon/ProjectStructureDaemonAnalyzer.java @@ -102,7 +102,6 @@ public class ProjectStructureDaemonAnalyzer implements Disposable { LOG.debug("updating usages for " + element); } updateUsages(element, usages); - myDispatcher.getMulticaster().usagesCollected(element); } }); } @@ -124,7 +123,7 @@ public class ProjectStructureDaemonAnalyzer implements Disposable { queueUpdate(element, true, true); } - public void queueUpdate(@NotNull final ProjectStructureElement element, final boolean check, final boolean collectUsages) { + private void queueUpdate(@NotNull final ProjectStructureElement element, final boolean check, final boolean collectUsages) { if (LOG.isDebugEnabled()) { LOG.debug("start " + (check ? "checking " : "") + (collectUsages ? "collecting usages " : "") + "for " + element); } @@ -184,17 +183,6 @@ public class ProjectStructureDaemonAnalyzer implements Disposable { } } - public boolean isUnused(ProjectStructureElement element) { - if (!element.shouldShowWarningIfUnused()) { - return false; - } - if (!myElementWithNotCalculatedUsages.isEmpty()) { - return false; - } - final Collection usages = mySourceElement2Usages.get(element); - return usages == null || usages.isEmpty(); - } - private void removeUsagesInElement(ProjectStructureElement element) { final Collection usages = myContainingElement2Usages.removeAll(element); if (usages != null) { @@ -225,7 +213,7 @@ public class ProjectStructureDaemonAnalyzer implements Disposable { public void queueUpdateForAllElementsWithErrors() { List toUpdate = new ArrayList(); for (Map.Entry entry : myProblemHolders.entrySet()) { - if (entry.getValue().containProblems()) { + if (entry.getValue().containsProblems()) { toUpdate.add(entry.getKey()); } } @@ -274,6 +262,8 @@ public class ProjectStructureDaemonAnalyzer implements Disposable { } public void clear() { + myWarningsAboutUnused.clear(); + myElementsToShowWarningIfUnused.clear(); mySourceElement2Usages.clear(); myContainingElement2Usages.clear(); myElementWithNotCalculatedUsages.clear(); diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/daemon/ProjectStructureDaemonAnalyzerListener.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/daemon/ProjectStructureDaemonAnalyzerListener.java index 1f44b7792452..a9464936c897 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/daemon/ProjectStructureDaemonAnalyzerListener.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/daemon/ProjectStructureDaemonAnalyzerListener.java @@ -23,8 +23,5 @@ import java.util.EventListener; * @author nik */ public interface ProjectStructureDaemonAnalyzerListener extends EventListener { - - void usagesCollected(@NotNull ProjectStructureElement containingElement); - void problemsChanged(@NotNull ProjectStructureElement element); } diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/daemon/ProjectStructureProblemType.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/daemon/ProjectStructureProblemType.java index 7e22bb32eab5..83f2ef05e8f2 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/daemon/ProjectStructureProblemType.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/daemon/ProjectStructureProblemType.java @@ -21,7 +21,7 @@ import org.jetbrains.annotations.NotNull; * @author nik */ public class ProjectStructureProblemType { - public enum Severity { ERROR, WARNING } + public enum Severity { ERROR, WARNING, UNUSED } private final String myId; private final Severity mySeverity; @@ -39,6 +39,10 @@ public class ProjectStructureProblemType { return new ProjectStructureProblemType(id, Severity.WARNING); } + public static ProjectStructureProblemType unused(@NotNull String id) { + return new ProjectStructureProblemType(id, Severity.UNUSED); + } + @NotNull public String getId() { return myId; diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/daemon/ProjectStructureProblemsHolderImpl.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/daemon/ProjectStructureProblemsHolderImpl.java index 9c795bb7ac1a..3b674b341fb8 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/daemon/ProjectStructureProblemsHolderImpl.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/daemon/ProjectStructureProblemsHolderImpl.java @@ -1,8 +1,8 @@ package com.intellij.openapi.roots.ui.configuration.projectRoot.daemon; -import com.intellij.openapi.util.text.StringUtil; import com.intellij.util.SmartList; import com.intellij.util.StringBuilderSpinAllocator; +import com.intellij.xml.util.XmlStringUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -30,19 +30,6 @@ public class ProjectStructureProblemsHolderImpl implements ProjectStructureProbl myProblemDescriptions.add(description); } - @Nullable - public ProjectStructureProblemType.Severity getSeverity() { - if (myProblemDescriptions == null || myProblemDescriptions.isEmpty()) { - return null; - } - for (ProjectStructureProblemDescription description : myProblemDescriptions) { - if (description.getSeverity() == ProjectStructureProblemType.Severity.ERROR) { - return ProjectStructureProblemType.Severity.ERROR; - } - } - return ProjectStructureProblemType.Severity.WARNING; - } - public String composeTooltipMessage() { final StringBuilder buf = StringBuilderSpinAllocator.alloc(); try { @@ -50,7 +37,7 @@ public class ProjectStructureProblemsHolderImpl implements ProjectStructureProbl if (myProblemDescriptions != null) { int problems = 0; for (ProjectStructureProblemDescription problemDescription : myProblemDescriptions) { - buf.append(StringUtil.escapeXml(problemDescription.getMessage())).append("
"); + buf.append(XmlStringUtil.escapeString(problemDescription.getMessage())).append("
"); problems++; if (problems >= 10 && myProblemDescriptions.size() > 12) { buf.append(myProblemDescriptions.size() - problems).append(" more problems...
"); @@ -66,10 +53,21 @@ public class ProjectStructureProblemsHolderImpl implements ProjectStructureProbl } } - public boolean containProblems() { + public boolean containsProblems() { return myProblemDescriptions != null && !myProblemDescriptions.isEmpty(); } + public boolean containsProblems(final ProjectStructureProblemType.Severity severity) { + if (myProblemDescriptions != null) { + for (ProjectStructureProblemDescription description : myProblemDescriptions) { + if (description.getSeverity() == severity) { + return true; + } + } + } + return false; + } + public void removeProblem(@NotNull ProjectStructureProblemDescription description) { if (myProblemDescriptions != null) { myProblemDescriptions.remove(description);