From c78873829b49bec7da5a85d8ee3a3222733a31d9 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 7 Feb 2005 22:28:53 +0300 Subject: [PATCH] package dependencies cosmetics --- .../DependenciesBuilder.java | 17 +++++++++++-- .../packageDependencies/DependencyRule.java | 4 +-- .../DependencyValidationManager.java | 13 ++++++++++ .../ForwardDependenciesBuilder.java | 2 ++ .../ui/DependenciesPanel.java | 25 ++++++++++--------- .../packageDependencies/ui/FileNode.java | 3 +++ .../ui/GeneralGroupNode.java | 5 +++- .../packageDependencies/ui/LibraryNode.java | 5 +++- .../packageDependencies/ui/ModuleNode.java | 5 +++- .../ui/PackageDependenciesNode.java | 11 +++++++- .../packageDependencies/ui/PackageNode.java | 6 ++++- .../packageDependencies/ui/UsagesPanel.java | 8 ++++-- 12 files changed, 81 insertions(+), 23 deletions(-) diff --git a/source/com/intellij/packageDependencies/DependenciesBuilder.java b/source/com/intellij/packageDependencies/DependenciesBuilder.java index 7134669e7aec..089d0931f979 100644 --- a/source/com/intellij/packageDependencies/DependenciesBuilder.java +++ b/source/com/intellij/packageDependencies/DependenciesBuilder.java @@ -1,10 +1,18 @@ package com.intellij.packageDependencies; import com.intellij.psi.*; +import com.intellij.psi.impl.source.codeStyle.ImportHelper; import com.intellij.psi.util.PsiUtil; import com.intellij.psi.javadoc.PsiDocComment; import com.intellij.analysis.AnalysisScope; import com.intellij.openapi.project.Project; +import com.intellij.openapi.fileEditor.FileDocumentManager; +import com.intellij.openapi.editor.Document; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.util.ArrayUtil; +import com.intellij.codeInsight.daemon.impl.DaemonCodeAnalyzerImpl; +import com.intellij.codeInsight.daemon.impl.RefCountHolder; +import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer; import java.util.*; @@ -25,11 +33,11 @@ public abstract class DependenciesBuilder { myTotalFileCount = scope.getFileCount(); } - protected void setInitialFileCount(final int fileCount) { + public void setInitialFileCount(final int fileCount) { myFileCount = fileCount; } - protected void setTotalFileCount(final int totalFileCount) { + public void setTotalFileCount(final int totalFileCount) { myTotalFileCount = totalFileCount; } @@ -89,6 +97,7 @@ public abstract class DependenciesBuilder { void process(PsiElement place, PsiElement dependency); } + private static class DependenciesWalker extends PsiRecursiveElementVisitor { private final DependencyProcessor myProcessor; @@ -116,6 +125,10 @@ public abstract class DependenciesBuilder { //empty } + public void visitImportStatement(PsiImportStatement statement) { + //empty - to exclude imports from dependency analyzing + } + public void visitMethodCallExpression(PsiMethodCallExpression expression) { super.visitMethodCallExpression(expression); PsiMethod psiMethod = expression.resolveMethod(); diff --git a/source/com/intellij/packageDependencies/DependencyRule.java b/source/com/intellij/packageDependencies/DependencyRule.java index 5433537b3139..efb4530d3acc 100644 --- a/source/com/intellij/packageDependencies/DependencyRule.java +++ b/source/com/intellij/packageDependencies/DependencyRule.java @@ -27,11 +27,11 @@ public class DependencyRule { public String getDisplayText() { StringBuffer buf = new StringBuffer(); buf.append(myDenyRule ? "Deny " : "Allow "); - buf.append("usages of '"); + buf.append("usages of scope '"); if (myToScope != null) { buf.append(myToScope.getName()); } - buf.append("' " + (myDenyRule ? " " : "only ") + "in '"); + buf.append("' " + (myDenyRule ? " " : "only ") + "in scope '"); if (myFromScope != null) { buf.append(myFromScope.getName()); } diff --git a/source/com/intellij/packageDependencies/DependencyValidationManager.java b/source/com/intellij/packageDependencies/DependencyValidationManager.java index 4365a53196bb..08ca69d5b3b0 100644 --- a/source/com/intellij/packageDependencies/DependencyValidationManager.java +++ b/source/com/intellij/packageDependencies/DependencyValidationManager.java @@ -42,6 +42,19 @@ public class DependencyValidationManager extends NamedScopesHolder implements Pr return null; } + public DependencyRule[] getViolatorDependencyRules(PsiFile from, PsiFile to) { + ArrayList result = new ArrayList(); + for (int i = 0; i < myRules.size(); i++) { + DependencyRule dependencyRule = myRules.get(i); + if (dependencyRule.isForbiddenToUse(from, to)){ + result.add(dependencyRule); + } + } + return result.toArray(new DependencyRule[result.size()]); + + } + + public DependencyRule[] getAllRules() { return myRules.toArray(new DependencyRule[myRules.size()]); } diff --git a/source/com/intellij/packageDependencies/ForwardDependenciesBuilder.java b/source/com/intellij/packageDependencies/ForwardDependenciesBuilder.java index 9c7a405e3bb0..8e04b91890f5 100644 --- a/source/com/intellij/packageDependencies/ForwardDependenciesBuilder.java +++ b/source/com/intellij/packageDependencies/ForwardDependenciesBuilder.java @@ -6,6 +6,8 @@ import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.project.Project; import com.intellij.psi.*; +import com.intellij.psi.impl.source.codeStyle.ImportHelper; +import com.intellij.util.ArrayUtil; import java.util.*; diff --git a/source/com/intellij/packageDependencies/ui/DependenciesPanel.java b/source/com/intellij/packageDependencies/ui/DependenciesPanel.java index 3ce7441c4c90..34f22cccdf40 100644 --- a/source/com/intellij/packageDependencies/ui/DependenciesPanel.java +++ b/source/com/intellij/packageDependencies/ui/DependenciesPanel.java @@ -305,15 +305,16 @@ public class DependenciesPanel extends JPanel { return myRightTree; } - private static class MyTreeCellRenderer extends DefaultTreeCellRenderer { - public Component getTreeCellRendererComponent(JTree tree, - Object value, - boolean sel, - boolean expanded, - boolean leaf, - int row, - boolean hasFocus) { - super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus); + private static class MyTreeCellRenderer extends ColoredTreeCellRenderer { + public void customizeCellRenderer( + JTree tree, + Object value, + boolean selected, + boolean expanded, + boolean leaf, + int row, + boolean hasFocus + ){ PackageDependenciesNode node = (PackageDependenciesNode)value; if (expanded) { setIcon(node.getOpenIcon()); @@ -322,11 +323,11 @@ public class DependenciesPanel extends JPanel { setIcon(node.getClosedIcon()); } - if (node.hasMarked() && !sel) { + if (node.hasMarked() && !selected) { setForeground(Color.red); } - - return this; + append(node.toString(), SimpleTextAttributes.REGULAR_ATTRIBUTES); + append(node.getPresentableFilesCount(), SimpleTextAttributes.GRAYED_ATTRIBUTES); } } diff --git a/source/com/intellij/packageDependencies/ui/FileNode.java b/source/com/intellij/packageDependencies/ui/FileNode.java index 572d5a515027..f17363d1e179 100644 --- a/source/com/intellij/packageDependencies/ui/FileNode.java +++ b/source/com/intellij/packageDependencies/ui/FileNode.java @@ -60,6 +60,9 @@ public class FileNode extends PackageDependenciesNode { } public boolean equals(Object o) { + if (isEquals()){ + return super.equals(o); + } if (this == o) return true; if (!(o instanceof FileNode)) return false; diff --git a/source/com/intellij/packageDependencies/ui/GeneralGroupNode.java b/source/com/intellij/packageDependencies/ui/GeneralGroupNode.java index 8f307608df22..42b75058b7db 100644 --- a/source/com/intellij/packageDependencies/ui/GeneralGroupNode.java +++ b/source/com/intellij/packageDependencies/ui/GeneralGroupNode.java @@ -30,7 +30,7 @@ public class GeneralGroupNode extends PackageDependenciesNode { } public String toString() { - return myName + getPresentableFilesCount(); + return myName; } public int getWeight() { @@ -38,6 +38,9 @@ public class GeneralGroupNode extends PackageDependenciesNode { } public boolean equals(Object o) { + if (isEquals()){ + return super.equals(o); + } if (!(o instanceof GeneralGroupNode)) return false; return myName.equals(((GeneralGroupNode)o).myName); } diff --git a/source/com/intellij/packageDependencies/ui/LibraryNode.java b/source/com/intellij/packageDependencies/ui/LibraryNode.java index 066e9ab7eb35..910c0fae0ae2 100644 --- a/source/com/intellij/packageDependencies/ui/LibraryNode.java +++ b/source/com/intellij/packageDependencies/ui/LibraryNode.java @@ -30,7 +30,7 @@ public class LibraryNode extends PackageDependenciesNode { } public String toString() { - return myLibraryOrJdk.getPresentableName() + getPresentableFilesCount(); + return myLibraryOrJdk.getPresentableName(); } public int getWeight() { @@ -38,6 +38,9 @@ public class LibraryNode extends PackageDependenciesNode { } public boolean equals(Object o) { + if (isEquals()){ + return super.equals(o); + } if (this == o) return true; if (!(o instanceof LibraryNode)) return false; diff --git a/source/com/intellij/packageDependencies/ui/ModuleNode.java b/source/com/intellij/packageDependencies/ui/ModuleNode.java index 0093ffae4131..28f674e5573d 100644 --- a/source/com/intellij/packageDependencies/ui/ModuleNode.java +++ b/source/com/intellij/packageDependencies/ui/ModuleNode.java @@ -34,7 +34,7 @@ public class ModuleNode extends PackageDependenciesNode { } public String toString() { - return myModule == null ? "" : myModule.getName() + getPresentableFilesCount(); + return myModule == null ? "" : myModule.getName(); } public String getModuleName() { @@ -46,6 +46,9 @@ public class ModuleNode extends PackageDependenciesNode { } public boolean equals(Object o) { + if (isEquals()){ + return super.equals(o); + } if (this == o) return true; if (!(o instanceof ModuleNode)) return false; diff --git a/source/com/intellij/packageDependencies/ui/PackageDependenciesNode.java b/source/com/intellij/packageDependencies/ui/PackageDependenciesNode.java index fe397ef36fc1..4a1e8d76cbe6 100644 --- a/source/com/intellij/packageDependencies/ui/PackageDependenciesNode.java +++ b/source/com/intellij/packageDependencies/ui/PackageDependenciesNode.java @@ -21,6 +21,15 @@ public class PackageDependenciesNode extends DefaultMutableTreeNode implements N private Set myRegisteredFiles = new HashSet(); private boolean myHasUnmarked = false; private boolean myHasMarked = false; + private boolean myEquals; + + public void setEquals(final boolean equals) { + myEquals = equals; + } + + public boolean isEquals() { + return myEquals; + } public void fillFiles(Set set, boolean recursively) { set.addAll(myRegisteredFiles); @@ -63,7 +72,7 @@ public class PackageDependenciesNode extends DefaultMutableTreeNode implements N return result; } - protected String getPresentableFilesCount(){ + public String getPresentableFilesCount(){ final int filesCount = getContainingFiles(); return filesCount > 0 ? " (" + filesCount + (filesCount > 1 ? " entries" : " entry") + ")" : ""; } diff --git a/source/com/intellij/packageDependencies/ui/PackageNode.java b/source/com/intellij/packageDependencies/ui/PackageNode.java index 9b4b51e502e7..c158450da971 100644 --- a/source/com/intellij/packageDependencies/ui/PackageNode.java +++ b/source/com/intellij/packageDependencies/ui/PackageNode.java @@ -16,6 +16,7 @@ public class PackageNode extends PackageDependenciesNode { private String myPackageQName; private final PsiPackage myPackage; + public PackageNode(PsiPackage aPackage, boolean showFQName) { myPackage = aPackage; myPackageName = showFQName ? aPackage.getQualifiedName() : aPackage.getName(); @@ -40,7 +41,7 @@ public class PackageNode extends PackageDependenciesNode { } public String toString() { - return myPackageName + getPresentableFilesCount(); + return myPackageName; } public String getPackageQName() { @@ -56,6 +57,9 @@ public class PackageNode extends PackageDependenciesNode { } public boolean equals(Object o) { + if (isEquals()){ + return super.equals(o); + } if (this == o) return true; if (!(o instanceof PackageNode)) return false; diff --git a/source/com/intellij/packageDependencies/ui/UsagesPanel.java b/source/com/intellij/packageDependencies/ui/UsagesPanel.java index 6d889e50b2b0..b60e72d7b0d5 100644 --- a/source/com/intellij/packageDependencies/ui/UsagesPanel.java +++ b/source/com/intellij/packageDependencies/ui/UsagesPanel.java @@ -29,6 +29,7 @@ public class UsagesPanel extends JPanel { private DependenciesBuilder myBuilder; private ProgressIndicator myCurrentProgress; private JComponent myCurrentComponent; + private UsageView myCurrentUsageView; private Alarm myAlarm = new Alarm(Alarm.ThreadToUse.SWING_THREAD); public UsagesPanel(Project project, DependenciesBuilder builder) { @@ -107,9 +108,9 @@ public class UsagesPanel extends JPanel { Usage[] usages = UsageInfoToUsageConverter.convert(descriptor, usageInfos); UsageViewPresentation presentation = new UsageViewPresentation(); presentation.setCodeUsagesString(myBuilder.getRootNodeNameInUsageView()); - UsageView usageView = myProject.getComponent(UsageViewManager.class).createUsageView(new UsageTarget[0], + myCurrentUsageView = myProject.getComponent(UsageViewManager.class).createUsageView(new UsageTarget[0], usages, presentation); - setToComponent(usageView.getComponent()); + setToComponent(myCurrentUsageView.getComponent()); } catch (ProcessCanceledException e) { setToCanceled(); @@ -124,6 +125,9 @@ public class UsagesPanel extends JPanel { SwingUtilities.invokeLater(new Runnable() { public void run() { if (myCurrentComponent != null) { + if (myCurrentUsageView != null && myCurrentComponent == myCurrentUsageView.getComponent()){ + myCurrentUsageView.dispose(); + } remove(myCurrentComponent); } myCurrentComponent = cmp;