summaryrefslogtreecommitdiff
path: root/java/java-impl/src/com/intellij/ide
diff options
context:
space:
mode:
Diffstat (limited to 'java/java-impl/src/com/intellij/ide')
-rw-r--r--java/java-impl/src/com/intellij/ide/projectView/impl/nodes/PackageUtil.java12
-rw-r--r--java/java-impl/src/com/intellij/ide/util/PackageUtil.java28
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;