From 1abba629ebef2cbc6f543f86a11c2403aba845ea Mon Sep 17 00:00:00 2001 From: Maxim Shafirov Date: Fri, 11 Sep 2009 18:19:36 +0400 Subject: [PATCH] fix "Select in project view" for java classes outside source roots --- .../impl/ClassesTreeStructureProvider.java | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/java/java-impl/src/com/intellij/ide/projectView/impl/ClassesTreeStructureProvider.java b/java/java-impl/src/com/intellij/ide/projectView/impl/ClassesTreeStructureProvider.java index 741ea5232ff3..e9cbefb2a925 100644 --- a/java/java-impl/src/com/intellij/ide/projectView/impl/ClassesTreeStructureProvider.java +++ b/java/java-impl/src/com/intellij/ide/projectView/impl/ClassesTreeStructureProvider.java @@ -26,7 +26,6 @@ public class ClassesTreeStructureProvider implements SelectableTreeStructureProv } public Collection modify(AbstractTreeNode parent, Collection children, ViewSettings settings) { - final ProjectFileIndex index = ProjectRootManager.getInstance(myProject).getFileIndex(); ArrayList result = new ArrayList(); for (final AbstractTreeNode child : children) { Object o = child.getValue(); @@ -35,8 +34,7 @@ public class ClassesTreeStructureProvider implements SelectableTreeStructureProv final PsiClassOwner classOwner = (PsiClassOwner)o; PsiClass[] classes = classOwner.getClasses(); final VirtualFile file = classOwner.getVirtualFile(); - if (file != null && - (index.isInSourceContent(file) || index.isInLibraryClasses(file) || index.isInLibrarySource(file))) { + if (fileInRoots(file)) { if (classes.length == 1 && !(classes[0] instanceof SyntheticElement)) { result.add(new ClassTreeNode(myProject, classes[0], settings1)); } else { @@ -50,6 +48,12 @@ public class ClassesTreeStructureProvider implements SelectableTreeStructureProv return result; } + private boolean fileInRoots(VirtualFile file) { + final ProjectFileIndex index = ProjectRootManager.getInstance(myProject).getFileIndex(); + return file != null && + (index.isInSourceContent(file) || index.isInLibraryClasses(file) || index.isInLibrarySource(file)); + } + public Object getData(Collection selected, String dataName) { return null; } @@ -57,6 +61,9 @@ public class ClassesTreeStructureProvider implements SelectableTreeStructureProv public PsiElement getTopLevelElement(final PsiElement element) { PsiFile baseRootFile = getBaseRootFile(element); if (baseRootFile == null) return null; + + if (!fileInRoots(baseRootFile.getVirtualFile())) return baseRootFile; + PsiElement current = element; while (current != null) { if (current instanceof PsiFileSystemItem) {