From b3d51acfaef080295c24703782eca5bc3f308e8f Mon Sep 17 00:00:00 2001 From: Maxim Shafirov Date: Sat, 5 Mar 2005 16:32:53 +0300 Subject: [PATCH] IDEADEV-449 --- .../ide/util/gotoByName/ChooseByNameBase.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/source/com/intellij/ide/util/gotoByName/ChooseByNameBase.java b/source/com/intellij/ide/util/gotoByName/ChooseByNameBase.java index c6b8e760b356..64bf8efe7056 100644 --- a/source/com/intellij/ide/util/gotoByName/ChooseByNameBase.java +++ b/source/com/intellij/ide/util/gotoByName/ChooseByNameBase.java @@ -73,14 +73,21 @@ public abstract class ChooseByNameBase{ private static final String CHECK_BOX_CARD = "chkbox"; static final int REBUILD_DELAY = 100; - private static class IgnoreCaseComparator implements Comparator { - public int compare(String a, String b) { + private static class MatchesComparator implements Comparator { + private String myOriginalPattern; + + public MatchesComparator(final String originalPattern) { + myOriginalPattern = originalPattern; + } + + public int compare(final String a, final String b) { + if (a.startsWith(myOriginalPattern) && b.startsWith(myOriginalPattern)) return a.compareToIgnoreCase(b); + if (a.startsWith(myOriginalPattern) && !b.startsWith(myOriginalPattern)) return -1; + if (b.startsWith(myOriginalPattern) && a.startsWith(myOriginalPattern)) return 1; return a.compareToIgnoreCase(b); } } - private static final Comparator UCS_COMPARATOR = new IgnoreCaseComparator(); - /** * @param initialText initial text which will be in the lookup text field */ @@ -756,7 +763,7 @@ public abstract class ChooseByNameBase{ if (myCancelled[0]) { throw new ProcessCanceledException(); } - Collections.sort(namesList, UCS_COMPARATOR); + Collections.sort(namesList, new MatchesComparator(pattern)); All: for (int i = 0; i < namesList.size(); i++) {