diff options
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.java | 28 |
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) { |