From a494ed906374e7d4f7df10ece914582ebb6a6996 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Wed, 9 May 2018 15:15:58 +0200 Subject: [PATCH] Don't show Default changelist when it's the only one (IDEA-191602) --- .../util/resources/misc/registry.properties | 3 +++ .../vcs/changes/ChangesViewManager.java | 3 ++- .../vcs/changes/ui/TreeModelBuilder.java | 22 ++++++++++++++----- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/platform/util/resources/misc/registry.properties b/platform/util/resources/misc/registry.properties index c77169b2778b..cd301f71b867 100644 --- a/platform/util/resources/misc/registry.properties +++ b/platform/util/resources/misc/registry.properties @@ -525,6 +525,9 @@ vcs.enable.partial.changelists.redo=true vcs.enable.partial.changelists.redo.description=Restore original markers state on Redo action vcs.enable.partial.changelists.redo.restartRequired=true +vcs.skip.single.default.changelist=true +vcs.skip.single.default.changelist.description=Don't show changelist node in Local Changes view when only the Default changelist exists + psi.incremental.reparse.depth.limit=1000 psi.deferIconLoading=true diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangesViewManager.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangesViewManager.java index d574e097a9d6..cdde7974f110 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangesViewManager.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangesViewManager.java @@ -19,6 +19,7 @@ import com.intellij.openapi.ui.SimpleToolWindowPanel; import com.intellij.openapi.util.Disposer; import com.intellij.openapi.util.Factory; import com.intellij.openapi.util.SystemInfo; +import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vcs.ProjectLevelVcsManager; import com.intellij.openapi.vcs.VcsBundle; @@ -287,7 +288,7 @@ public class ChangesViewManager implements ChangesViewI, ProjectComponent, Persi ChangeListManagerImpl changeListManager = ChangeListManagerImpl.getInstanceImpl(myProject); TreeModelBuilder treeModelBuilder = new TreeModelBuilder(myProject, myView.getGrouping()) - .setChangeLists(changeListManager.getChangeListsCopy()) + .setChangeLists(changeListManager.getChangeListsCopy(), Registry.is("vcs.skip.single.default.changelist")) .setLocallyDeletedPaths(changeListManager.getDeletedFiles()) .setModifiedWithoutEditing(changeListManager.getModifiedWithoutEditing()) .setSwitchedFiles(changeListManager.getSwitchedFilesMap()) diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/TreeModelBuilder.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/TreeModelBuilder.java index 562465715178..912feb4be90d 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/TreeModelBuilder.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/TreeModelBuilder.java @@ -125,7 +125,7 @@ public class TreeModelBuilder { @NotNull ChangesGroupingPolicyFactory grouping, @NotNull Collection changeLists) { return new TreeModelBuilder(project, grouping) - .setChangeLists(changeLists) + .setChangeLists(changeLists, false) .build(); } @@ -179,20 +179,30 @@ public class TreeModelBuilder { } @NotNull - public TreeModelBuilder setChangeLists(@NotNull Collection changeLists) { + public TreeModelBuilder setChangeLists(@NotNull Collection changeLists, boolean skipSingleDefaultChangeList) { final RemoteRevisionsCache revisionsCache = RemoteRevisionsCache.getInstance(myProject); + boolean skipChangeListNode = skipSingleDefaultChangeList && changeLists.size() == 1 && + LocalChangeList.DEFAULT_NAME.equals(changeLists.iterator().next().getName()); for (ChangeList list : changeLists) { List changes = sorted(list.getChanges(), CHANGE_COMPARATOR); ChangeListRemoteState listRemoteState = new ChangeListRemoteState(changes.size()); - ChangesBrowserChangeListNode listNode = new ChangesBrowserChangeListNode(myProject, list, listRemoteState); - listNode.markAsHelperNode(); - myModel.insertNodeInto(listNode, myRoot, 0); + ChangesBrowserNode changesParent; + if (!skipChangeListNode) { + ChangesBrowserChangeListNode listNode = new ChangesBrowserChangeListNode(myProject, list, listRemoteState); + listNode.markAsHelperNode(); + + myModel.insertNodeInto(listNode, myRoot, 0); + changesParent = listNode; + } + else { + changesParent = myRoot; + } for (int i = 0; i < changes.size(); i++) { Change change = changes.get(i); RemoteStatusChangeNodeDecorator decorator = new RemoteStatusChangeNodeDecorator(revisionsCache, listRemoteState, i); - insertChangeNode(change, listNode, createChangeNode(change, decorator)); + insertChangeNode(change, changesParent, createChangeNode(change, decorator)); } } return this;