diff options
Diffstat (limited to 'java/java-impl/src/com/intellij/ide')
-rw-r--r-- | java/java-impl/src/com/intellij/ide/projectView/impl/nodes/PackageUtil.java | 12 | ||||
-rw-r--r-- | java/java-impl/src/com/intellij/ide/util/PackageUtil.java | 28 |
2 files changed, 24 insertions, 16 deletions
diff --git a/java/java-impl/src/com/intellij/ide/projectView/impl/nodes/PackageUtil.java b/java/java-impl/src/com/intellij/ide/projectView/impl/nodes/PackageUtil.java index e9e999b7b149..bcb4b3d20319 100644 --- a/java/java-impl/src/com/intellij/ide/projectView/impl/nodes/PackageUtil.java +++ b/java/java-impl/src/com/intellij/ide/projectView/impl/nodes/PackageUtil.java @@ -21,8 +21,6 @@ import com.intellij.ide.util.treeView.TreeViewUtil; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.*; -import com.intellij.openapi.roots.impl.DirectoryIndex; -import com.intellij.openapi.roots.impl.DirectoryInfo; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.JavaDirectoryService; @@ -230,20 +228,16 @@ public class PackageUtil { } private static class ProjectLibrariesSearchScope extends GlobalSearchScope { - private final DirectoryIndex myDirectoryIndex; + private final ProjectFileIndex myFileIndex; public ProjectLibrariesSearchScope(@NotNull Project project) { super(project); - myDirectoryIndex = DirectoryIndex.getInstance(project); + myFileIndex = ProjectRootManager.getInstance(project).getFileIndex(); } @Override public boolean contains(@NotNull VirtualFile file) { - VirtualFile dir = file.isDirectory() ? file : file.getParent(); - if (dir == null) return false; - - DirectoryInfo info = myDirectoryIndex.getInfoForDirectory(dir); - return info != null && info.hasLibraryClassRoot(); + return myFileIndex.isInLibraryClasses(file); } @Override diff --git a/java/java-impl/src/com/intellij/ide/util/PackageUtil.java b/java/java-impl/src/com/intellij/ide/util/PackageUtil.java index be9405ee4754..0530f34e653a 100644 --- a/java/java-impl/src/com/intellij/ide/util/PackageUtil.java +++ b/java/java-impl/src/com/intellij/ide/util/PackageUtil.java @@ -24,14 +24,12 @@ import com.intellij.openapi.module.ModuleUtil; import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectBundle; import com.intellij.openapi.projectRoots.impl.ProjectRootUtil; -import com.intellij.openapi.roots.ModulePackageIndex; -import com.intellij.openapi.roots.ModuleRootManager; -import com.intellij.openapi.roots.ProjectFileIndex; -import com.intellij.openapi.roots.ProjectRootManager; +import com.intellij.openapi.roots.*; import com.intellij.openapi.roots.ui.configuration.CommonContentEntriesEditor; import com.intellij.openapi.roots.ui.configuration.ProjectSettingsService; import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.Computable; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; import com.intellij.psi.search.GlobalSearchScope; @@ -52,13 +50,29 @@ public class PackageUtil { @Nullable public static PsiDirectory findPossiblePackageDirectoryInModule(Module module, String packageName) { + return findPossiblePackageDirectoryInModule(module, packageName, true); + } + @Nullable + public static PsiDirectory findPossiblePackageDirectoryInModule(Module module, String packageName, boolean preferNonGeneratedRoots) { + final Project project = module.getProject(); PsiDirectory psiDirectory = null; - if (!"".equals(packageName)) { - PsiPackage rootPackage = findLongestExistingPackage(module.getProject(), packageName); + if (!StringUtil.isEmptyOrSpaces(packageName)) { + PsiPackage rootPackage = findLongestExistingPackage(project, packageName); if (rootPackage != null) { final PsiDirectory[] psiDirectories = getPackageDirectoriesInModule(rootPackage, module); if (psiDirectories.length > 0) { psiDirectory = psiDirectories[0]; + + // If we prefer to find a non-generated PsiDirectory for the given package name, search through all + // the directories for the first dir not marked as generated and use that one instead + if (preferNonGeneratedRoots && psiDirectories.length > 1) { + for (PsiDirectory dir : psiDirectories) { + if (!GeneratedSourcesFilter.isGeneratedSourceByAnyFilter(dir.getVirtualFile(), project)) { + psiDirectory = dir; + break; + } + } + } } } } @@ -66,7 +80,7 @@ public class PackageUtil { if (checkSourceRootsConfigured(module)) { final List<VirtualFile> sourceRoots = ModuleRootManager.getInstance(module).getSourceRoots(JavaModuleSourceRootTypes.SOURCES); for (VirtualFile sourceRoot : sourceRoots) { - final PsiDirectory directory = PsiManager.getInstance(module.getProject()).findDirectory(sourceRoot); + final PsiDirectory directory = PsiManager.getInstance(project).findDirectory(sourceRoot); if (directory != null) { psiDirectory = directory; break; |