From ea853ac9687b8df524c6d905827eaed3f2d54dfd Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Mon, 26 Mar 2018 15:19:11 +0300 Subject: [PATCH] vcs: unify ChangeLists ordering * sort by name case-insensitive * sort list returned from `CLM.getChangeLists()` --- .../src/com/intellij/openapi/vcs/ChangeListColumn.java | 2 +- .../src/com/intellij/openapi/vcs/changes/ChangesUtil.java | 4 ++++ .../com/intellij/openapi/vcs/changes/ChangeListWorker.java | 4 +++- .../intellij/openapi/vcs/ex/PartialLocalLineStatusTracker.kt | 3 +-- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/platform/vcs-api/src/com/intellij/openapi/vcs/ChangeListColumn.java b/platform/vcs-api/src/com/intellij/openapi/vcs/ChangeListColumn.java index b4e2f52b0402..b2620037c136 100644 --- a/platform/vcs-api/src/com/intellij/openapi/vcs/ChangeListColumn.java +++ b/platform/vcs-api/src/com/intellij/openapi/vcs/ChangeListColumn.java @@ -100,7 +100,7 @@ public abstract class ChangeListColumn { @Override @NotNull public Comparator getComparator() { - return comparing(ChangeList::getName); + return comparing(list -> list.getName(), String::compareToIgnoreCase); } }; diff --git a/platform/vcs-api/src/com/intellij/openapi/vcs/changes/ChangesUtil.java b/platform/vcs-api/src/com/intellij/openapi/vcs/changes/ChangesUtil.java index e355157414bf..2c0aee29ce39 100644 --- a/platform/vcs-api/src/com/intellij/openapi/vcs/changes/ChangesUtil.java +++ b/platform/vcs-api/src/com/intellij/openapi/vcs/changes/ChangesUtil.java @@ -68,6 +68,10 @@ public class ChangesUtil { } }; + public static final Comparator CHANGELIST_COMPARATOR = + Comparator.comparingInt(list -> list.isDefault() ? -1 : 0) + .thenComparing(list -> list.getName(), String::compareToIgnoreCase); + private ChangesUtil() {} @NotNull diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangeListWorker.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangeListWorker.java index b5b17a6cf4a5..a95d6b6e5e6b 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangeListWorker.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangeListWorker.java @@ -246,7 +246,9 @@ public class ChangeListWorker { @NotNull public List getChangeLists() { - return ContainerUtil.map(myLists, this::toChangeList); + List lists = ContainerUtil.map(myLists, this::toChangeList); + ContainerUtil.sort(lists, ChangesUtil.CHANGELIST_COMPARATOR); + return lists; } public int getChangeListsNumber() { diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/PartialLocalLineStatusTracker.kt b/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/PartialLocalLineStatusTracker.kt index 289647c007ec..1f44e68aa79d 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/PartialLocalLineStatusTracker.kt +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/PartialLocalLineStatusTracker.kt @@ -489,8 +489,7 @@ class PartialLocalLineStatusTracker(project: Project, val group = DefaultActionGroup() if (changeLists.size > 1) { group.add(Separator("Changelists")) - val comparator = compareBy { if (it.isDefault) 0 else 1 }.thenBy { it.name } - for (changeList in changeLists.sortedWith(comparator)) { + for (changeList in changeLists) { group.add(MoveToChangeListAction(editor, range, mousePosition, changeList)) } group.add(Separator.getInstance())