inplace search improved
authorvrany
Tue, 18 Oct 2011 21:43:54 +0200
changeset 10835 9bb85dddf432
parent 10834 b25dd8ee319b
child 10836 950f9eb3ef7b
inplace search improved
Tools_BrowserList.st
--- a/Tools_BrowserList.st	Tue Oct 18 19:18:25 2011 +0200
+++ b/Tools_BrowserList.st	Tue Oct 18 21:43:54 2011 +0200
@@ -1501,7 +1501,22 @@
 
 keyPress:key x:x y:y view:aView
 
+    | v |
+
     aView == listView ifTrue:[
+
+        "Forward the event to the view under pointer.
+         Therefore, the seach is started only iff the
+         pointer points to the list. Based on experience,
+         this improves usability because: does not require 
+         to click in the list to focus it (which may change 
+         the selection)"
+        (v := aView windowGroup pointerView) ~~ aView ifTrue:[
+            aView windowGroup focusView: v.
+            v sensor keyPress:key x:x y:y view:v.
+            ^self.
+        ].
+
         searchWindow isNil ifTrue:[
             key isCharacter ifTrue:[
                 searchHolder setValue: key asString.
@@ -1596,8 +1611,11 @@
 
 filter
 
-    ^[:entry|
-    entry asString startsWith: searchHolder value
+    | pattern |
+    pattern := StringPattern fromString: searchHolder value.
+
+    ^[:entry :relax|
+    pattern match: entry asString trimSeparators relax: relax
     ]
 
     "Created: / 27-07-2011 / 22:18:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
@@ -1679,7 +1697,15 @@
 
     | filter filteredList |
     filter := self filter.
-    filteredList := listHolder value select:[:each|filter value: each].
+
+    filteredList := listHolder value select:[:each|filter value: each value: 1].
+    filteredList isEmpty ifTrue:[
+    filteredList := listHolder value select:[:each|filter value: each value: 2].
+    filteredList isEmpty ifTrue:[
+    filteredList := listHolder value select:[:each|filter value: each value: 3].
+    ]].
+
+
     listView listHolder == listHolder ifTrue:[
         listView listHolder: (ValueHolder with: filteredList)
     ] ifFalse:[
@@ -1731,5 +1757,5 @@
 !BrowserList class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools_BrowserList.st,v 1.36 2011-08-02 08:24:50 vrany Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools_BrowserList.st,v 1.37 2011-10-18 19:43:54 vrany Exp $'
 ! !