Commit aa0e217b authored by Maxim.Mossienko's avatar Maxim.Mossienko
Browse files

use more detailed path to file only when opened file name is not unique (IDEA-125958)

parent fe729756
Showing with 24 additions and 4 deletions
+24 -4
......@@ -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;
}
}
......@@ -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<VirtualFile> filesWithSameName = FilenameIndex.getVirtualFilesByName(project, fileName,
ProjectScope.getProjectScope(project));
Collection<VirtualFile> filesWithSameName = skipNonOpenedFiles ? Collections.<VirtualFile>emptySet() :
FilenameIndex.getVirtualFilesByName(project, fileName, ProjectScope.getProjectScope(project));
THashSet<VirtualFile> setOfFilesWithTheSameName = new THashSet<VirtualFile>(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);
}
......
......@@ -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);
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment