Use relaxed search when matching objects in search dialogs.
authorJan Vrany <jan.vrany@fit.cvut.cz>
Fri, 20 Jun 2014 21:22:23 +0100
changeset 348 81ad6b88370c
parent 347 d76d7d8d17a3
child 349 3f2f7a6d4fe6
Use relaxed search when matching objects in search dialogs. When no object matches pattern, try again more relaxed search. This should give better UX (we'll see)
SmallSense__AbstractSearchDialog.st
SmallSense__ClassSearchDialog.st
SmallSense__MethodSearchDialog.st
SmallSense__PackageSearchDialog.st
--- a/SmallSense__AbstractSearchDialog.st	Fri Jun 20 14:25:09 2014 +0100
+++ b/SmallSense__AbstractSearchDialog.st	Fri Jun 20 21:22:23 2014 +0100
@@ -787,9 +787,25 @@
 !
 
 matchingObjectsForPattern:pattern inEnvironment:environment
+    | objects |
+
+    objects := self matchingObjectsForPattern:pattern inEnvironment:environment relax: 1.
+    objects notEmptyOrNil ifTrue:[ ^ objects ].
+
+    objects := self matchingObjectsForPattern:pattern inEnvironment:environment relax: 2.
+    objects notEmptyOrNil ifTrue:[ ^ objects ].
+
+    objects := self matchingObjectsForPattern:pattern inEnvironment:environment relax: 3.
+    ^ objects
+
+    "Created: / 28-04-2014 / 23:20:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 20-06-2014 / 21:19:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+matchingObjectsForPattern:pattern inEnvironment:environment relax: level
     self subclassResponsibility
 
-    "Created: / 28-04-2014 / 23:20:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 20-06-2014 / 21:16:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !AbstractSearchDialog class methodsFor:'documentation'!
--- a/SmallSense__ClassSearchDialog.st	Fri Jun 20 14:25:09 2014 +0100
+++ b/SmallSense__ClassSearchDialog.st	Fri Jun 20 21:22:23 2014 +0100
@@ -246,7 +246,7 @@
     "Created: / 30-04-2014 / 09:50:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-matchingObjectsForPattern:pattern inEnvironment:environment 
+matchingObjectsForPattern:pattern inEnvironment:environment relax: level 
     | matching matchFullyQualifiedClassName |
 
     matching := OrderedCollection new.
@@ -256,14 +256,14 @@
         matchFullyQualifiedClassName ifFalse:[
             environment 
                 allClassesDo:[:cls | 
-                    ((filter isNil or:[filter value: cls]) and:[(pattern match:cls nameWithoutPrefix)]) ifTrue:[
+                    ((filter isNil or:[filter value: cls]) and:[(pattern match:cls nameWithoutPrefix relax: level)]) ifTrue:[
                         matching add:cls.
                     ].
                 ].
         ] ifTrue:[
             environment 
                 allClassesDo:[:cls | 
-                    ((filter isNil or:[filter value: cls]) and:[(pattern match:cls displayString)]) ifTrue:[
+                    ((filter isNil or:[filter value: cls]) and:[(pattern match:cls displayString relax: level)]) ifTrue:[
                         matching add:cls
                     ]
                 ].
@@ -272,7 +272,6 @@
 
     ^ matching
 
-    "Created: / 28-04-2014 / 23:20:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 05-05-2014 / 23:47:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 20-06-2014 / 21:17:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
--- a/SmallSense__MethodSearchDialog.st	Fri Jun 20 14:25:09 2014 +0100
+++ b/SmallSense__MethodSearchDialog.st	Fri Jun 20 21:22:23 2014 +0100
@@ -123,7 +123,7 @@
     "Modified: / 20-06-2014 / 14:21:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-matchingObjectsForPattern:pattern inEnvironment:environment 
+matchingObjectsForPattern:pattern inEnvironment:environment relax: level 
     | matching |
 
     matching := OrderedCollection new.
@@ -134,7 +134,7 @@
 
                 name := mthd selector.
                 mthd isJavaMethod ifTrue:[ name := name upTo: $( ].
-                ((filter isNil or:[filter value: mthd]) and:[(pattern match:name)]) ifTrue:[
+                ((filter isNil or:[filter value: mthd]) and:[(pattern match:name relax: level)]) ifTrue:[
                     matching add:mthd.
                 ].
             ].
@@ -142,7 +142,6 @@
 
     ^ matching
 
-    "Created: / 28-04-2014 / 23:20:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 06-05-2014 / 00:34:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 20-06-2014 / 21:17:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
--- a/SmallSense__PackageSearchDialog.st	Fri Jun 20 14:25:09 2014 +0100
+++ b/SmallSense__PackageSearchDialog.st	Fri Jun 20 21:22:23 2014 +0100
@@ -28,7 +28,7 @@
     "Modified: / 19-06-2014 / 12:04:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
-matchingObjectsForPattern:pattern inEnvironment:environment
+matchingObjectsForPattern:pattern inEnvironment:environment relax: level
     | packages |
 
     packages := Set new.
@@ -38,7 +38,7 @@
         pkg := cls package.
         ((pkg notNil and:[ pkg ~~ PackageId noProjectID and:[ pkg ~= '__temporary__'] ])
             and:[(filter isNil or:[ filter value: pkg ])
-            and:[pattern isNil or:[pattern match: pkg]]]) ifTrue:[ packages add: pkg ].
+            and:[pattern isNil or:[pattern match: pkg relax: level]]]) ifTrue:[ packages add: pkg ].
     ].
     environment allMethodsDo:[ :mth |
         | pkg |
@@ -46,11 +46,10 @@
         pkg := mth package.
         ((pkg notNil and:[ pkg ~~ PackageId noProjectID ])
             and:[(filter isNil or:[ filter value: pkg ])
-            and:[pattern isNil or:[pattern match: pkg]]]) ifTrue:[ packages add: pkg ].
+            and:[pattern isNil or:[pattern match: pkg relax: level]]]) ifTrue:[ packages add: pkg ].
     ].
     ^ packages asArray.
 
-    "Created: / 05-05-2014 / 23:53:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 19-06-2014 / 12:06:23 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Created: / 20-06-2014 / 21:17:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !