Bug 532621 - Open Resource result order changes based on case of search
- Bad change in Change 111162 removed the changes made in
FilteredResourcesSelectionDialog to actually show perfect matches first
Change-Id: I487a4d9bd1b5f9948471e01315c07e35fcaf3b4d
Signed-off-by: Lucas Bullen <lbullen@redhat.com>
diff --git a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/FilteredResourcesSelectionDialog.java b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/FilteredResourcesSelectionDialog.java
index 93b5814..afc37ec 100644
--- a/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/FilteredResourcesSelectionDialog.java
+++ b/bundles/org.eclipse.ui.ide/extensions/org/eclipse/ui/dialogs/FilteredResourcesSelectionDialog.java
@@ -11,6 +11,7 @@
* Anton Leherbauer (Wind River Systems, Inc.) - Bug 415099 Terminating with "<" or " " (space) does not work for extensions
* Mickael Istria (Red Hat Inc.) - Bug 460749: filter resources with same location
* Lucas Bullen (Red Hat Inc.) - Bug 520250/520251 highlight matches by CamelCase and pattern
+ * - Bug 525974: Open Resource sorting doesn't show perfect match first
*******************************************************************************/
package org.eclipse.ui.dialogs;
@@ -116,6 +117,7 @@
private String title;
+ private ItemsFilter latestFilter;
/**
* The base outer-container which will be used to search for resources. This
* is the root of the tree that spans the search space. Often, this is the
@@ -408,7 +410,8 @@
@Override
protected ItemsFilter createFilter() {
- return new ResourceFilter(container, searchContainer, isDerived, typeMask);
+ latestFilter = new ResourceFilter(container, searchContainer, isDerived, typeMask);
+ return latestFilter;
}
@Override
@@ -430,6 +433,21 @@
int s2Dot = s2.lastIndexOf('.');
String n1 = s1Dot == -1 ? s1 : s1.substring(0, s1Dot);
String n2 = s2Dot == -1 ? s2 : s2.substring(0, s2Dot);
+
+ if (latestFilter != null) {
+ String pattern = latestFilter.getPattern();
+ int patternDot = pattern.lastIndexOf('.');
+ String patternNoExtension = patternDot == -1 ? pattern : pattern.substring(0, patternDot);
+ boolean m1 = patternNoExtension.equals(n1);
+ boolean m2 = patternNoExtension.equals(n2);
+ if (m1 && m2)
+ return 0;
+ if (m1)
+ return -1;
+ if (m2)
+ return 1;
+ }
+
int comparability = collator.compare(n1, n2);
if (comparability != 0)
return comparability;