IDEADEV-168

This commit is contained in:
Anna Kozlova
2005-03-02 21:17:09 +03:00
parent 3aef7bfeb7
commit 44a431d938
9 changed files with 55 additions and 36 deletions
@@ -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);
}
@@ -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));
}
}
@@ -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);
}
}
}
@@ -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() {
@@ -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<DependencyRule> myRules = new ArrayList<DependencyRule>();
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);
@@ -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);
}
}
}
@@ -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);
}
}
@@ -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() {