--- a/Tools__StringSearchTool.st Wed Apr 23 12:27:32 2008 +0200
+++ b/Tools__StringSearchTool.st Wed Apr 23 12:29:09 2008 +0200
@@ -3,12 +3,13 @@
"{ NameSpace: Tools }"
ApplicationModel subclass:#StringSearchTool
- instanceVariableNames:'searchTextHolder searchTextView searchBarImageInfoLabelHolder
- searchBarInfoLabelHolder searchTextModifiedHolder
- ignoreCaseHolder closeBlock searchNextBlock searchPreviousBlock'
- classVariableNames:''
- poolDictionaries:''
- category:'Interface-Tools'
+ instanceVariableNames:'searchTextHolder searchTextView searchBarImageInfoLabelHolder
+ searchBarInfoLabelHolder searchTextModifiedHolder
+ ignoreCaseHolder closeBlock searchNextBlock searchPreviousBlock
+ restartHolder'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'Interface-Tools'
!
!StringSearchTool class methodsFor:'documentation'!
@@ -305,16 +306,14 @@
name: 'SearchNextButton'
hasCharacterOrientedLabel: false
translateLabel: true
- model: searchNextText
- extent: (Point 21 21)
+ model: searchNextTextButtonPressed
)
(ActionButtonSpec
label: 'searchPreviousIcon'
name: 'searchPreviousButton'
hasCharacterOrientedLabel: false
translateLabel: true
- model: searchPreviousText
- extent: (Point 21 21)
+ model: searchPreviousTextButtonPressed
)
(CheckBoxSpec
label: 'Ignore case'
@@ -370,7 +369,11 @@
initialSearchString: aString
self searchTextHolder value: aString.
- self searchNextTextIncludingCurrentSelection: true.
+!
+
+restartSearch
+
+ ^ self restartHolder value
!
searchNextBlock
@@ -406,8 +409,15 @@
"Modified: / 16-06-2007 / 19:32:15 / Administrador"
!
-matchCheckboxVisible
- ^ false
+restartHolder
+
+ restartHolder isNil ifTrue:[
+ restartHolder := false asValue.
+"/ if your app needs to be notified of changes, uncomment one of the lines below:
+"/ restartHolder addDependent:self.
+ restartHolder onChangeSend:#restartHolderChanged to:self.
+ ].
+ ^ restartHolder.
!
searchBarImageInfoLabelHolder
@@ -459,10 +469,16 @@
!
processEvent:anEvent
-
searchTextView hasFocus ifFalse:[^ false].
anEvent isKeyPressEvent ifTrue:[
+
+ Transcript showCR: anEvent key printString.
+"/ anEvent key == #Find ifTrue:[
+"/ self halt.
+"/ self searchNextText.
+"/ ^ true
+"/ ].
anEvent key == #FindNext ifTrue:[
self searchNextText.
^ true
@@ -475,10 +491,23 @@
^ false
!
+restartHolderChanged
+
+ self setFocusToSearchTextView.
+!
+
searchTextModifiedHolderChanged
+ |previousRestart|
+
+ "Always restart when looking for a typed string"
+ previousRestart := self restartSearch.
+ self restartHolder setValue: true.
+
self searchNextTextIncludingCurrentSelection: true.
self searchTextModifiedHolder setValue: false.
+ self restartHolder setValue: previousRestart.
+
"/Transcript showCR: 'searchTextModifiedHolderChanged: ',(self searchTextHolder value ? '').
"/Transcript showCR: 'searchTextView contents: ',(searchTextView contents ? '').
@@ -515,9 +544,16 @@
!StringSearchTool methodsFor:'private'!
+searchReachEndOrBeginningIcon
+
+ ^ self restartSearch
+ ifTrue:[self restartSearchBarIcon.]
+ ifFalse:[self warningSearchBarIcon.].
+!
+
searchTextRestarted: message
- self searchBarImageInfoLabelHolder value: self restartSearchBarIcon.
+ self searchBarImageInfoLabelHolder value: self searchReachEndOrBeginningIcon.
self searchBarInfoLabelHolder value: message.
!
@@ -546,18 +582,29 @@
searchNextTextReachEnd
|message|
- message := 'End of list reached, starting from the beginning'.
+ message := 'End of list reached'.
self searchTextRestarted: message.
- self searchNextTextFromBeginning.
+ Smalltalk beep.
- "Created: / 16-06-2007 / 11:00:59 / Administrador"
+ self restartSearch ifTrue:[
+ message := message, ', starting from the beginning'.
+ self searchTextRestarted: message.
+ self searchNextTextFromBeginning.
+ ].
!
searchPreviousTextReachBeginning
|message|
- message := 'Beginning of list reached, starting from the end'.
+
+ message := 'Beginning of list reached'.
self searchTextRestarted: message.
- self searchPreviousTextFromEnd.
+ Smalltalk beep.
+
+ self restartSearch ifTrue:[
+ message := message, ', starting from the end'.
+ self searchTextRestarted: message.
+ self searchPreviousTextFromEnd
+ ].
!
searchTextNotFound
@@ -596,6 +643,12 @@
searchNextText
self searchNextTextIncludingCurrentSelection: false.
+"/ self setFocusToSearchTextView.
+!
+
+searchNextTextButtonPressed
+
+ self searchNextText.
self setFocusToSearchTextView.
!
@@ -636,7 +689,7 @@
self searchTextStarted.
searchText := searchTextView contents.
- self setFocusToSearchTextView.
+"/ self setFocusToSearchTextView.
searchText isEmptyOrNil ifTrue:[^self].
ignoreCase := self ignoreCaseHolder value.
searchPreviousBlock isNil ifTrue:[^ self].
@@ -647,6 +700,12 @@
"/ ignoreCase: ignoreCase
!
+searchPreviousTextButtonPressed
+
+ self searchPreviousText.
+ self setFocusToSearchTextView.
+!
+
searchPreviousTextFromEnd
|searchText ignoreCase|
@@ -665,5 +724,5 @@
!StringSearchTool class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libtool/Tools__StringSearchTool.st,v 1.4 2008-04-21 16:04:57 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libtool/Tools__StringSearchTool.st,v 1.5 2008-04-23 10:29:09 fm Exp $'
! !