Don't show Default changelist when it's the only one (IDEA-191602)

This commit is contained in:
Dmitry Jemerov
2018-05-09 15:15:58 +02:00
parent c30f6472cf
commit a494ed9063
3 changed files with 21 additions and 7 deletions
@@ -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
@@ -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())
@@ -125,7 +125,7 @@ public class TreeModelBuilder {
@NotNull ChangesGroupingPolicyFactory grouping,
@NotNull Collection<? extends ChangeList> 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<? extends ChangeList> changeLists) {
public TreeModelBuilder setChangeLists(@NotNull Collection<? extends ChangeList> 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<Change> 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;