From 16ab0a8322c19010473b557245fcd1f155cdc1ee Mon Sep 17 00:00:00 2001 From: Anton Makeev Date: Wed, 22 Oct 2014 15:25:24 +0200 Subject: [PATCH] Project View: sort directories by type as well (e.g. OS X bundles .app, .framework) --- .../intellij/projectView/ProjectTreeSortingTest.java | 10 +++++----- .../ide/projectView/impl/nodes/PsiDirectoryNode.java | 8 ++++++++ 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/java/java-tests/testSrc/com/intellij/projectView/ProjectTreeSortingTest.java b/java/java-tests/testSrc/com/intellij/projectView/ProjectTreeSortingTest.java index cc06d15c396e..b25ca382f2fb 100644 --- a/java/java-tests/testSrc/com/intellij/projectView/ProjectTreeSortingTest.java +++ b/java/java-tests/testSrc/com/intellij/projectView/ProjectTreeSortingTest.java @@ -132,11 +132,11 @@ public class ProjectTreeSortingTest extends BaseProjectViewTestCase { ((ProjectViewImpl)myProjectView).setFoldersAlwaysOnTop(false); assertTree("-foldersOnTop\n" + " a.java\n" + + " +b.java\n" + " c.java\n" + " a.txt\n" + - " c.txt\n" + - " +b.java\n" + - " +b.txt\n"); + " +b.txt\n"+ + " c.txt\n"); } public void testSortByTypeBetweenFilesAndFolders() throws Exception { @@ -156,11 +156,11 @@ public class ProjectTreeSortingTest extends BaseProjectViewTestCase { assertTree("-sortByTypeBetweenFilesAndFolders\n" + " a.java\n" + " b.java\n" + + " +a.java_folder\n" + + " +b.java_folder\n" + " a.txt\n" + " b.txt\n" + - " +a.java_folder\n" + " +a_folder\n" + - " +b.java_folder\n" + " +b_folder\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 16aa930b806a..ec0b9dd8b6c6 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 @@ -318,6 +318,14 @@ public class PsiDirectoryNode extends BasePsiNode implements Navig return null; } + @Override + public Comparable getTypeSortKey() { + VirtualFile file = getVirtualFile(); + if (file == null) return null; + String extension = file.getExtension(); + return extension == null ? null : new PsiFileNode.ExtensionSortKey(extension); + } + @Override public String getQualifiedNameSortKey() { final PsiDirectoryFactory factory = PsiDirectoryFactory.getInstance(getProject());