summaryrefslogtreecommitdiff
path: root/platform/lang-impl/src/com/intellij/ide/util/scopeChooser/ScopeChooserCombo.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/lang-impl/src/com/intellij/ide/util/scopeChooser/ScopeChooserCombo.java')
-rw-r--r--platform/lang-impl/src/com/intellij/ide/util/scopeChooser/ScopeChooserCombo.java28
1 files changed, 20 insertions, 8 deletions
diff --git a/platform/lang-impl/src/com/intellij/ide/util/scopeChooser/ScopeChooserCombo.java b/platform/lang-impl/src/com/intellij/ide/util/scopeChooser/ScopeChooserCombo.java
index 8297a3db8e1f..98190010159b 100644
--- a/platform/lang-impl/src/com/intellij/ide/util/scopeChooser/ScopeChooserCombo.java
+++ b/platform/lang-impl/src/com/intellij/ide/util/scopeChooser/ScopeChooserCombo.java
@@ -29,6 +29,7 @@ import com.intellij.openapi.extensions.Extensions;
import com.intellij.openapi.fileEditor.FileEditorManager;
import com.intellij.openapi.module.*;
import com.intellij.openapi.project.Project;
+import com.intellij.openapi.util.Condition;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.TextRange;
import com.intellij.openapi.vfs.VirtualFile;
@@ -411,21 +412,32 @@ public class ScopeChooserCombo extends ComboboxWithBrowseButton implements Dispo
}
}
- if (dataContext != null) {
- final VirtualFile[] files = CommonDataKeys.VIRTUAL_FILE_ARRAY.getData(dataContext);
- if (files != null) {
- final List<VirtualFile> openFiles = Arrays.asList(files);
- result.add(new DelegatingGlobalSearchScope(GlobalSearchScope.filesScope(project, openFiles)){
+ ContainerUtil.addIfNotNull(result, getSelectedFilesScope(project, dataContext));
+
+ return ContainerUtil.newArrayList(result);
+ }
+
+ @Nullable
+ private static SearchScope getSelectedFilesScope(final Project project, @Nullable DataContext dataContext) {
+ final VirtualFile[] filesOrDirs = dataContext == null ? null : CommonDataKeys.VIRTUAL_FILE_ARRAY.getData(dataContext);
+ if (filesOrDirs != null) {
+ final List<VirtualFile> selectedFiles = ContainerUtil.filter(filesOrDirs, new Condition<VirtualFile>() {
+ @Override
+ public boolean value(VirtualFile file) {
+ return !file.isDirectory();
+ }
+ });
+ if (!selectedFiles.isEmpty()) {
+ return new DelegatingGlobalSearchScope(GlobalSearchScope.filesScope(project, selectedFiles)){
@NotNull
@Override
public String getDisplayName() {
return "Selected Files";
}
- });
+ };
}
}
-
- return ContainerUtil.newArrayList(result);
+ return null;
}
protected static Set<VirtualFile> collectFiles(Set<Usage> usages, boolean findFirst) {