From 673b0ec070a1a45f8c70b16576cbe582019dcf0a Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Mon, 7 Feb 2005 17:10:15 +0300 Subject: [PATCH] (no message) --- .../intellij/usages/impl/UsageViewImpl.java | 12 +++++----- .../usages/impl/rules/ClassGroupingRule.java | 4 ---- .../usages/impl/rules/FileGroupingRule.java | 2 +- .../impl/rules/PackageGroupingRule.java | 13 +++++++++-- .../impl/nodes/PackageElementNode.java | 6 ++--- .../impl/nodes/PackageViewProjectNode.java | 3 ++- .../impl/nodes/PsiDirectoryNode.java | 12 ++++++++++ .../psi/impl/file/PsiDirectoryImpl.java | 12 ++++++++++ .../psi/impl/file/PsiPackageImpl.java | 22 +++++++++++++++---- 9 files changed, 64 insertions(+), 22 deletions(-) diff --git a/UsageView/src/com/intellij/usages/impl/UsageViewImpl.java b/UsageView/src/com/intellij/usages/impl/UsageViewImpl.java index 289d4e5a25d2..6d082f8b3dc7 100644 --- a/UsageView/src/com/intellij/usages/impl/UsageViewImpl.java +++ b/UsageView/src/com/intellij/usages/impl/UsageViewImpl.java @@ -111,7 +111,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra } } - private UsageFilteringRule[] getActiveFilteringRules(final Project project) { + private static UsageFilteringRule[] getActiveFilteringRules(final Project project) { final UsageFilteringRuleProvider[] providers = ApplicationManager.getApplication().getComponents(UsageFilteringRuleProvider.class); List list = new ArrayList(); for (int i = 0; i < providers.length; i++) { @@ -120,7 +120,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra return list.toArray(new UsageFilteringRule[list.size()]); } - private UsageGroupingRule[] getActiveGroupingRules(final Project project) { + private static UsageGroupingRule[] getActiveGroupingRules(final Project project) { final UsageGroupingRuleProvider[] providers = ApplicationManager.getApplication().getComponents(UsageGroupingRuleProvider.class); List list = new ArrayList(); for (int i = 0; i < providers.length; i++) { @@ -149,7 +149,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra TreePath leadSelectionPath = myTree.getLeadSelectionPath(); if (leadSelectionPath == null) return; - DefaultMutableTreeNode node = ((DefaultMutableTreeNode)leadSelectionPath.getLastPathComponent()); + DefaultMutableTreeNode node = (DefaultMutableTreeNode)leadSelectionPath.getLastPathComponent(); if (node instanceof UsageNode) { final Usage usage = ((UsageNode)node).getUsage(); usage.navigate(false); @@ -683,7 +683,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra TreePath leadSelectionPath = myTree.getLeadSelectionPath(); if (leadSelectionPath == null) return null; - DefaultMutableTreeNode node = ((DefaultMutableTreeNode)leadSelectionPath.getLastPathComponent()); + DefaultMutableTreeNode node = (DefaultMutableTreeNode)leadSelectionPath.getLastPathComponent(); return node instanceof Node ? (Node)node : null; } @@ -737,7 +737,7 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra return targets.size() > 0 ? targets.toArray(new UsageTarget[targets.size()]) : null; } - private Navigatable getNavigatableForNode(DefaultMutableTreeNode node) { + private static Navigatable getNavigatableForNode(DefaultMutableTreeNode node) { if (node == null) { return null; } @@ -846,8 +846,6 @@ public class UsageViewImpl implements UsageView, UsageModelTracker.UsageModelTra private final class ButtonPanel extends JPanel { public ButtonPanel() { - super(); - setLayout(new FlowLayout(FlowLayout.LEFT, 8, 0)); } diff --git a/UsageView/src/com/intellij/usages/impl/rules/ClassGroupingRule.java b/UsageView/src/com/intellij/usages/impl/rules/ClassGroupingRule.java index 9b598236d049..bdd633cb644b 100644 --- a/UsageView/src/com/intellij/usages/impl/rules/ClassGroupingRule.java +++ b/UsageView/src/com/intellij/usages/impl/rules/ClassGroupingRule.java @@ -2,10 +2,8 @@ package com.intellij.usages.impl.rules; import com.intellij.openapi.actionSystem.DataConstants; import com.intellij.openapi.actionSystem.DataProvider; -import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.Iconable; import com.intellij.openapi.vcs.FileStatus; -import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.usages.Usage; @@ -24,8 +22,6 @@ import javax.swing.*; * To change this template use File | Settings | File Templates. */ public class ClassGroupingRule implements UsageGroupingRule { - private static final Logger LOG = Logger.getInstance("#com.intellij.usages.impl.rules.ClassGroupingRule"); - public UsageGroup groupUsage(Usage usage) { if (usage instanceof PsiElementUsage) { final PsiElement psiElement = ((PsiElementUsage)usage).getElement(); diff --git a/UsageView/src/com/intellij/usages/impl/rules/FileGroupingRule.java b/UsageView/src/com/intellij/usages/impl/rules/FileGroupingRule.java index 40a69f41300c..ed190d7c32dd 100644 --- a/UsageView/src/com/intellij/usages/impl/rules/FileGroupingRule.java +++ b/UsageView/src/com/intellij/usages/impl/rules/FileGroupingRule.java @@ -63,7 +63,7 @@ public class FileGroupingRule implements UsageGroupingRule { } public int hashCode() { - return (myFile != null ? myFile.hashCode() : 0); + return myFile != null ? myFile.hashCode() : 0; } public Icon getIcon(boolean isOpen) { diff --git a/UsageView/src/com/intellij/usages/impl/rules/PackageGroupingRule.java b/UsageView/src/com/intellij/usages/impl/rules/PackageGroupingRule.java index 6893ce44b838..506a6b9756e6 100644 --- a/UsageView/src/com/intellij/usages/impl/rules/PackageGroupingRule.java +++ b/UsageView/src/com/intellij/usages/impl/rules/PackageGroupingRule.java @@ -74,10 +74,11 @@ public class PackageGroupingRule implements UsageGroupingRule { } public void navigate(boolean focus) throws UnsupportedOperationException { + myPackage.navigate(focus); } public boolean canNavigate() { - return false; + return myPackage.canNavigate(); } public int compareTo(UsageGroup usageGroup) { @@ -127,10 +128,18 @@ public class PackageGroupingRule implements UsageGroupingRule { } public void navigate(boolean focus) throws UnsupportedOperationException { + final PsiDirectory directory = getDirectory(); + if (directory != null && directory.canNavigate()) { + directory.navigate(focus); + } } + private PsiDirectory getDirectory() { + return PsiManager.getInstance(myProject).findDirectory(myDir); + } public boolean canNavigate() { - return false; + final PsiDirectory directory = getDirectory(); + return directory != null && directory.canNavigate(); } public int compareTo(UsageGroup usageGroup) { diff --git a/source/com/intellij/ide/projectView/impl/nodes/PackageElementNode.java b/source/com/intellij/ide/projectView/impl/nodes/PackageElementNode.java index 61668eb18936..163574642af2 100644 --- a/source/com/intellij/ide/projectView/impl/nodes/PackageElementNode.java +++ b/source/com/intellij/ide/projectView/impl/nodes/PackageElementNode.java @@ -135,9 +135,9 @@ public class PackageElementNode extends ProjectViewNode { } if (showFwName(aPackage)) { - presentation.setPresentableText((getSettings().isAbbreviatePackageNames() - ? TreeViewUtil.calcAbbreviatedPackageFQName(aPackage) - : aPackage.getQualifiedName())); + presentation.setPresentableText(getSettings().isAbbreviatePackageNames() + ? TreeViewUtil.calcAbbreviatedPackageFQName(aPackage) + : aPackage.getQualifiedName()); } else { if (!(getParentValue() instanceof PackageElement)) { diff --git a/source/com/intellij/ide/projectView/impl/nodes/PackageViewProjectNode.java b/source/com/intellij/ide/projectView/impl/nodes/PackageViewProjectNode.java index 12b5e7cb6c8b..9d8147905956 100644 --- a/source/com/intellij/ide/projectView/impl/nodes/PackageViewProjectNode.java +++ b/source/com/intellij/ide/projectView/impl/nodes/PackageViewProjectNode.java @@ -91,7 +91,8 @@ public class PackageViewProjectNode extends AbstractProjectNode { } for (Iterator it = topLevelPackages.iterator(); it.hasNext();) { - PackageUtil.addPackageAsChild(children, it.next(), null, getSettings(), false); + final PsiPackage psiPackage = it.next(); + PackageUtil.addPackageAsChild(children, psiPackage, null, getSettings(), false); } if (getSettings().isShowLibraryContents()) { diff --git a/source/com/intellij/ide/projectView/impl/nodes/PsiDirectoryNode.java b/source/com/intellij/ide/projectView/impl/nodes/PsiDirectoryNode.java index 7ecf138e78e8..f1f4d9ec9dde 100644 --- a/source/com/intellij/ide/projectView/impl/nodes/PsiDirectoryNode.java +++ b/source/com/intellij/ide/projectView/impl/nodes/PsiDirectoryNode.java @@ -52,4 +52,16 @@ public class PsiDirectoryNode extends BasePsiNode { return VfsUtil.isAncestor(value.getVirtualFile(), file, false); } } + + public String getToolTip() { + if (getValue().isSourceRoot()) { + return "Module Source Root"; + } + else if (PackageUtil.isModuleContentRoot(getValue().getVirtualFile(), getProject())) { + return "Module Content Root"; + } + else { + return super.getToolTip(); + } + } } diff --git a/source/com/intellij/psi/impl/file/PsiDirectoryImpl.java b/source/com/intellij/psi/impl/file/PsiDirectoryImpl.java index d3702a189af2..4b5620a5bb3a 100644 --- a/source/com/intellij/psi/impl/file/PsiDirectoryImpl.java +++ b/source/com/intellij/psi/impl/file/PsiDirectoryImpl.java @@ -3,6 +3,8 @@ package com.intellij.psi.impl.file; import com.intellij.ide.fileTemplates.FileTemplate; import com.intellij.ide.fileTemplates.FileTemplateManager; import com.intellij.ide.fileTemplates.FileTemplateUtil; +import com.intellij.ide.projectView.ProjectView; +import com.intellij.ide.projectView.impl.ProjectViewPane; import com.intellij.lang.ASTNode; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.fileEditor.FileDocumentManager; @@ -595,5 +597,15 @@ public class PsiDirectoryImpl extends PsiElementBase implements PsiDirectory { public ASTNode getNode() { return null; } + + public boolean canNavigate() { + return true; + } + + public void navigate(boolean requestFocus) { + final ProjectView projectView = ProjectView.getInstance(getProject()); + projectView.changeView(ProjectViewPane.ID); + projectView.getProjectViewPaneById(ProjectViewPane.ID).select(this, getVirtualFile(), requestFocus); + } } diff --git a/source/com/intellij/psi/impl/file/PsiPackageImpl.java b/source/com/intellij/psi/impl/file/PsiPackageImpl.java index 72dafc9743eb..edbd93149592 100644 --- a/source/com/intellij/psi/impl/file/PsiPackageImpl.java +++ b/source/com/intellij/psi/impl/file/PsiPackageImpl.java @@ -1,11 +1,14 @@ package com.intellij.psi.impl.file; +import com.intellij.ide.projectView.ProjectView; +import com.intellij.ide.projectView.impl.PackageViewPane; +import com.intellij.ide.projectView.impl.nodes.PackageElement; +import com.intellij.ide.projectView.impl.nodes.PackageUtil; import com.intellij.lang.ASTNode; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.command.undo.DocumentReference; import com.intellij.openapi.command.undo.UndoManager; import com.intellij.openapi.command.undo.UndoableAction; -import com.intellij.openapi.command.undo.UnexpectedUndoException; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; @@ -107,11 +110,11 @@ public class PsiPackageImpl extends PsiElementBase implements PsiPackage { final boolean anyChanged = changePackagePrefixes(oldQualifedName, newQualifiedName); if (anyChanged) { UndoManager.getInstance(myManager.getProject()).undoableActionPerformed(new UndoableAction() { - public void undo() throws UnexpectedUndoException { + public void undo() { changePackagePrefixes(newQualifiedName, oldQualifedName); } - public void redo() throws UnexpectedUndoException { + public void redo() { changePackagePrefixes(oldQualifedName, newQualifiedName); } @@ -416,7 +419,18 @@ public class PsiPackageImpl extends PsiElementBase implements PsiPackage { } public boolean canNavigate() { - return false; + return true; + } + + public void navigate(boolean requestFocus) { + final ProjectView projectView = ProjectView.getInstance(getProject()); + projectView.changeView(PackageViewPane.ID); + final PsiDirectory[] directories = getDirectories(); + final VirtualFile firstDir = directories[0].getVirtualFile(); + final boolean isLibraryRoot = PackageUtil.isLibraryRoot(firstDir, getProject()); + + final PackageElement packageElement = new PackageElement(null, this, isLibraryRoot); + projectView.getProjectViewPaneById(PackageViewPane.ID).select(packageElement, firstDir, requestFocus); } public boolean isPhysical() {