From 876f15cd810235f961ac8a98020fce86eef0a477 Mon Sep 17 00:00:00 2001 From: Sergey Simonchik Date: Fri, 11 Mar 2016 00:05:22 -0800 Subject: [PATCH] scope: display "Open Files" label in scope selector combobox instead of bare hashCode if no files opened (WEB-20644) --- .../src/com/intellij/psi/search/GlobalSearchScope.java | 4 ++-- .../com/intellij/psi/search/GlobalSearchScopes.java | 10 +++++++++- .../ide/util/scopeChooser/ScopeChooserUtils.java | 3 +-- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/platform/core-api/src/com/intellij/psi/search/GlobalSearchScope.java b/platform/core-api/src/com/intellij/psi/search/GlobalSearchScope.java index 5ff729b586a0..5b8a60ef8120 100644 --- a/platform/core-api/src/com/intellij/psi/search/GlobalSearchScope.java +++ b/platform/core-api/src/com/intellij/psi/search/GlobalSearchScope.java @@ -300,7 +300,7 @@ public abstract class GlobalSearchScope extends SearchScope implements ProjectAw } @NotNull - public static GlobalSearchScope fileScope(@NotNull Project project, final VirtualFile virtualFile, @Nullable final String displayName) { + public static GlobalSearchScope fileScope(@NotNull Project project, @Nullable VirtualFile virtualFile, @Nullable final String displayName) { return new FileScope(project, virtualFile) { @NotNull @Override @@ -708,7 +708,7 @@ public abstract class GlobalSearchScope extends SearchScope implements ProjectAw private final Module myModule; private final boolean mySearchOutsideContent; - private FileScope(@NotNull Project project, VirtualFile virtualFile) { + private FileScope(@NotNull Project project, @Nullable VirtualFile virtualFile) { super(project); myVirtualFile = virtualFile; final FileIndexFacade facade = FileIndexFacade.getInstance(project); 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 3acfe338d499..85b7a63ea19f 100644 --- a/platform/lang-api/src/com/intellij/psi/search/GlobalSearchScopes.java +++ b/platform/lang-api/src/com/intellij/psi/search/GlobalSearchScopes.java @@ -18,6 +18,7 @@ package com.intellij.psi.search; import com.intellij.openapi.fileEditor.FileEditorManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.util.ArrayUtil; import org.jetbrains.annotations.NotNull; import java.util.Arrays; @@ -26,12 +27,19 @@ import java.util.Arrays; * @author yole */ public class GlobalSearchScopes extends GlobalSearchScopesCore { + + public static final String OPEN_FILES_SCOPE_NAME = "Open Files"; + private GlobalSearchScopes() { } @NotNull public static GlobalSearchScope openFilesScope(@NotNull Project project) { final VirtualFile[] files = FileEditorManager.getInstance(project).getOpenFiles(); - return GlobalSearchScope.filesScope(project, Arrays.asList(files), "Open Files"); + if (ArrayUtil.isEmpty(files)) { + // prefer a scope with meaningful getDisplayName(), avoid GlobalSearchScope.EMPTY_SCOPE + return GlobalSearchScope.fileScope(project, null, OPEN_FILES_SCOPE_NAME); + } + return GlobalSearchScope.filesScope(project, Arrays.asList(files), OPEN_FILES_SCOPE_NAME); } } diff --git a/platform/lang-impl/src/com/intellij/ide/util/scopeChooser/ScopeChooserUtils.java b/platform/lang-impl/src/com/intellij/ide/util/scopeChooser/ScopeChooserUtils.java index fb5a9bde7ab2..05bbf70cae0f 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/scopeChooser/ScopeChooserUtils.java +++ b/platform/lang-impl/src/com/intellij/ide/util/scopeChooser/ScopeChooserUtils.java @@ -37,7 +37,6 @@ import java.util.List; public class ScopeChooserUtils { - private static final String OPEN_FILES_SCOPE_NAME = "Open Files"; private static final String CURRENT_FILE_SCOPE_NAME = IdeBundle.message("scope.current.file"); private ScopeChooserUtils() { @@ -49,7 +48,7 @@ public class ScopeChooserUtils { if (namedScope == null) { namedScope = NamedScopesHolder.getScope(project, scopeName); } - if (namedScope == null && OPEN_FILES_SCOPE_NAME.equals(scopeName)) { + if (namedScope == null && GlobalSearchScopes.OPEN_FILES_SCOPE_NAME.equals(scopeName)) { return intersectWithContentScope(project, GlobalSearchScopes.openFilesScope(project)); } if (namedScope == null && CURRENT_FILE_SCOPE_NAME.equals(scopeName)) { -- 2.23.3