From e4c9f19e5b16e7caa7a1ff2467b5993b2828c027 Mon Sep 17 00:00:00 2001 From: nik Date: Thu, 6 Oct 2011 11:59:15 +0400 Subject: [PATCH] project structure daemon analyzer: improved rechecking after adding a new module --- .../roots/ui/configuration/ProjectConfigurable.java | 5 ----- .../ArtifactsStructureConfigurableContextImpl.java | 6 ------ .../projectRoot/BaseStructureConfigurable.java | 4 ---- .../projectRoot/ModuleStructureConfigurable.java | 2 +- .../daemon/ProjectConfigurationProblems.java | 5 ----- .../daemon/ProjectStructureDaemonAnalyzer.java | 13 +++++++++++-- .../ProjectStructureDaemonAnalyzerListener.java | 2 -- .../daemon/ProjectStructureProblemsHolderImpl.java | 4 ++++ 8 files changed, 16 insertions(+), 25 deletions(-) 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 cad59b15428d..74523fdd67f9 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 @@ -108,11 +108,6 @@ public class ProjectConfigurable extends ProjectStructureElementConfigurable entry : myArtifactEditors.entrySet()) { - updateProblems(entry.getKey(), entry.getValue()); - } - } }); } diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/BaseStructureConfigurable.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/BaseStructureConfigurable.java index 7f575dd06a6c..ab32b7075584 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/BaseStructureConfigurable.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/BaseStructureConfigurable.java @@ -90,10 +90,6 @@ public abstract class BaseStructureConfigurable extends MasterDetailsComponent i updateTree(); } - public void allProblemsChanged() { - updateTree(); - } - private void updateTree() { if (!myTree.isShowing()) return; diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/ModuleStructureConfigurable.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/ModuleStructureConfigurable.java index 0de234e8d764..64d0862e26a2 100644 --- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/ModuleStructureConfigurable.java +++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/projectRoot/ModuleStructureConfigurable.java @@ -529,7 +529,7 @@ public class ModuleStructureConfigurable extends BaseStructureConfigurable imple selectNodeInTree(node); final ProjectStructureDaemonAnalyzer daemonAnalyzer = myContext.getDaemonAnalyzer(); daemonAnalyzer.queueUpdate(new ModuleProjectStructureElement(myContext, module)); - daemonAnalyzer.clearAllProblems(); //missing modules added + daemonAnalyzer.queueUpdateForAllElementsWithErrors(); //missing modules added } @Nullable 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 9392d8458ad5..32b88307778e 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 @@ -47,11 +47,6 @@ public class ProjectConfigurationProblems { public void problemsChanged(@NotNull ProjectStructureElement element) { updateErrors(element); } - - @Override - public void allProblemsChanged() { - clearProblems(); - } }); } 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 a5586b2fd4c5..9a063d6f9d72 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 @@ -179,9 +179,18 @@ public class ProjectStructureDaemonAnalyzer implements Disposable { myProblemHolders.clear(); } - public void clearAllProblems() { + public void queueUpdateForAllElementsWithErrors() { + List toUpdate = new ArrayList(); + for (Map.Entry entry : myProblemHolders.entrySet()) { + if (entry.getValue().containProblems()) { + toUpdate.add(entry.getKey()); + } + } myProblemHolders.clear(); - myDispatcher.getMulticaster().allProblemsChanged(); + LOG.debug("Adding to queue updates for " + toUpdate.size() + " problematic elements"); + for (ProjectStructureElement element : toUpdate) { + queueUpdate(element); + } } public void dispose() { 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 1ca027639b40..1f44b7792452 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 @@ -27,6 +27,4 @@ public interface ProjectStructureDaemonAnalyzerListener extends EventListener { void usagesCollected(@NotNull ProjectStructureElement containingElement); void problemsChanged(@NotNull ProjectStructureElement element); - - void allProblemsChanged(); } 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 02bfd58e6c40..f8d8836bbfec 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 @@ -66,6 +66,10 @@ public class ProjectStructureProblemsHolderImpl implements ProjectStructureProbl } } + public boolean containProblems() { + return myProblemDescriptions != null && !myProblemDescriptions.isEmpty(); + } + @Nullable public List getProblemDescriptions() { return myProblemDescriptions;