From 7c10690e8c8f37511cd73d95ea4fa9320f4708d3 Mon Sep 17 00:00:00 2001 From: irengrig Date: Fri, 16 Nov 2012 17:08:47 +0400 Subject: [PATCH] IDEA-95136 Move to another changelist shall pre-select 'create new' option If there's only one changelist so far [r=vasya] --- .../testFramework/vcs/MockChangeListManager.java | 5 +++++ .../openapi/vcs/changes/ChangeListManager.java | 1 + .../openapi/vcs/changes/ChangeListManagerImpl.java | 7 +++++++ .../openapi/vcs/changes/ChangeListWorker.java | 4 ++++ .../openapi/vcs/changes/ui/ChangeListChooser.java | 11 ++++++----- 5 files changed, 23 insertions(+), 5 deletions(-) diff --git a/platform/testFramework/testSrc/com/intellij/testFramework/vcs/MockChangeListManager.java b/platform/testFramework/testSrc/com/intellij/testFramework/vcs/MockChangeListManager.java index 46a2dfb50992..8514ec50d46a 100644 --- a/platform/testFramework/testSrc/com/intellij/testFramework/vcs/MockChangeListManager.java +++ b/platform/testFramework/testSrc/com/intellij/testFramework/vcs/MockChangeListManager.java @@ -71,6 +71,11 @@ public class MockChangeListManager extends ChangeListManagerEx { throw new UnsupportedOperationException(); } + @Override + public int getChangeListsNumber() { + return getChangeListsCopy().size(); + } + @Override public List getChangeListsCopy() { return new ArrayList(myChangeLists.values()); diff --git a/platform/vcs-api/src/com/intellij/openapi/vcs/changes/ChangeListManager.java b/platform/vcs-api/src/com/intellij/openapi/vcs/changes/ChangeListManager.java index 17ade914e075..f3f2958fe6d3 100644 --- a/platform/vcs-api/src/com/intellij/openapi/vcs/changes/ChangeListManager.java +++ b/platform/vcs-api/src/com/intellij/openapi/vcs/changes/ChangeListManager.java @@ -51,6 +51,7 @@ public abstract class ChangeListManager implements ChangeListModification { @TestOnly public abstract boolean ensureUpToDate(boolean canBeCanceled); + public abstract int getChangeListsNumber(); public abstract List getChangeListsCopy(); @NotNull public abstract List getChangeLists(); diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangeListManagerImpl.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangeListManagerImpl.java index 7c576df81bee..a9fc281ebc4c 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangeListManagerImpl.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ChangeListManagerImpl.java @@ -1410,6 +1410,13 @@ public class ChangeListManagerImpl extends ChangeListManagerEx implements Projec return worker.isDone(); } + @Override + public int getChangeListsNumber() { + synchronized (myDataLock) { + return myWorker.getChangeListsNumber(); + } + } + // only a light attempt to show that some dirty scope request is asynchronously coming // for users to see changes are not valid // (commit -> asynch synch VFS -> asynch vcs dirty scope) 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 8836ab004a68..3e12869242bb 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 @@ -549,6 +549,10 @@ public class ChangeListWorker implements ChangeListsWriteOperations { return changes; } + public int getChangeListsNumber() { + return myMap.size(); + } + private abstract class ExternalVsInternalChangesIntersection { protected final Collection myInChanges; protected final Map, LocalChangeList> myInternalMap; diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/ChangeListChooser.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/ChangeListChooser.java index f609b3f6dd0a..255aefb2907d 100644 --- a/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/ChangeListChooser.java +++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/changes/ui/ChangeListChooser.java @@ -17,10 +17,7 @@ package com.intellij.openapi.vcs.changes.ui; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.DialogWrapper; -import com.intellij.openapi.vcs.changes.ChangeList; -import com.intellij.openapi.vcs.changes.ChangeListEditHandler; -import com.intellij.openapi.vcs.changes.LocalChangeList; -import com.intellij.openapi.vcs.changes.LocalChangeListImpl; +import com.intellij.openapi.vcs.changes.*; import com.intellij.util.NullableConsumer; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -61,7 +58,7 @@ public class ChangeListChooser extends DialogWrapper { myPanel.init(); myPanel.setChangeLists(changelists); - myPanel.setDefaultSelection(defaultSelection); + myPanel.setDefaultSelection(changelists.size() <= 1 && onlyOneListInProject() ? null : defaultSelection); setTitle(title); if (defaultName != null) { @@ -71,6 +68,10 @@ public class ChangeListChooser extends DialogWrapper { init(); } + private boolean onlyOneListInProject() { + return ChangeListManager.getInstance(myProject).getChangeListsNumber() <= 1; + } + public JComponent getPreferredFocusedComponent() { return myPanel.getPreferredFocusedComponent(); }