From 44a431d938347aa9a3a15b73b3ca55d6490dff60 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Wed, 2 Mar 2005 21:17:09 +0300 Subject: [PATCH] IDEADEV-168 --- .../packageDependencies/DependencyRule.java | 0 .../DependencyValidationManager.java | 26 +++++++++++++++++++ .../daemon/impl/GeneralHighlightingPass.java | 18 ++++++------- .../actions/CyclicDependenciesHandler.java | 3 ++- .../ui/CyclicDependenciesPanel.java | 5 ++-- ...a => DependencyValidationManagerImpl.java} | 10 ++----- .../actions/AnalyzeDependenciesHandler.java | 9 ++++--- .../actions/BackwardDependenciesHandler.java | 11 ++++---- .../ui/DependenciesPanel.java | 9 +++---- 9 files changed, 55 insertions(+), 36 deletions(-) rename {source => openapi/src}/com/intellij/packageDependencies/DependencyRule.java (100%) create mode 100644 openapi/src/com/intellij/packageDependencies/DependencyValidationManager.java rename source/com/intellij/packageDependencies/{DependencyValidationManager.java => DependencyValidationManagerImpl.java} (91%) diff --git a/source/com/intellij/packageDependencies/DependencyRule.java b/openapi/src/com/intellij/packageDependencies/DependencyRule.java similarity index 100% rename from source/com/intellij/packageDependencies/DependencyRule.java rename to openapi/src/com/intellij/packageDependencies/DependencyRule.java diff --git a/openapi/src/com/intellij/packageDependencies/DependencyValidationManager.java b/openapi/src/com/intellij/packageDependencies/DependencyValidationManager.java new file mode 100644 index 000000000000..0b29444bf2f3 --- /dev/null +++ b/openapi/src/com/intellij/packageDependencies/DependencyValidationManager.java @@ -0,0 +1,26 @@ +package com.intellij.packageDependencies; + +import com.intellij.openapi.components.ProjectComponent; +import com.intellij.openapi.project.Project; +import com.intellij.psi.PsiFile; +import com.intellij.psi.search.scope.packageSet.NamedScopesHolder; + +/** + * User: anna + * Date: Mar 2, 2005 + */ +public abstract class DependencyValidationManager extends NamedScopesHolder implements ProjectComponent{ + public static DependencyValidationManager getInstance(Project project) { + return project.getComponent(DependencyValidationManager.class); + } + + public abstract DependencyRule getViolatorDependencyRule(PsiFile from, PsiFile to); + + public abstract DependencyRule[] getViolatorDependencyRules(PsiFile from, PsiFile to); + + public abstract DependencyRule[] getAllRules(); + + public abstract void removeAllRules(); + + public abstract void addRule(DependencyRule rule); +} diff --git a/source/com/intellij/codeInsight/daemon/impl/GeneralHighlightingPass.java b/source/com/intellij/codeInsight/daemon/impl/GeneralHighlightingPass.java index c9b2c6e269f2..dcfa25b46cb7 100644 --- a/source/com/intellij/codeInsight/daemon/impl/GeneralHighlightingPass.java +++ b/source/com/intellij/codeInsight/daemon/impl/GeneralHighlightingPass.java @@ -3,12 +3,12 @@ package com.intellij.codeInsight.daemon.impl; import com.intellij.analysis.AnalysisScope; import com.intellij.codeInsight.CodeInsightColors; import com.intellij.codeInsight.CodeInsightUtil; -import com.intellij.codeInsight.intention.IntentionAction; import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer; import com.intellij.codeInsight.daemon.DaemonCodeAnalyzerSettings; import com.intellij.codeInsight.daemon.HighlightDisplayKey; import com.intellij.codeInsight.daemon.impl.analysis.HighlightInfoHolder; import com.intellij.codeInsight.daemon.impl.quickfix.QuickFixAction; +import com.intellij.codeInsight.intention.IntentionAction; import com.intellij.j2ee.J2EERolesUtil; import com.intellij.j2ee.ejb.EjbUtil; import com.intellij.j2ee.ejb.role.EjbImplMethodRole; @@ -21,13 +21,13 @@ import com.intellij.openapi.editor.Editor; import com.intellij.openapi.editor.colors.EditorColorsManager; import com.intellij.openapi.editor.colors.EditorColorsScheme; import com.intellij.openapi.editor.markup.SeparatorPlacement; +import com.intellij.openapi.options.ShowSettingsUtil; import com.intellij.openapi.progress.ProcessCanceledException; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.IconLoader; import com.intellij.openapi.util.TextRange; -import com.intellij.openapi.options.ShowSettingsUtil; import com.intellij.packageDependencies.DependenciesBuilder; import com.intellij.packageDependencies.DependencyRule; import com.intellij.packageDependencies.DependencyValidationManager; @@ -37,11 +37,7 @@ import com.intellij.psi.*; import com.intellij.psi.search.PsiSearchHelper; import com.intellij.psi.search.TodoItem; import com.intellij.psi.util.PsiSuperMethodUtil; -import com.intellij.codeInspection.LocalInspectionTool; import com.intellij.util.IncorrectOperationException; -import com.intellij.application.options.ErrorHighlightingPanel; -import com.intellij.application.options.ErrorHighlightingOptions; -import com.intellij.uiDesigner.quickFixes.QuickFixManager; import gnu.trove.THashSet; import javax.swing.*; @@ -287,14 +283,16 @@ public class GeneralHighlightingPass extends TextEditorHighlightingPass { public void process(PsiElement place, PsiElement dependency) { PsiFile dependencyFile = dependency.getContainingFile(); if (dependencyFile != null && dependencyFile.isPhysical() && dependencyFile.getVirtualFile() != null) { - final DependencyRule rule = validationManager.getViolatorDependencyRule(myFile, dependencyFile); - if (rule != null) { + final DependencyRule[] rules = validationManager.getViolatorDependencyRules(myFile, dependencyFile); + if (rules.length > 0) { HighlightInfo info = HighlightInfo.createHighlightInfo(HighlightInfoType.ILLEGAL_DEPENDENCY, place, - "Illegal dependency. Violated rule: \"" + rule.getDisplayText() + + "Illegal dependency. Violated rules: \"" + rules[0].getDisplayText() + "\""); if (info != null) { list.add(info); - QuickFixAction.registerQuickFixAction(info, new EditDependencyRulesAction(rule)); + for (int i = 0; i < rules.length; i++) { + QuickFixAction.registerQuickFixAction(info, new EditDependencyRulesAction(rules[i])); + } QuickFixAction.registerQuickFixAction(info, new SwitchOffToolAction(HighlightDisplayKey.ILLEGAL_DEPENDENCY)); } } diff --git a/source/com/intellij/cyclicDependencies/actions/CyclicDependenciesHandler.java b/source/com/intellij/cyclicDependencies/actions/CyclicDependenciesHandler.java index 2dd0d9237e08..7a9b9fb43e91 100644 --- a/source/com/intellij/cyclicDependencies/actions/CyclicDependenciesHandler.java +++ b/source/com/intellij/cyclicDependencies/actions/CyclicDependenciesHandler.java @@ -6,6 +6,7 @@ import com.intellij.cyclicDependencies.ui.CyclicDependenciesPanel; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.project.Project; import com.intellij.packageDependencies.DependencyValidationManager; +import com.intellij.packageDependencies.DependencyValidationManagerImpl; import com.intellij.peer.PeerFactory; import com.intellij.ui.content.Content; @@ -34,7 +35,7 @@ public class CyclicDependenciesHandler { "Cyclic Dependencies of " + builder.getScope().getDisplayName(), false); panel.setContent(content); - DependencyValidationManager.getInstance(myProject).addContent(content); + ((DependencyValidationManagerImpl)DependencyValidationManager.getInstance(myProject)).addContent(content); } } } diff --git a/source/com/intellij/cyclicDependencies/ui/CyclicDependenciesPanel.java b/source/com/intellij/cyclicDependencies/ui/CyclicDependenciesPanel.java index 1c48e8fa200d..035c2f601d2e 100644 --- a/source/com/intellij/cyclicDependencies/ui/CyclicDependenciesPanel.java +++ b/source/com/intellij/cyclicDependencies/ui/CyclicDependenciesPanel.java @@ -9,6 +9,7 @@ import com.intellij.openapi.ui.Splitter; import com.intellij.openapi.util.IconLoader; import com.intellij.packageDependencies.DependencyUISettings; import com.intellij.packageDependencies.DependencyValidationManager; +import com.intellij.packageDependencies.DependencyValidationManagerImpl; import com.intellij.packageDependencies.ui.*; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiFile; @@ -373,7 +374,7 @@ public class CyclicDependenciesPanel extends JPanel { public void actionPerformed(AnActionEvent e) { myUsagesPanel.dispose(); - DependencyValidationManager.getInstance(myProject).closeContent(myContent); + ((DependencyValidationManagerImpl)DependencyValidationManager.getInstance(myProject)).closeContent(myContent); mySettings.copyToApplicationDependencySettings(); } } @@ -437,7 +438,7 @@ public class CyclicDependenciesPanel extends JPanel { } public void actionPerformed(AnActionEvent e) { - DependencyValidationManager.getInstance(myProject).closeContent(myContent); + ((DependencyValidationManagerImpl)DependencyValidationManager.getInstance(myProject)).closeContent(myContent); mySettings.copyToApplicationDependencySettings(); SwingUtilities.invokeLater(new Runnable() { public void run() { diff --git a/source/com/intellij/packageDependencies/DependencyValidationManager.java b/source/com/intellij/packageDependencies/DependencyValidationManagerImpl.java similarity index 91% rename from source/com/intellij/packageDependencies/DependencyValidationManager.java rename to source/com/intellij/packageDependencies/DependencyValidationManagerImpl.java index 08ca69d5b3b0..5bf817770bd4 100644 --- a/source/com/intellij/packageDependencies/DependencyValidationManager.java +++ b/source/com/intellij/packageDependencies/DependencyValidationManagerImpl.java @@ -1,7 +1,6 @@ package com.intellij.packageDependencies; import com.intellij.ide.impl.ContentManagerWatcher; -import com.intellij.openapi.components.ProjectComponent; import com.intellij.openapi.project.Project; import com.intellij.openapi.startup.StartupManager; import com.intellij.openapi.util.*; @@ -12,7 +11,6 @@ import com.intellij.openapi.wm.ToolWindowManager; import com.intellij.peer.PeerFactory; import com.intellij.psi.PsiFile; import com.intellij.psi.search.scope.packageSet.NamedScope; -import com.intellij.psi.search.scope.packageSet.NamedScopesHolder; import com.intellij.ui.content.Content; import com.intellij.ui.content.ContentManager; import org.jdom.Element; @@ -20,19 +18,15 @@ import org.jdom.Element; import java.util.ArrayList; import java.util.List; -public class DependencyValidationManager extends NamedScopesHolder implements ProjectComponent, JDOMExternalizable { +public class DependencyValidationManagerImpl extends DependencyValidationManager implements JDOMExternalizable { private List myRules = new ArrayList(); private Project myProject; private ContentManager myContentManager; - public DependencyValidationManager(Project project) { + public DependencyValidationManagerImpl(Project project) { myProject = project; } - public static DependencyValidationManager getInstance(Project project) { - return project.getComponent(DependencyValidationManager.class); - } - public DependencyRule getViolatorDependencyRule(PsiFile from, PsiFile to) { for (int i = 0; i < myRules.size(); i++) { DependencyRule dependencyRule = myRules.get(i); diff --git a/source/com/intellij/packageDependencies/actions/AnalyzeDependenciesHandler.java b/source/com/intellij/packageDependencies/actions/AnalyzeDependenciesHandler.java index 5ef3a7278e14..1965f24b2854 100644 --- a/source/com/intellij/packageDependencies/actions/AnalyzeDependenciesHandler.java +++ b/source/com/intellij/packageDependencies/actions/AnalyzeDependenciesHandler.java @@ -3,12 +3,13 @@ package com.intellij.packageDependencies.actions; import com.intellij.analysis.AnalysisScope; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.project.Project; -import com.intellij.packageDependencies.DependencyValidationManager; -import com.intellij.packageDependencies.ForwardDependenciesBuilder; import com.intellij.packageDependencies.DependenciesBuilder; +import com.intellij.packageDependencies.DependencyValidationManager; +import com.intellij.packageDependencies.DependencyValidationManagerImpl; +import com.intellij.packageDependencies.ForwardDependenciesBuilder; import com.intellij.packageDependencies.ui.DependenciesPanel; -import com.intellij.ui.content.Content; import com.intellij.peer.PeerFactory; +import com.intellij.ui.content.Content; public class AnalyzeDependenciesHandler { private Project myProject; @@ -31,7 +32,7 @@ public class AnalyzeDependenciesHandler { "Dependencies of " + forwardBuilder.getScope().getDisplayName(), false); panel.setContent(content); - DependencyValidationManager.getInstance(myProject).addContent(content); + ((DependencyValidationManagerImpl)DependencyValidationManager.getInstance(myProject)).addContent(content); } } } \ No newline at end of file diff --git a/source/com/intellij/packageDependencies/actions/BackwardDependenciesHandler.java b/source/com/intellij/packageDependencies/actions/BackwardDependenciesHandler.java index f8bc50dda0bb..3b133c874f3a 100644 --- a/source/com/intellij/packageDependencies/actions/BackwardDependenciesHandler.java +++ b/source/com/intellij/packageDependencies/actions/BackwardDependenciesHandler.java @@ -1,14 +1,15 @@ package com.intellij.packageDependencies.actions; -import com.intellij.openapi.project.Project; -import com.intellij.openapi.application.ApplicationManager; import com.intellij.analysis.AnalysisScope; -import com.intellij.packageDependencies.DependencyValidationManager; +import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.project.Project; import com.intellij.packageDependencies.BackwardDependenciesBuilder; import com.intellij.packageDependencies.DependenciesBuilder; +import com.intellij.packageDependencies.DependencyValidationManager; +import com.intellij.packageDependencies.DependencyValidationManagerImpl; import com.intellij.packageDependencies.ui.DependenciesPanel; -import com.intellij.ui.content.Content; import com.intellij.peer.PeerFactory; +import com.intellij.ui.content.Content; /** * User: anna @@ -36,7 +37,7 @@ public class BackwardDependenciesHandler { "Backward Dependencies of " + builder.getScope().getDisplayName(), false); panel.setContent(content); - DependencyValidationManager.getInstance(myProject).addContent(content); + ((DependencyValidationManagerImpl)DependencyValidationManager.getInstance(myProject)).addContent(content); } } diff --git a/source/com/intellij/packageDependencies/ui/DependenciesPanel.java b/source/com/intellij/packageDependencies/ui/DependenciesPanel.java index 8b00f8abfb35..dfd6ae5ce195 100644 --- a/source/com/intellij/packageDependencies/ui/DependenciesPanel.java +++ b/source/com/intellij/packageDependencies/ui/DependenciesPanel.java @@ -12,10 +12,7 @@ import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.IconLoader; import com.intellij.openapi.wm.StatusBar; import com.intellij.openapi.wm.WindowManager; -import com.intellij.packageDependencies.DependenciesBuilder; -import com.intellij.packageDependencies.DependencyRule; -import com.intellij.packageDependencies.DependencyUISettings; -import com.intellij.packageDependencies.DependencyValidationManager; +import com.intellij.packageDependencies.*; import com.intellij.packageDependencies.actions.AnalyzeDependenciesHandler; import com.intellij.packageDependencies.actions.BackwardDependenciesHandler; import com.intellij.psi.*; @@ -331,7 +328,7 @@ public class DependenciesPanel extends JPanel { public void actionPerformed(AnActionEvent e) { myUsagesPanel.dispose(); - DependencyValidationManager.getInstance(myProject).closeContent(myContent); + ((DependencyValidationManagerImpl)DependencyValidationManager.getInstance(myProject)).closeContent(myContent); mySettings.copyToApplicationDependencySettings(); } } @@ -441,7 +438,7 @@ public class DependenciesPanel extends JPanel { } public void actionPerformed(AnActionEvent e) { - DependencyValidationManager.getInstance(myProject).closeContent(myContent); + ((DependencyValidationManagerImpl)DependencyValidationManager.getInstance(myProject)).closeContent(myContent); mySettings.copyToApplicationDependencySettings(); SwingUtilities.invokeLater(new Runnable() { public void run() {