mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
use more detailed path to file only when opened file name is not unique (IDEA-125958)
This commit is contained in:
+1
-1
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
+14
-3
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user