From aa0e217bb9ee58a23d239eb86da546a0a99c6059 Mon Sep 17 00:00:00 2001 From: "Maxim.Mossienko" Date: Thu, 5 Jun 2014 22:47:47 +0200 Subject: [PATCH] use more detailed path to file only when opened file name is not unique (IDEA-125958) --- .../impl/UniqueNameEditorTabTitleProvider.java | 2 +- .../impl/UniqueVFilePathBuilderImpl.java | 17 ++++++++++++++--- .../fileEditor/UniqueVFilePathBuilder.java | 9 +++++++++ 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/UniqueNameEditorTabTitleProvider.java b/platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/UniqueNameEditorTabTitleProvider.java index 183183ed4bea..374c5b7cd8db 100644 --- a/platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/UniqueNameEditorTabTitleProvider.java +++ b/platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/UniqueNameEditorTabTitleProvider.java @@ -30,7 +30,7 @@ public class UniqueNameEditorTabTitleProvider implements EditorTabTitleProvider if (!UISettings.getInstance().SHOW_DIRECTORY_FOR_NON_UNIQUE_FILENAMES || DumbService.isDumb(project)) { return null; } - final String uniqueName = UniqueVFilePathBuilder.getInstance().getUniqueVirtualFilePath(project, file); + final String uniqueName = UniqueVFilePathBuilder.getInstance().getUniqueVirtualFilePathWithinOpenedFileEditors(project, file); return uniqueName.equals(file.getName()) ? null : uniqueName; } } diff --git a/platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/UniqueVFilePathBuilderImpl.java b/platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/UniqueVFilePathBuilderImpl.java index 00f8835b161b..bdc0b0e67e2e 100644 --- a/platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/UniqueVFilePathBuilderImpl.java +++ b/platform/lang-impl/src/com/intellij/openapi/fileEditor/impl/UniqueVFilePathBuilderImpl.java @@ -30,6 +30,7 @@ import org.jetbrains.annotations.NotNull; import java.io.File; import java.util.Collection; +import java.util.Collections; /** * @author yole @@ -38,12 +39,22 @@ public class UniqueVFilePathBuilderImpl extends UniqueVFilePathBuilder { @NotNull @Override public String getUniqueVirtualFilePath(Project project, VirtualFile file) { + return getUniqueVirtualFilePath(project, file, false); + } + + @NotNull + @Override + public String getUniqueVirtualFilePathWithinOpenedFileEditors(Project project, VirtualFile vFile) { + return getUniqueVirtualFilePath(project, vFile, true); + } + + private String getUniqueVirtualFilePath(Project project, VirtualFile file, boolean skipNonOpenedFiles) { String fileName = file.getName(); - Collection filesWithSameName = FilenameIndex.getVirtualFilesByName(project, fileName, - ProjectScope.getProjectScope(project)); + Collection filesWithSameName = skipNonOpenedFiles ? Collections.emptySet() : + FilenameIndex.getVirtualFilesByName(project, fileName, ProjectScope.getProjectScope(project)); THashSet setOfFilesWithTheSameName = new THashSet(filesWithSameName); // add open files out of project scope - for(VirtualFile openFile:FileEditorManager.getInstance(project).getOpenFiles()) { + for(VirtualFile openFile: FileEditorManager.getInstance(project).getOpenFiles()) { if (openFile.getName().equals(fileName)) { setOfFilesWithTheSameName.add(openFile); } diff --git a/platform/platform-api/src/com/intellij/openapi/fileEditor/UniqueVFilePathBuilder.java b/platform/platform-api/src/com/intellij/openapi/fileEditor/UniqueVFilePathBuilder.java index 7ecc0ea1c2c0..281fa267c250 100644 --- a/platform/platform-api/src/com/intellij/openapi/fileEditor/UniqueVFilePathBuilder.java +++ b/platform/platform-api/src/com/intellij/openapi/fileEditor/UniqueVFilePathBuilder.java @@ -30,6 +30,12 @@ public abstract class UniqueVFilePathBuilder { public String getUniqueVirtualFilePath(Project project, VirtualFile vFile) { return vFile.getPresentableName(); } + + @NotNull + @Override + public String getUniqueVirtualFilePathWithinOpenedFileEditors(Project project, VirtualFile vFile) { + return vFile.getPresentableName(); + } }; public static UniqueVFilePathBuilder getInstance() { @@ -42,4 +48,7 @@ public abstract class UniqueVFilePathBuilder { @NotNull public abstract String getUniqueVirtualFilePath(Project project, VirtualFile vFile); + + @NotNull + public abstract String getUniqueVirtualFilePathWithinOpenedFileEditors(Project project, VirtualFile vFile); }