From 38eb0b11bce8887c88147085890ac61d5b2e811c Mon Sep 17 00:00:00 2001 From: nik Date: Thu, 1 Feb 2018 16:59:36 +0300 Subject: [PATCH] project view: don't show module name if it differs from directory name only by case of letters (IDEA-185935) --- .../testData/projectView/qualifiedModuleNames/a/Foo/foo.txt | 0 .../com/intellij/projectView/ProjectTreeStructureTest.java | 6 ++++++ .../ide/projectView/impl/nodes/PsiDirectoryNode.java | 5 +++-- 3 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 java/java-tests/testData/projectView/qualifiedModuleNames/a/Foo/foo.txt diff --git a/java/java-tests/testData/projectView/qualifiedModuleNames/a/Foo/foo.txt b/java/java-tests/testData/projectView/qualifiedModuleNames/a/Foo/foo.txt new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/java/java-tests/testSrc/com/intellij/projectView/ProjectTreeStructureTest.java b/java/java-tests/testSrc/com/intellij/projectView/ProjectTreeStructureTest.java index a10196bf7e94..50d5d2cca45d 100644 --- a/java/java-tests/testSrc/com/intellij/projectView/ProjectTreeStructureTest.java +++ b/java/java-tests/testSrc/com/intellij/projectView/ProjectTreeStructureTest.java @@ -198,6 +198,9 @@ public class ProjectTreeStructureTest extends BaseProjectViewTestCase { Module main = createModule("a.main"); PsiTestUtil.addContentRoot(main, testDataRoot.findFileByRelativePath("a/main")); + Module foo = createModule("a.foo"); + PsiTestUtil.addContentRoot(foo, testDataRoot.findFileByRelativePath("a/Foo")); + Module util = createModule("util"); PsiTestUtil.addContentRoot(util, testDataRoot.findFileByRelativePath("a/util")); @@ -218,10 +221,13 @@ public class ProjectTreeStructureTest extends BaseProjectViewTestCase { }; String treeStructure = ModuleGroupTestsKt.runWithQualifiedModuleNamesEnabled(() -> PlatformTestUtil.print(myStructure, myStructure.getRootElement(), nodePresenter)); assertEquals("testQualifiedModuleNames\n" + + " a.foo.iml\n" + " a.iml\n" + " a.main.iml\n" + " qualifiedModuleNames [testQualifiedModuleNames]\n" + " a\n" + + " Foo\n" + + " foo.txt\n" + " b [x.b]\n" + " b.txt\n" + " main\n" + diff --git a/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/PsiDirectoryNode.java b/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/PsiDirectoryNode.java index dba0b0499c39..8ee8ae943ef7 100644 --- a/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/PsiDirectoryNode.java +++ b/platform/lang-impl/src/com/intellij/ide/projectView/impl/nodes/PsiDirectoryNode.java @@ -36,6 +36,7 @@ import com.intellij.openapi.roots.libraries.LibraryUtil; import com.intellij.openapi.roots.ui.configuration.ProjectSettingsService; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.registry.Registry; +import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VfsUtilCore; @@ -139,10 +140,10 @@ public class PsiDirectoryNode extends BasePsiNode implements Navig private static boolean moduleNameMatchesDirectoryName(@NotNull Module module, @NotNull VirtualFile directoryFile, @NotNull ProjectFileIndex fileIndex) { String moduleName = module.getName(); String directoryName = directoryFile.getName(); - if (moduleName.equals(directoryName)) { + if (moduleName.equalsIgnoreCase(directoryName)) { return true; } - if (ModuleGrouperKt.isQualifiedModuleNamesEnabled(module.getProject()) && moduleName.endsWith(directoryName)) { + if (ModuleGrouperKt.isQualifiedModuleNamesEnabled(module.getProject()) && StringUtil.endsWithIgnoreCase(moduleName, directoryName)) { int parentPrefixLength = moduleName.length() - directoryName.length() - 1; if (parentPrefixLength > 0 && moduleName.charAt(parentPrefixLength) == '.') { VirtualFile parentDirectory = directoryFile.getParent();