From fa528593c9f65001b6404dc2670c99eed56a860b Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Mon, 27 May 2013 13:27:13 +0400 Subject: [PATCH] separate pattern from scopes holders when possible: this would allow to use default patterns e.g. production with application level inspection profile (IDEA-107786) --- .../scope/packageSet/PatternPackageSet.java | 6 +++++- .../psi/search/GlobalSearchScopes.java | 2 +- .../search/scope/NonProjectFilesScope.java | 10 ++++++++-- .../psi/search/scope/ProjectFilesScope.java | 9 ++++++++- .../search/scope/ProjectProductionScope.java | 9 ++++++++- .../intellij/psi/search/scope/TestsScope.java | 10 +++++++++- .../packageSet/ComplementPackageSet.java | 11 +++++++++-- .../packageSet/FilePatternPackageSet.java | 6 +++++- .../packageSet/IntersectionPackageSet.java | 11 +++++++++-- .../packageSet/NamedPackageSetReference.java | 3 ++- .../scope/packageSet/PackageSetBase.java | 19 ++++++++++++++++++- .../scope/packageSet/UnionPackageSet.java | 11 +++++++++-- .../scopeView/ScopePaneSelectInTarget.java | 2 +- .../ide/scopeView/ScopeTreeViewPanel.java | 4 ++-- .../intellij/ide/scopeView/ScopeViewPane.java | 2 +- .../util/scopeChooser/ScopeEditorPanel.java | 6 +++--- .../DefaultScopesProvider.java | 7 ++++++- .../com/intellij/ui/tabs/FileColorsModel.java | 4 ++-- .../vcs/update/FileOrDirectoryTreeNode.java | 4 ++++ .../openapi/vcs/update/FileTreeNode.java | 2 +- 20 files changed, 111 insertions(+), 27 deletions(-) diff --git a/java/openapi/src/com/intellij/psi/search/scope/packageSet/PatternPackageSet.java b/java/openapi/src/com/intellij/psi/search/scope/packageSet/PatternPackageSet.java index fa8b3faf6e67..4f7595e003fa 100644 --- a/java/openapi/src/com/intellij/psi/search/scope/packageSet/PatternPackageSet.java +++ b/java/openapi/src/com/intellij/psi/search/scope/packageSet/PatternPackageSet.java @@ -73,7 +73,11 @@ public class PatternPackageSet extends PatternBasedPackageSet { @Override public boolean contains(VirtualFile file, NamedScopesHolder holder) { - Project project = holder.getProject(); + return contains(file, holder.getProject(), holder); + } + + @Override + public boolean contains(VirtualFile file, Project project, @Nullable NamedScopesHolder holder) { ProjectFileIndex fileIndex = ProjectRootManager.getInstance(project).getFileIndex(); return matchesScope(file, holder.getProject(), fileIndex) && (myPattern == null || myPattern.matcher(getPackageName(file, fileIndex)).matches()); } diff --git a/platform/lang-api/src/com/intellij/psi/search/GlobalSearchScopes.java b/platform/lang-api/src/com/intellij/psi/search/GlobalSearchScopes.java index f67a8003cdd3..7db76a291c39 100644 --- a/platform/lang-api/src/com/intellij/psi/search/GlobalSearchScopes.java +++ b/platform/lang-api/src/com/intellij/psi/search/GlobalSearchScopes.java @@ -79,7 +79,7 @@ public class GlobalSearchScopes { NamedScopesHolder holder = NamedScopeManager.getInstance(getProject()); final PackageSet packageSet = mySet.getValue(); if (packageSet != null) { - if (packageSet instanceof PackageSetBase) return ((PackageSetBase)packageSet).contains(file, holder); + if (packageSet instanceof PackageSetBase) return ((PackageSetBase)packageSet).contains(file, getProject(), holder); PsiFile psiFile = myManager.findFile(file); return psiFile != null && packageSet.contains(psiFile, holder); } diff --git a/platform/lang-api/src/com/intellij/psi/search/scope/NonProjectFilesScope.java b/platform/lang-api/src/com/intellij/psi/search/scope/NonProjectFilesScope.java index 811ee65d05fa..021b12205ddd 100644 --- a/platform/lang-api/src/com/intellij/psi/search/scope/NonProjectFilesScope.java +++ b/platform/lang-api/src/com/intellij/psi/search/scope/NonProjectFilesScope.java @@ -25,6 +25,7 @@ import com.intellij.psi.search.scope.packageSet.NamedScope; import com.intellij.psi.search.scope.packageSet.NamedScopesHolder; import com.intellij.ui.Colored; import com.intellij.util.ArrayUtil; +import org.jetbrains.annotations.Nullable; /** * @author Konstantin Bulenkov @@ -37,10 +38,15 @@ public class NonProjectFilesScope extends NamedScope { super(NAME, new AbstractPackageSet("NonProject") { @Override public boolean contains(VirtualFile file, NamedScopesHolder holder) { + return contains(file, holder.getProject(), holder); + } + + @Override + public boolean contains(VirtualFile file, Project project, @Nullable NamedScopesHolder holder) { if (file == null) return true; if (file.getFileSystem() != LocalFileSystem.getInstance()) return true; - if (isInsideProjectContent(holder.getProject(), file)) return false; - return !ProjectScope.getProjectScope(holder.getProject()).contains(file); + if (isInsideProjectContent(project, file)) return false; + return !ProjectScope.getProjectScope(project).contains(file); } }); } diff --git a/platform/lang-api/src/com/intellij/psi/search/scope/ProjectFilesScope.java b/platform/lang-api/src/com/intellij/psi/search/scope/ProjectFilesScope.java index 39d5f55de343..0f6ca0640e3f 100644 --- a/platform/lang-api/src/com/intellij/psi/search/scope/ProjectFilesScope.java +++ b/platform/lang-api/src/com/intellij/psi/search/scope/ProjectFilesScope.java @@ -15,12 +15,14 @@ */ package com.intellij.psi.search.scope; +import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.search.scope.packageSet.AbstractPackageSet; import com.intellij.psi.search.scope.packageSet.NamedScope; import com.intellij.psi.search.scope.packageSet.NamedScopesHolder; +import org.jetbrains.annotations.Nullable; /** * @author Konstantin Bulenkov @@ -31,8 +33,13 @@ public class ProjectFilesScope extends NamedScope { super(NAME, new AbstractPackageSet("ProjectFiles") { @Override public boolean contains(VirtualFile file, NamedScopesHolder holder) { + return contains(file, holder.getProject(), holder); + } + + @Override + public boolean contains(VirtualFile file, Project project, @Nullable NamedScopesHolder holder) { if (file == null) return false; - final ProjectFileIndex fileIndex = ProjectRootManager.getInstance(holder.getProject()).getFileIndex(); + final ProjectFileIndex fileIndex = ProjectRootManager.getInstance(project).getFileIndex(); return holder.getProject().isInitialized() && !fileIndex.isIgnored(file) && fileIndex.getContentRootForFile(file) != null; diff --git a/platform/lang-api/src/com/intellij/psi/search/scope/ProjectProductionScope.java b/platform/lang-api/src/com/intellij/psi/search/scope/ProjectProductionScope.java index c3cd4bb40576..62b72ccd6ef2 100644 --- a/platform/lang-api/src/com/intellij/psi/search/scope/ProjectProductionScope.java +++ b/platform/lang-api/src/com/intellij/psi/search/scope/ProjectProductionScope.java @@ -16,12 +16,14 @@ package com.intellij.psi.search.scope; import com.intellij.ide.IdeBundle; +import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.search.scope.packageSet.AbstractPackageSet; import com.intellij.psi.search.scope.packageSet.NamedScope; import com.intellij.psi.search.scope.packageSet.NamedScopesHolder; +import org.jetbrains.annotations.Nullable; /** * @author Konstantin Bulenkov @@ -31,7 +33,12 @@ public class ProjectProductionScope extends NamedScope { super(IdeBundle.message("predefined.scope.production.name"), new AbstractPackageSet("src:*..*") { @Override public boolean contains(VirtualFile file, NamedScopesHolder holder) { - final ProjectFileIndex index = ProjectRootManager.getInstance(holder.getProject()).getFileIndex(); + return contains(file, holder.getProject(), holder); + } + + @Override + public boolean contains(VirtualFile file, Project project, @Nullable NamedScopesHolder holder) { + final ProjectFileIndex index = ProjectRootManager.getInstance(project).getFileIndex(); return file != null && !index.isInTestSourceContent(file) && !index.isInLibraryClasses(file) diff --git a/platform/lang-api/src/com/intellij/psi/search/scope/TestsScope.java b/platform/lang-api/src/com/intellij/psi/search/scope/TestsScope.java index d22ed88c56ed..5597227f8b26 100644 --- a/platform/lang-api/src/com/intellij/psi/search/scope/TestsScope.java +++ b/platform/lang-api/src/com/intellij/psi/search/scope/TestsScope.java @@ -16,6 +16,7 @@ package com.intellij.psi.search.scope; import com.intellij.ide.IdeBundle; +import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ProjectFileIndex; import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.vfs.VirtualFile; @@ -23,6 +24,7 @@ import com.intellij.psi.search.scope.packageSet.AbstractPackageSet; import com.intellij.psi.search.scope.packageSet.NamedScope; import com.intellij.psi.search.scope.packageSet.NamedScopesHolder; import com.intellij.ui.Colored; +import org.jetbrains.annotations.Nullable; /** * @author Konstantin Bulenkov @@ -32,9 +34,15 @@ public class TestsScope extends NamedScope { public static final String NAME = IdeBundle.message("predefined.scope.tests.name"); public TestsScope() { super(NAME, new AbstractPackageSet("test:*..*") { + @Override public boolean contains(VirtualFile file, NamedScopesHolder holder) { - final ProjectFileIndex index = ProjectRootManager.getInstance(holder.getProject()).getFileIndex(); + return contains(file, holder.getProject(), holder); + } + + @Override + public boolean contains(VirtualFile file, Project project, @Nullable NamedScopesHolder holder) { + final ProjectFileIndex index = ProjectRootManager.getInstance(project).getFileIndex(); return file != null && index.isInTestSourceContent(file); } }); diff --git a/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/ComplementPackageSet.java b/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/ComplementPackageSet.java index 79432947e68a..6087f0d9e81f 100644 --- a/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/ComplementPackageSet.java +++ b/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/ComplementPackageSet.java @@ -15,8 +15,10 @@ */ package com.intellij.psi.search.scope.packageSet; +import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public class ComplementPackageSet extends PackageSetBase { private final PackageSet myComplementarySet; @@ -27,8 +29,13 @@ public class ComplementPackageSet extends PackageSetBase { @Override public boolean contains(VirtualFile file, NamedScopesHolder holder) { - return myComplementarySet instanceof PackageSetBase ? !((PackageSetBase)myComplementarySet).contains(file, holder) - : myComplementarySet.contains(getPsiFile(file, holder), holder); + return contains(file, holder.getProject(), holder); + } + + @Override + public boolean contains(VirtualFile file, Project project, @Nullable NamedScopesHolder holder) { + return myComplementarySet instanceof PackageSetBase ? !((PackageSetBase)myComplementarySet).contains(file, project, holder) + : myComplementarySet.contains(getPsiFile(file, project), holder); } @Override diff --git a/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/FilePatternPackageSet.java b/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/FilePatternPackageSet.java index 6d5bc19b3d5c..f7da83933d02 100644 --- a/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/FilePatternPackageSet.java +++ b/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/FilePatternPackageSet.java @@ -69,7 +69,11 @@ public class FilePatternPackageSet extends PatternBasedPackageSet { @Override public boolean contains(VirtualFile file, NamedScopesHolder holder) { - Project project = holder.getProject(); + return contains(file, holder.getProject(), holder); + } + + @Override + public boolean contains(VirtualFile file, Project project, @Nullable NamedScopesHolder holder) { ProjectFileIndex fileIndex = ProjectRootManager.getInstance(project).getFileIndex(); return file != null && fileMatcher(file, fileIndex, holder.getProjectBaseDir()) && matchesModule(myModuleGroupPattern, myModulePattern, file, fileIndex); diff --git a/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/IntersectionPackageSet.java b/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/IntersectionPackageSet.java index fb4a83f3673a..f7a32c7c276e 100644 --- a/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/IntersectionPackageSet.java +++ b/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/IntersectionPackageSet.java @@ -15,8 +15,10 @@ */ package com.intellij.psi.search.scope.packageSet; +import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public class IntersectionPackageSet extends PackageSetBase { private final PackageSet myFirstSet; @@ -29,8 +31,13 @@ public class IntersectionPackageSet extends PackageSetBase { @Override public boolean contains(VirtualFile file, NamedScopesHolder holder) { - if (myFirstSet instanceof PackageSetBase ? ((PackageSetBase)myFirstSet).contains(file, holder) : myFirstSet.contains(getPsiFile(file, holder), holder)) { - if (mySecondSet instanceof PackageSetBase ? ((PackageSetBase)mySecondSet).contains(file, holder) : mySecondSet.contains(getPsiFile(file, holder), holder)) { + return contains(file, holder.getProject(), holder); + } + + @Override + public boolean contains(VirtualFile file, Project project, @Nullable NamedScopesHolder holder) { + if (myFirstSet instanceof PackageSetBase ? ((PackageSetBase)myFirstSet).contains(file, project, holder) : myFirstSet.contains(getPsiFile(file, project), holder)) { + if (mySecondSet instanceof PackageSetBase ? ((PackageSetBase)mySecondSet).contains(file, project, holder) : mySecondSet.contains(getPsiFile(file, project), holder)) { return true; } } diff --git a/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/NamedPackageSetReference.java b/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/NamedPackageSetReference.java index 2535b0b36cd1..d851e2da635d 100644 --- a/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/NamedPackageSetReference.java +++ b/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/NamedPackageSetReference.java @@ -27,11 +27,12 @@ public class NamedPackageSetReference extends PackageSetBase { @Override public boolean contains(VirtualFile file, NamedScopesHolder holder) { + if (holder == null) return false; final NamedScope scope = holder.getScope(myName); if (scope != null) { final PackageSet packageSet = scope.getValue(); if (packageSet != null) { - return packageSet instanceof PackageSetBase ? ((PackageSetBase)packageSet).contains(file, holder) : packageSet.contains(getPsiFile(file, holder), holder); + return packageSet instanceof PackageSetBase ? ((PackageSetBase)packageSet).contains(file, holder) : packageSet.contains(getPsiFile(file, holder.getProject()), holder); } } return false; diff --git a/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/PackageSetBase.java b/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/PackageSetBase.java index eb3f50a5f114..7f022a4b1f7f 100644 --- a/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/PackageSetBase.java +++ b/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/PackageSetBase.java @@ -15,6 +15,7 @@ */ package com.intellij.psi.search.scope.packageSet; +import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiManager; @@ -24,15 +25,31 @@ import org.jetbrains.annotations.Nullable; * User: anna */ public abstract class PackageSetBase implements PackageSet { + /** + * @see PackageSetBase#contains(com.intellij.openapi.vfs.VirtualFile, com.intellij.psi.search.scope.packageSet.NamedScopesHolder) + */ + @Deprecated public abstract boolean contains(VirtualFile file, NamedScopesHolder holder); + public boolean contains(VirtualFile file, Project project, @Nullable NamedScopesHolder holder) { + return contains(file, holder); + } @Override public boolean contains(PsiFile file, NamedScopesHolder holder) { - return contains(file.getVirtualFile(), holder); + return contains(file.getVirtualFile(), file.getProject(), holder); } + /** + * @see PackageSetBase#getPsiFile(com.intellij.openapi.vfs.VirtualFile, com.intellij.psi.search.scope.packageSet.NamedScopesHolder) + */ + @Deprecated @Nullable public static PsiFile getPsiFile(VirtualFile file, NamedScopesHolder holder) { return PsiManager.getInstance(holder.getProject()).findFile(file); } + + @Nullable + public static PsiFile getPsiFile(VirtualFile file, Project project) { + return PsiManager.getInstance(project).findFile(file); + } } diff --git a/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/UnionPackageSet.java b/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/UnionPackageSet.java index e0503942f43b..f1ca5caa0a0d 100644 --- a/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/UnionPackageSet.java +++ b/platform/lang-api/src/com/intellij/psi/search/scope/packageSet/UnionPackageSet.java @@ -15,8 +15,10 @@ */ package com.intellij.psi.search.scope.packageSet; +import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public class UnionPackageSet extends PackageSetBase { private final PackageSet myFirstSet; @@ -29,8 +31,13 @@ public class UnionPackageSet extends PackageSetBase { @Override public boolean contains(VirtualFile file, NamedScopesHolder holder) { - return (myFirstSet instanceof PackageSetBase ? ((PackageSetBase)myFirstSet).contains(file, holder) : myFirstSet.contains(getPsiFile(file, holder), holder)) || - (mySecondSet instanceof PackageSetBase ? ((PackageSetBase)mySecondSet).contains(file, holder) : mySecondSet.contains(getPsiFile(file, holder), holder)); + return contains(file, holder.getProject(), holder); + } + + @Override + public boolean contains(VirtualFile file, Project project, @Nullable NamedScopesHolder holder) { + return (myFirstSet instanceof PackageSetBase ? ((PackageSetBase)myFirstSet).contains(file, project, holder) : myFirstSet.contains(getPsiFile(file, project), holder)) || + (mySecondSet instanceof PackageSetBase ? ((PackageSetBase)mySecondSet).contains(file, project, holder) : mySecondSet.contains(getPsiFile(file, project), holder)); } @Override diff --git a/platform/lang-impl/src/com/intellij/ide/scopeView/ScopePaneSelectInTarget.java b/platform/lang-impl/src/com/intellij/ide/scopeView/ScopePaneSelectInTarget.java index b13961191322..eb969af3d182 100644 --- a/platform/lang-impl/src/com/intellij/ide/scopeView/ScopePaneSelectInTarget.java +++ b/platform/lang-impl/src/com/intellij/ide/scopeView/ScopePaneSelectInTarget.java @@ -79,7 +79,7 @@ public class ScopePaneSelectInTarget extends ProjectViewSelectInTarget { final VirtualFile virtualFile = context.getVirtualFile(); if (packageSet != null) { final NamedScopesHolder holder = NamedScopesHolder.getHolder(myProject, subId, DependencyValidationManager.getInstance(myProject)); - if (packageSet instanceof PackageSetBase ? ((PackageSetBase)packageSet).contains(virtualFile, holder) : packageSet.contains(PackageSetBase.getPsiFile(virtualFile, holder), holder)) { + if (packageSet instanceof PackageSetBase ? ((PackageSetBase)packageSet).contains(virtualFile, myProject, holder) : packageSet.contains(PackageSetBase.getPsiFile(virtualFile, myProject), holder)) { return true; } } diff --git a/platform/lang-impl/src/com/intellij/ide/scopeView/ScopeTreeViewPanel.java b/platform/lang-impl/src/com/intellij/ide/scopeView/ScopeTreeViewPanel.java index f685cc8817ac..7d247227d643 100644 --- a/platform/lang-impl/src/com/intellij/ide/scopeView/ScopeTreeViewPanel.java +++ b/platform/lang-impl/src/com/intellij/ide/scopeView/ScopeTreeViewPanel.java @@ -332,7 +332,7 @@ public class ScopeTreeViewPanel extends JPanel implements Disposable { myBuilder = new FileTreeModelBuilder(myProject, new Marker() { @Override public boolean isMarked(VirtualFile file) { - return packageSet != null && (packageSet instanceof PackageSetBase ? ((PackageSetBase)packageSet).contains(file, holder) : packageSet.contains(PackageSetBase.getPsiFile(file, holder), holder)); + return packageSet != null && (packageSet instanceof PackageSetBase ? ((PackageSetBase)packageSet).contains(file, myProject, holder) : packageSet.contains(PackageSetBase.getPsiFile(file, myProject), holder)); } }, settings); myTree.setPaintBusy(true); @@ -812,7 +812,7 @@ public class ScopeTreeViewPanel extends JPanel implements Disposable { if (virtualFile != null) { final ProjectView projectView = ProjectView.getInstance(myProject); final NamedScopesHolder holder = NamedScopesHolder.getHolder(myProject, CURRENT_SCOPE_NAME, myDependencyValidationManager); - if (packageSet instanceof PackageSetBase && !((PackageSetBase)packageSet).contains(virtualFile, holder) || + if (packageSet instanceof PackageSetBase && !((PackageSetBase)packageSet).contains(virtualFile, myProject, holder) || psiFile != null && !packageSet.contains(psiFile, holder)) { projectView.changeView(ProjectViewPane.ID); } diff --git a/platform/lang-impl/src/com/intellij/ide/scopeView/ScopeViewPane.java b/platform/lang-impl/src/com/intellij/ide/scopeView/ScopeViewPane.java index 3caa7b35008b..c8401174733b 100644 --- a/platform/lang-impl/src/com/intellij/ide/scopeView/ScopeViewPane.java +++ b/platform/lang-impl/src/com/intellij/ide/scopeView/ScopeViewPane.java @@ -203,7 +203,7 @@ public class ScopeViewPane extends AbstractProjectViewPane { private boolean changeView(final PackageSet packageSet, final PsiElement element, final PsiFileSystemItem psiFileSystemItem, final String name, final NamedScopesHolder holder, boolean requestFocus) { - if ((packageSet instanceof PackageSetBase && ((PackageSetBase)packageSet).contains(psiFileSystemItem.getVirtualFile(), holder)) || + if ((packageSet instanceof PackageSetBase && ((PackageSetBase)packageSet).contains(psiFileSystemItem.getVirtualFile(), myProject, holder)) || (psiFileSystemItem instanceof PsiFile && packageSet.contains((PsiFile)psiFileSystemItem, holder))) { if (!name.equals(getSubId())) { myProjectView.changeView(getId(), name); diff --git a/platform/lang-impl/src/com/intellij/ide/util/scopeChooser/ScopeEditorPanel.java b/platform/lang-impl/src/com/intellij/ide/util/scopeChooser/ScopeEditorPanel.java index 06e5986f35f4..bfcf7854c125 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/scopeChooser/ScopeEditorPanel.java +++ b/platform/lang-impl/src/com/intellij/ide/util/scopeChooser/ScopeEditorPanel.java @@ -86,7 +86,7 @@ public class ScopeEditorPanel { private PanelProgressIndicator myCurrentProgress; private NamedScopesHolder myHolder; - public ScopeEditorPanel(Project project, final NamedScopesHolder holder) { + public ScopeEditorPanel(final Project project, final NamedScopesHolder holder) { myProject = project; myHolder = holder; @@ -105,8 +105,8 @@ public class ScopeEditorPanel { myTreeMarker = new Marker() { @Override public boolean isMarked(VirtualFile file) { - return myCurrentScope != null && (myCurrentScope instanceof PackageSetBase ? ((PackageSetBase)myCurrentScope).contains(file, myHolder) - : myCurrentScope.contains(PackageSetBase.getPsiFile(file, myHolder), myHolder)); + return myCurrentScope != null && (myCurrentScope instanceof PackageSetBase ? ((PackageSetBase)myCurrentScope).contains(file, project, myHolder) + : myCurrentScope.contains(PackageSetBase.getPsiFile(file, myProject), myHolder)); } }; diff --git a/platform/lang-impl/src/com/intellij/packageDependencies/DefaultScopesProvider.java b/platform/lang-impl/src/com/intellij/packageDependencies/DefaultScopesProvider.java index 5a16d34d1e45..a0672a15e7e8 100644 --- a/platform/lang-impl/src/com/intellij/packageDependencies/DefaultScopesProvider.java +++ b/platform/lang-impl/src/com/intellij/packageDependencies/DefaultScopesProvider.java @@ -52,7 +52,12 @@ public class DefaultScopesProvider extends CustomScopesProviderEx { myProblemsScope = new NamedScope(IdeBundle.message("predefined.scope.problems.name"), new AbstractPackageSet(text) { @Override public boolean contains(VirtualFile file, NamedScopesHolder holder) { - return holder.getProject() == myProject + return contains(file, holder.getProject(), holder); + } + + @Override + public boolean contains(VirtualFile file, Project project, @Nullable NamedScopesHolder holder) { + return project == myProject && WolfTheProblemSolver.getInstance(myProject).isProblemFile(file); } }); diff --git a/platform/lang-impl/src/com/intellij/ui/tabs/FileColorsModel.java b/platform/lang-impl/src/com/intellij/ui/tabs/FileColorsModel.java index d15dfb1360c4..69c5e80767c4 100644 --- a/platform/lang-impl/src/com/intellij/ui/tabs/FileColorsModel.java +++ b/platform/lang-impl/src/com/intellij/ui/tabs/FileColorsModel.java @@ -250,7 +250,7 @@ public class FileColorsModel implements Cloneable { if (scope != null) { final NamedScopesHolder namedScopesHolder = NamedScopesHolder.getHolder(myProject, configuration.getScopeName(), null); final PackageSet packageSet = scope.getValue(); - if (packageSet instanceof PackageSetBase && namedScopesHolder != null && ((PackageSetBase)packageSet).contains(colored, namedScopesHolder)) { + if (packageSet instanceof PackageSetBase && namedScopesHolder != null && ((PackageSetBase)packageSet).contains(colored, myProject, namedScopesHolder)) { return configuration; } } @@ -261,7 +261,7 @@ public class FileColorsModel implements Cloneable { if (scope != null) { final NamedScopesHolder namedScopesHolder = NamedScopesHolder.getHolder(myProject, configuration.getScopeName(), null); final PackageSet packageSet = scope.getValue(); - if (packageSet instanceof PackageSetBase && namedScopesHolder != null && ((PackageSetBase)packageSet).contains(colored, namedScopesHolder)) { + if (packageSet instanceof PackageSetBase && namedScopesHolder != null && ((PackageSetBase)packageSet).contains(colored, myProject, namedScopesHolder)) { return configuration; } } diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/update/FileOrDirectoryTreeNode.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/update/FileOrDirectoryTreeNode.java index ce0dd8aa3658..77160b78a59d 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/update/FileOrDirectoryTreeNode.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/update/FileOrDirectoryTreeNode.java @@ -139,4 +139,8 @@ public abstract class FileOrDirectoryTreeNode extends AbstractTreeNode implement @Override public void dispose() { } + + public Project getProject() { + return myProject; + } } diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/update/FileTreeNode.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/update/FileTreeNode.java index a01a5973a6b8..2c98c7e4df74 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/update/FileTreeNode.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/update/FileTreeNode.java @@ -62,7 +62,7 @@ public class FileTreeNode extends FileOrDirectoryTreeNode { return false; } VirtualFile file = filePointer.getFile(); - if (file != null && file.isValid() && filter.first.contains(file, filter.second)) { + if (file != null && file.isValid() && filter.first.contains(file, getProject(), filter.second)) { applyFilter(true); return true; }