diff --git a/platform/dvcs-api/src/com/intellij/dvcs/push/PushSupport.java b/platform/dvcs-api/src/com/intellij/dvcs/push/PushSupport.java index 17df7df0f402..087004b05bf9 100644 --- a/platform/dvcs-api/src/com/intellij/dvcs/push/PushSupport.java +++ b/platform/dvcs-api/src/com/intellij/dvcs/push/PushSupport.java @@ -23,7 +23,7 @@ import com.intellij.ui.SimpleColoredText; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import java.util.Collection; +import java.util.List; /** * Base class to provide vcs-specific info @@ -50,10 +50,11 @@ public abstract class PushSupport getTargetNames(@NotNull Repo repository); + public abstract List getTargetNames(@NotNull Repo repository); /** * @return current source(branch) for repository diff --git a/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/RepositoryWithBranchPanel.java b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/RepositoryWithBranchPanel.java index 5532568c9cf9..cd93d0653c36 100644 --- a/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/RepositoryWithBranchPanel.java +++ b/platform/dvcs-impl/src/com/intellij/dvcs/push/ui/RepositoryWithBranchPanel.java @@ -36,7 +36,6 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.FocusAdapter; import java.awt.event.FocusEvent; -import java.util.Collection; import java.util.List; public class RepositoryWithBranchPanel extends NonOpaquePanel implements TreeCellRenderer { @@ -51,7 +50,7 @@ public class RepositoryWithBranchPanel extends NonOpaquePanel implements TreeCel private String myOldDestination; public RepositoryWithBranchPanel(Project project, @NotNull String repoName, - @NotNull String sourceName, String targetName, @NotNull Collection targetVariants) { + @NotNull String sourceName, String targetName, @NotNull final List targetVariants) { super(); setLayout(new BorderLayout()); myRepositoryCheckbox = new JBCheckBox(); @@ -68,7 +67,12 @@ public class RepositoryWithBranchPanel extends NonOpaquePanel implements TreeCel myArrowLabel = new JLabel(" -> "); myOldDestination = targetName; TextFieldWithAutoCompletionListProvider provider = - new TextFieldWithAutoCompletion.StringsCompletionProvider(targetVariants, null); + new TextFieldWithAutoCompletion.StringsCompletionProvider(targetVariants, null) { + @Override + public int compare(String item1, String item2) { + return Integer.valueOf(ContainerUtil.indexOf(targetVariants, item1)).compareTo(ContainerUtil.indexOf(targetVariants, item2)); + } + }; myDestBranchTextField = new TextFieldWithAutoCompletion(project, provider, true, targetName) { @Override diff --git a/platform/util/src/com/intellij/util/containers/ContainerUtil.java b/platform/util/src/com/intellij/util/containers/ContainerUtil.java index f4e9981ad219..72285a69d04f 100644 --- a/platform/util/src/com/intellij/util/containers/ContainerUtil.java +++ b/platform/util/src/com/intellij/util/containers/ContainerUtil.java @@ -1430,6 +1430,16 @@ public class ContainerUtil extends ContainerUtilRt { return sorted; } + @NotNull + public static List sorted(@NotNull Collection list) { + return sorted(list, new Comparator() { + @Override + public int compare(T o1, T o2) { + return o1.compareTo(o2); + } + }); + } + public static void sort(@NotNull T[] a, @NotNull Comparator comparator) { int size = a.length; @@ -1928,6 +1938,15 @@ public class ContainerUtil extends ContainerUtilRt { return -1; } + public static int indexOf(@NotNull List list, @NotNull final T object) { + return indexOf(list, new Condition() { + @Override + public boolean value(T t) { + return t.equals(object); + } + }); + } + @NotNull public static Map reverseMap(@NotNull Map map) { final Map result = newHashMap(); diff --git a/plugins/hg4idea/src/org/zmlx/hg4idea/push/HgPushSupport.java b/plugins/hg4idea/src/org/zmlx/hg4idea/push/HgPushSupport.java index 822c16a51547..bb7db85a14f7 100644 --- a/plugins/hg4idea/src/org/zmlx/hg4idea/push/HgPushSupport.java +++ b/plugins/hg4idea/src/org/zmlx/hg4idea/push/HgPushSupport.java @@ -31,7 +31,7 @@ import org.zmlx.hg4idea.HgVcs; import org.zmlx.hg4idea.repo.HgRepository; import org.zmlx.hg4idea.util.HgUtil; -import java.util.Collection; +import java.util.List; public class HgPushSupport extends PushSupport { @@ -71,13 +71,13 @@ public class HgPushSupport extends PushSupport getTargetNames(@NotNull HgRepository repository) { - return ContainerUtil.map(repository.getRepositoryConfig().getPaths(), new Function() { + public List getTargetNames(@NotNull HgRepository repository) { + return ContainerUtil.sorted(ContainerUtil.map(repository.getRepositoryConfig().getPaths(), new Function() { @Override public String fun(String s) { return HgUtil.removePasswordIfNeeded(s); } - }); + })); } @NotNull