In-Place search support
authorvrany
Thu, 28 Jul 2011 17:04:26 +0200
changeset 10419 9d417ea98d0f
parent 10418 d2c09f0a39a2
child 10420 ed96d3da2be7
In-Place search support
Tools_BrowserList.st
--- a/Tools_BrowserList.st	Thu Jul 28 17:02:49 2011 +0200
+++ b/Tools_BrowserList.st	Thu Jul 28 17:04:26 2011 +0200
@@ -27,7 +27,7 @@
 !
 
 Object subclass:#SearchHandler
-	instanceVariableNames:'listView searchField searchWindow searchHolder list'
+	instanceVariableNames:'listView listHolder searchField searchWindow searchHolder'
 	classVariableNames:''
 	poolDictionaries:''
 	privateIn:BrowserList
@@ -1473,8 +1473,8 @@
         list ignoreReselect:false.
     ].
 
-    "Unfinished feature"
-    (OperatingSystem getLoginName = 'jv') ifTrue:[
+
+    UserPreferences current useInPlaceSearchInBrowserLists ifTrue:[
         self supportsSearch ifTrue:[
             list notNil ifTrue:[
                 searchHandler := SearchHandler for: list
@@ -1484,7 +1484,7 @@
         ]
     ]
 
-    "Modified (comment): / 27-07-2011 / 22:39:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 28-07-2011 / 09:39:25 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
 
 !BrowserList::SearchHandler class methodsFor:'instance creation'!
@@ -1519,6 +1519,7 @@
         key == #Return ifTrue:[self stopSearch].
         (key == #CursorUp or:[key == #CursorDown]) ifTrue:[
             listView sensor setCtrlDown: false.
+            listView sensor setShiftDown: false.
             listView keyPress:key x:x y:y
         ].
 
@@ -1615,14 +1616,24 @@
 
 restoreList
 
-    listView listHolder value: list
+    | sel |
+    sel := listView selection.
+    sel notNil ifTrue:[
+        sel isInteger ifTrue:[
+            sel := listHolder identityIndexOf: (listView list at: sel)
+        ] ifFalse:[
+            sel := sel collect:[:each|listHolder value identityIndexOf: (listView list at: each)]
+        ].
+    ].
+    listView listHolder: listHolder.
+    listView selection: sel.
 
     "Created: / 27-07-2011 / 22:14:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 saveList
 
-    list := listView listHolder value
+    listHolder := listView listHolder.
 
     "Created: / 27-07-2011 / 22:14:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
@@ -1671,8 +1682,15 @@
 
     | filter filteredList |
     filter := self filter.
-    filteredList := list select:[:each|filter value: each].
-    listView listHolder value: filteredList.
+    filteredList := listHolder value select:[:each|filter value: each].
+    listView listHolder == listHolder ifTrue:[
+        listView listHolder: (ValueHolder with: filteredList)
+    ] ifFalse:[
+        listView listHolder value: filteredList.
+    ].
+    filteredList size == 1 ifTrue:[
+        listView selection: 1
+    ]
 
     "Created: / 27-07-2011 / 22:18:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 ! !
@@ -1680,5 +1698,5 @@
 !BrowserList class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools_BrowserList.st,v 1.34 2011-07-27 21:40:41 vrany Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools_BrowserList.st,v 1.35 2011-07-28 15:04:26 vrany Exp $'
 ! !