"
COPYRIGHT (c) 2008 by eXept Software AG
All Rights Reserved
This software is furnished under a license and may be used
only in accordance with the terms of that license and with the
inclusion of the above copyright notice. This software may not
be provided or otherwise made available to, or used by, any
other person. No title to or ownership of the software is
hereby transferred.
"
"{ Package: 'stx:libtool' }"
"{ NameSpace: Tools }"
StringSearchTool subclass:#StringSearchToolForTextView
instanceVariableNames:'textView matchHolder'
classVariableNames:''
poolDictionaries:''
category:'Interface-Tools'
!
!StringSearchToolForTextView class methodsFor:'documentation'!
copyright
"
COPYRIGHT (c) 2008 by eXept Software AG
All Rights Reserved
This software is furnished under a license and may be used
only in accordance with the terms of that license and with the
inclusion of the above copyright notice. This software may not
be provided or otherwise made available to, or used by, any
other person. No title to or ownership of the software is
hereby transferred.
"
! !
!StringSearchToolForTextView class methodsFor:'interface specs'!
windowSpec
"This resource specification was automatically generated
by the UIPainter of ST/X."
"Do not manually edit this!! If it is corrupted,
the UIPainter may not be able to read the specification."
"
UIPainter new openOnClass:Tools::StringSearchToolForTextView andSelector:#windowSpec
Tools::StringSearchToolForTextView new openInterface:#windowSpec
Tools::StringSearchToolForTextView open
"
<resource: #canvas>
^
#(FullSpec
name: windowSpec
window:
(WindowSpec
label: 'Tools::StringSearchTool'
name: 'Tools::StringSearchTool'
min: (Point 10 10)
max: (Point 1024 768)
bounds: (Rectangle 0 0 883 27)
)
component:
(SpecCollection
collection: (
(ViewSpec
name: 'SearchBox'
layout: (LayoutFrame 0 0 0 0 0 1 0 1)
level: -1
component:
(SpecCollection
collection: (
(ActionButtonSpec
label: 'closeSearchBarIcon'
name: 'hideSearchBarButton'
layout: (LayoutFrame 1 0 2 0 22 0 23 0)
hasCharacterOrientedLabel: false
translateLabel: true
model: hideSearchBar
)
(LabelSpec
label: 'Search:'
name: 'SearchLabel'
layout: (LayoutFrame 23 0 1 0 71 0 23 0)
translateLabel: true
adjust: right
)
(InputFieldSpec
name: 'SearchEntryField'
layout: (LayoutFrame 72 0 1 0 253 0 23 0)
model: searchTextHolder
immediateAccept: true
acceptOnReturn: true
acceptOnTab: true
acceptOnLostFocus: true
modifiedChannel: searchTextModifiedHolder
acceptOnPointerLeave: false
postBuildCallback: postBuildSearchTextView:
)
(ActionButtonSpec
label: 'searchNextIcon'
name: 'SearchNextButton'
layout: (LayoutFrame 258 0 2 0 279 0 23 0)
hasCharacterOrientedLabel: false
translateLabel: true
model: searchNextTextButtonPressed
)
(ActionButtonSpec
label: 'searchPreviousIcon'
name: 'searchPreviousButton'
layout: (LayoutFrame 286 0 2 0 307 0 23 0)
hasCharacterOrientedLabel: false
translateLabel: true
model: searchPreviousTextButtonPressed
)
(CheckBoxSpec
label: 'Ignore case'
name: 'IgnoreCaseCheckBox'
layout: (LayoutFrame 312 0 1 0 424 0 23 0)
model: ignoreCaseHolder
translateLabel: true
)
(CheckBoxSpec
label: 'Match'
name: 'MatchCheckBox'
layout: (LayoutFrame 424 0 1 0 508 0 23 0)
model: matchHolder
translateLabel: true
)
(CheckBoxSpec
label: 'Restart'
name: 'RestartCheckBox'
layout: (LayoutFrame 509 0 1 0 593 0 23 0)
model: restartHolder
translateLabel: true
)
(LabelSpec
label: 'SearchBarImageInfoLabel'
name: 'SearchBarImageInfoLabel'
layout: (LayoutFrame 598 0 1 0 622 0 23 0)
hasCharacterOrientedLabel: false
translateLabel: true
labelChannel: searchBarImageInfoLabelHolder
)
(LabelSpec
label: 'SearchBarInfoLabel'
name: 'SearchBarInfoLabel'
layout: (LayoutFrame 633 0 1 0 882 0 23 0)
translateLabel: true
labelChannel: searchBarInfoLabelHolder
adjust: left
)
)
)
)
)
)
)
!
windowSpec_old
"This resource specification was automatically generated
by the UIPainter of ST/X."
"Do not manually edit this!! If it is corrupted,
the UIPainter may not be able to read the specification."
"
UIPainter new openOnClass:Tools::StringSearchToolForTextView andSelector:#windowSpec
Tools::StringSearchToolForTextView new openInterface:#windowSpec
Tools::StringSearchToolForTextView open
"
<resource: #canvas>
^
#(FullSpec
name: windowSpec
window:
(WindowSpec
label: 'Tools::StringSearchTool'
name: 'Tools::StringSearchTool'
min: (Point 10 10)
max: (Point 1024 768)
bounds: (Rectangle 0 0 883 27)
)
component:
(SpecCollection
collection: (
(ViewSpec
name: 'SearchBox'
layout: (LayoutFrame 0 0 0 0 0 1 0 1)
level: -1
component:
(SpecCollection
collection: (
(ActionButtonSpec
label: 'closeSearchBarIcon'
name: 'hideSearchBarButton'
layout: (LayoutFrame 1 0 2 0 22 0 23 0)
hasCharacterOrientedLabel: false
translateLabel: true
model: hideSearchBar
)
(LabelSpec
label: 'Search:'
name: 'SearchLabel'
layout: (LayoutFrame 23 0 1 0 71 0 23 0)
translateLabel: true
adjust: right
)
(InputFieldSpec
name: 'SearchEntryField'
layout: (LayoutFrame 72 0 1 0 253 0 23 0)
model: searchTextHolder
immediateAccept: true
acceptOnReturn: true
acceptOnTab: true
acceptOnLostFocus: true
modifiedChannel: searchTextModifiedHolder
acceptOnPointerLeave: false
postBuildCallback: postBuildSearchTextView:
)
(ActionButtonSpec
label: 'searchNextIcon'
name: 'SearchNextButton'
layout: (LayoutFrame 258 0 2 0 279 0 23 0)
hasCharacterOrientedLabel: false
translateLabel: true
model: searchNextTextButtonPressed
)
(ActionButtonSpec
label: 'searchPreviousIcon'
name: 'searchPreviousButton'
layout: (LayoutFrame 286 0 2 0 307 0 23 0)
hasCharacterOrientedLabel: false
translateLabel: true
model: searchPreviousTextButtonPressed
)
(CheckBoxSpec
label: 'Ignore case'
name: 'IgnoreCaseCheckBox'
layout: (LayoutFrame 312 0 1 0 424 0 23 0)
model: ignoreCaseHolder
translateLabel: true
)
(CheckBoxSpec
label: 'Match'
name: 'MatchCheckBox'
layout: (LayoutFrame 424 0 1 0 508 0 23 0)
model: matchHolder
translateLabel: true
)
(CheckBoxSpec
label: 'Restart'
name: 'RestartCheckBox'
layout: (LayoutFrame 509 0 1 0 593 0 23 0)
model: restartHolder
translateLabel: true
)
(LabelSpec
label: 'SearchBarImageInfoLabel'
name: 'SearchBarImageInfoLabel'
layout: (LayoutFrame 598 0 1 0 622 0 23 0)
hasCharacterOrientedLabel: false
translateLabel: true
labelChannel: searchBarImageInfoLabelHolder
)
(LabelSpec
label: 'SearchBarInfoLabel'
name: 'SearchBarInfoLabel'
layout: (LayoutFrame 633 0 1 0 882 0 23 0)
translateLabel: true
labelChannel: searchBarInfoLabelHolder
adjust: left
)
)
)
)
)
)
)
! !
!StringSearchToolForTextView methodsFor:'accessing'!
textView
^ textView
!
textView:something
textView := something.
! !
!StringSearchToolForTextView methodsFor:'aspects'!
matchCheckboxVisible
^ true
!
matchHolder
matchHolder isNil ifTrue:[
matchHolder := false asValue.
"/ if your app needs to be notified of changes, uncomment one of the lines below:
"/ matchHolder addDependent:self.
matchHolder onChangeSend:#matchHolderChanged to:self.
].
^ matchHolder.
"Created: / 16-06-2007 / 06:45:04 / Administrador"
"Modified: / 16-06-2007 / 19:32:15 / Administrador"
! !
!StringSearchToolForTextView methodsFor:'change & update'!
matchHolderChanged
self searchNextTextIncludingCurrentSelection: true.
self setFocusToSearchTextView.
! !
!StringSearchToolForTextView methodsFor:'initialization & release'!
postBuildSearchTextView: anEditFieldView
super postBuildSearchTextView: anEditFieldView.
anEditFieldView crAction: self crAction.
! !
!StringSearchToolForTextView methodsFor:'public'!
crAction
^ [self returnFocusToTextView]
!
escapePressed
self returnFocusToTextView.
super escapePressed.
!
returnFocusToTextView
textView takeFocus
! !
!StringSearchToolForTextView methodsFor:'searching'!
hideSearchBar
masterApplication isNil ifTrue:[^ self].
masterApplication hideSearchBar.
self returnFocusToTextView.
!
searchNextTextFromBeginning
|searchText ignoreCase match absentBlock|
searchText := searchTextView contents.
searchText isEmptyOrNil ifTrue:[^self].
self textView isNil ifTrue:[^ self].
ignoreCase := self ignoreCaseHolder value.
match := self matchHolder value.
absentBlock := [self searchTextNotFound.].
self textView
searchFwd:searchText
ignoreCase:ignoreCase
match: match
startingAtLine:1
col:0
ifAbsent:absentBlock
!
searchNextTextIncludingCurrentSelection: includeCurrentSelection
|searchText ignoreCase match absentBlock startCol startLine|
self searchTextStarted.
searchText := searchTextView contents.
searchText isEmptyOrNil ifTrue:[^self].
self textView isNil ifTrue:[^ self].
ignoreCase := self ignoreCaseHolder value.
match := self matchHolder value.
absentBlock := [self searchNextTextReachEnd].
(self textView hasSelection and:[includeCurrentSelection])
ifTrue:[
startCol := ((self textView selectionStartCol ? 1) - 2) max: 0.
startLine := (self textView selectionStartLine ? 1).
self textView searchFwd:searchText ignoreCase:ignoreCase match: match startingAtLine:startLine col:startCol ifAbsent:absentBlock.
] ifFalse:[
self textView searchFwd:searchText ignoreCase:ignoreCase match: match ifAbsent:absentBlock
].
!
searchPreviousText
|searchText ignoreCase absentBlock|
self searchTextStarted.
searchText := searchTextView contents.
searchText isEmptyOrNil ifTrue:[^self].
ignoreCase := self ignoreCaseHolder value.
self textView isNil ifTrue:[^ self].
absentBlock := [self searchPreviousTextReachBeginning].
self textView searchBwd:searchText ignoreCase:ignoreCase ifAbsent:absentBlock.
!
searchPreviousTextFromEnd
|searchText ignoreCase absentBlock startLine startCol|
searchText := searchTextView contents.
searchText isEmptyOrNil ifTrue:[^self].
ignoreCase := self ignoreCaseHolder value.
self textView isNil ifTrue:[^ self].
absentBlock := [self searchTextNotFound.].
startLine := self textView numberOfLines + 1.
startCol := 1.
self textView
searchBwd:searchText
ignoreCase:ignoreCase
startingAtLine:startLine
col:startCol
ifAbsent:absentBlock
! !
!StringSearchToolForTextView class methodsFor:'documentation'!
version
^ '$Header: /cvs/stx/stx/libtool/Tools__StringSearchToolForTextView.st,v 1.9 2008-09-22 23:29:40 cg Exp $'
! !