summaryrefslogtreecommitdiff
path: root/platform/usageView/src/com/intellij/usages/impl/UsageViewManagerImpl.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/usageView/src/com/intellij/usages/impl/UsageViewManagerImpl.java')
-rw-r--r--platform/usageView/src/com/intellij/usages/impl/UsageViewManagerImpl.java42
1 files changed, 29 insertions, 13 deletions
diff --git a/platform/usageView/src/com/intellij/usages/impl/UsageViewManagerImpl.java b/platform/usageView/src/com/intellij/usages/impl/UsageViewManagerImpl.java
index 6d7ce9c07a14..b9fc77295d62 100644
--- a/platform/usageView/src/com/intellij/usages/impl/UsageViewManagerImpl.java
+++ b/platform/usageView/src/com/intellij/usages/impl/UsageViewManagerImpl.java
@@ -33,9 +33,8 @@ import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.wm.ToolWindow;
import com.intellij.openapi.wm.ToolWindowId;
import com.intellij.openapi.wm.ToolWindowManager;
-import com.intellij.psi.search.GlobalSearchScope;
-import com.intellij.psi.search.LocalSearchScope;
-import com.intellij.psi.search.SearchScope;
+import com.intellij.psi.PsiElement;
+import com.intellij.psi.search.*;
import com.intellij.psi.util.PsiUtilCore;
import com.intellij.ui.content.Content;
import com.intellij.usageView.UsageViewBundle;
@@ -122,23 +121,23 @@ public class UsageViewManagerImpl extends UsageViewManager {
@NotNull final UsageViewPresentation presentation,
@NotNull final FindUsagesProcessPresentation processPresentation,
@Nullable final UsageViewStateListener listener) {
- final SearchScope searchScope = getSearchScope(searchFor);
+ final SearchScope searchScope = getMaxSearchScopeToWarnOfFallingOutOf(searchFor);
return doSearchAndShow(searchFor, searcherFactory, presentation, processPresentation, listener, searchScope);
}
- UsageView doSearchAndShow(@NotNull final UsageTarget[] searchFor,
+ private UsageView doSearchAndShow(@NotNull final UsageTarget[] searchFor,
@NotNull final Factory<UsageSearcher> searcherFactory,
@NotNull final UsageViewPresentation presentation,
@NotNull final FindUsagesProcessPresentation processPresentation,
@Nullable final UsageViewStateListener listener,
- @NotNull final SearchScope searchScope) {
+ @NotNull final SearchScope searchScopeToWarnOfFallingOutOf) {
final AtomicReference<UsageViewImpl> usageViewRef = new AtomicReference<UsageViewImpl>();
Task.Backgroundable task = new Task.Backgroundable(myProject, getProgressTitle(presentation), true, new SearchInBackgroundOption()) {
@Override
public void run(@NotNull final ProgressIndicator indicator) {
new SearchForUsagesRunnable(UsageViewManagerImpl.this, UsageViewManagerImpl.this.myProject, usageViewRef, presentation, searchFor, searcherFactory,
- processPresentation, searchScope, listener).run();
+ processPresentation, searchScopeToWarnOfFallingOutOf, listener).run();
}
@NotNull
@@ -159,7 +158,7 @@ public class UsageViewManagerImpl extends UsageViewManager {
}
@NotNull
- private SearchScope getSearchScope(@NotNull UsageTarget[] searchFor) {
+ private SearchScope getMaxSearchScopeToWarnOfFallingOutOf(@NotNull UsageTarget[] searchFor) {
UsageTarget target = searchFor[0];
if (target instanceof TypeSafeDataProvider) {
final SearchScope[] scope = new SearchScope[1];
@@ -171,7 +170,7 @@ public class UsageViewManagerImpl extends UsageViewManager {
});
return scope[0];
}
- return GlobalSearchScope.projectScope(myProject);
+ return GlobalSearchScope.allScope(myProject); // by default do not warn of falling out of scope
}
@Override
@@ -262,10 +261,27 @@ public class UsageViewManagerImpl extends UsageViewManager {
}
public static boolean isInScope(@NotNull Usage usage, @NotNull SearchScope searchScope) {
- VirtualFile file = usage instanceof UsageInFile ? ((UsageInFile)usage).getFile() : usage instanceof PsiElementUsage ? PsiUtilCore
- .getVirtualFile(((PsiElementUsage)usage).getElement()) : null;
- return file != null && (searchScope instanceof LocalSearchScope
- ? ((LocalSearchScope)searchScope).isInScope(file) : ((GlobalSearchScope)searchScope).contains(file));
+ PsiElement element = null;
+ VirtualFile file = usage instanceof UsageInFile ? ((UsageInFile)usage).getFile() :
+ usage instanceof PsiElementUsage ? PsiUtilCore.getVirtualFile(element = ((PsiElementUsage)usage).getElement()) : null;
+ if (file != null) {
+ return isFileInScope(file, searchScope);
+ }
+ else if(element != null) {
+ return searchScope instanceof EverythingGlobalScope ||
+ searchScope instanceof ProjectScopeImpl ||
+ searchScope instanceof ProjectAndLibrariesScope;
+ }
+ return false;
+ }
+
+ private static boolean isFileInScope(@NotNull VirtualFile file, @NotNull SearchScope searchScope) {
+ if (searchScope instanceof LocalSearchScope) {
+ return ((LocalSearchScope)searchScope).isInScope(file);
+ }
+ else {
+ return ((GlobalSearchScope)searchScope).contains(file);
+ }
}
@NotNull