Tools__StringSearchToolForTextView.st
author Jan Vrany <jan.vrany@labware.com>
Sat, 30 Sep 2023 22:55:25 +0100
branchjv
changeset 19648 5df52d354504
parent 15566 184cea584be5
permissions -rw-r--r--
`TestRunner2`: do not use `#keysAndValuesCollect:` ...as semantics differ among smalltalk dialects. This is normally not a problem until we use code that adds this as a "compatibility" method. So to stay on a safe side, avoid using this method.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8276
43b76fabaa23 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8085
diff changeset
     1
"
43b76fabaa23 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8085
diff changeset
     2
 COPYRIGHT (c) 2008 by eXept Software AG
43b76fabaa23 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8085
diff changeset
     3
              All Rights Reserved
43b76fabaa23 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8085
diff changeset
     4
43b76fabaa23 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8085
diff changeset
     5
 This software is furnished under a license and may be used
43b76fabaa23 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8085
diff changeset
     6
 only in accordance with the terms of that license and with the
43b76fabaa23 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8085
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
43b76fabaa23 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8085
diff changeset
     8
 be provided or otherwise made available to, or used by, any
43b76fabaa23 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8085
diff changeset
     9
 other person.  No title to or ownership of the software is
43b76fabaa23 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8085
diff changeset
    10
 hereby transferred.
43b76fabaa23 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8085
diff changeset
    11
"
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
    12
"{ Package: 'stx:libtool' }"
3845b02f8475 initial checkin
fm
parents:
diff changeset
    13
3845b02f8475 initial checkin
fm
parents:
diff changeset
    14
"{ NameSpace: Tools }"
3845b02f8475 initial checkin
fm
parents:
diff changeset
    15
3845b02f8475 initial checkin
fm
parents:
diff changeset
    16
StringSearchTool subclass:#StringSearchToolForTextView
8079
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    17
	instanceVariableNames:'textView matchHolder'
8915
a46603e1539b *** empty log message ***
fm
parents: 8910
diff changeset
    18
	classVariableNames:'LastMatch'
8079
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    19
	poolDictionaries:''
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    20
	category:'Interface-Tools'
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
    21
!
3845b02f8475 initial checkin
fm
parents:
diff changeset
    22
8276
43b76fabaa23 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8085
diff changeset
    23
!StringSearchToolForTextView class methodsFor:'documentation'!
43b76fabaa23 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8085
diff changeset
    24
43b76fabaa23 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8085
diff changeset
    25
copyright
43b76fabaa23 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8085
diff changeset
    26
"
43b76fabaa23 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8085
diff changeset
    27
 COPYRIGHT (c) 2008 by eXept Software AG
43b76fabaa23 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8085
diff changeset
    28
              All Rights Reserved
43b76fabaa23 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8085
diff changeset
    29
43b76fabaa23 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8085
diff changeset
    30
 This software is furnished under a license and may be used
43b76fabaa23 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8085
diff changeset
    31
 only in accordance with the terms of that license and with the
43b76fabaa23 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8085
diff changeset
    32
 inclusion of the above copyright notice.   This software may not
43b76fabaa23 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8085
diff changeset
    33
 be provided or otherwise made available to, or used by, any
43b76fabaa23 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8085
diff changeset
    34
 other person.  No title to or ownership of the software is
43b76fabaa23 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8085
diff changeset
    35
 hereby transferred.
43b76fabaa23 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8085
diff changeset
    36
"
43b76fabaa23 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 8085
diff changeset
    37
! !
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
    38
8915
a46603e1539b *** empty log message ***
fm
parents: 8910
diff changeset
    39
!StringSearchToolForTextView class methodsFor:'accessing'!
a46603e1539b *** empty log message ***
fm
parents: 8910
diff changeset
    40
a46603e1539b *** empty log message ***
fm
parents: 8910
diff changeset
    41
lastMatch
a46603e1539b *** empty log message ***
fm
parents: 8910
diff changeset
    42
a46603e1539b *** empty log message ***
fm
parents: 8910
diff changeset
    43
    ^ LastMatch ? false
a46603e1539b *** empty log message ***
fm
parents: 8910
diff changeset
    44
!
a46603e1539b *** empty log message ***
fm
parents: 8910
diff changeset
    45
a46603e1539b *** empty log message ***
fm
parents: 8910
diff changeset
    46
lastMatch: aBoolean
a46603e1539b *** empty log message ***
fm
parents: 8910
diff changeset
    47
a46603e1539b *** empty log message ***
fm
parents: 8910
diff changeset
    48
    LastMatch := aBoolean
a46603e1539b *** empty log message ***
fm
parents: 8910
diff changeset
    49
! !
a46603e1539b *** empty log message ***
fm
parents: 8910
diff changeset
    50
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
    51
!StringSearchToolForTextView class methodsFor:'interface specs'!
3845b02f8475 initial checkin
fm
parents:
diff changeset
    52
8079
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    53
windowSpec
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    54
    "This resource specification was automatically generated
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    55
     by the UIPainter of ST/X."
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    56
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    57
    "Do not manually edit this!! If it is corrupted,
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    58
     the UIPainter may not be able to read the specification."
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    59
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    60
    "
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    61
     UIPainter new openOnClass:Tools::StringSearchToolForTextView andSelector:#windowSpec
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    62
     Tools::StringSearchToolForTextView new openInterface:#windowSpec
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    63
     Tools::StringSearchToolForTextView open
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    64
    "
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    65
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    66
    <resource: #canvas>
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    67
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    68
    ^ 
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    69
     #(FullSpec
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    70
        name: windowSpec
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    71
        window: 
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    72
       (WindowSpec
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    73
          label: 'Tools::StringSearchTool'
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    74
          name: 'Tools::StringSearchTool'
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    75
          min: (Point 10 10)
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    76
          bounds: (Rectangle 0 0 883 27)
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    77
        )
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    78
        component: 
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    79
       (SpecCollection
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    80
          collection: (
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    81
           (ViewSpec
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    82
              name: 'SearchBox'
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    83
              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    84
              level: -1
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    85
              component: 
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    86
             (SpecCollection
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    87
                collection: (
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    88
                 (ActionButtonSpec
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    89
                    label: 'closeSearchBarIcon'
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    90
                    name: 'hideSearchBarButton'
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    91
                    layout: (LayoutFrame 1 0 2 0 22 0 23 0)
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    92
                    hasCharacterOrientedLabel: false
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    93
                    translateLabel: true
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    94
                    model: hideSearchBar
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    95
                  )
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    96
                 (LabelSpec
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    97
                    label: 'Search:'
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    98
                    name: 'SearchLabel'
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
    99
                    layout: (LayoutFrame 23 0 1 0 71 0 23 0)
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   100
                    translateLabel: true
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   101
                    adjust: right
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   102
                  )
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   103
                 (InputFieldSpec
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   104
                    name: 'SearchEntryField'
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   105
                    layout: (LayoutFrame 72 0 1 0 253 0 23 0)
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   106
                    model: searchTextHolder
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   107
                    immediateAccept: true
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   108
                    acceptOnReturn: true
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   109
                    acceptOnTab: true
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   110
                    acceptOnLostFocus: true
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   111
                    modifiedChannel: searchTextModifiedHolder
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   112
                    acceptOnPointerLeave: false
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   113
                    postBuildCallback: postBuildSearchTextView:
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   114
                  )
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   115
                 (ActionButtonSpec
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   116
                    label: 'searchNextIcon'
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   117
                    name: 'SearchNextButton'
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   118
                    layout: (LayoutFrame 258 0 2 0 279 0 23 0)
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   119
                    hasCharacterOrientedLabel: false
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   120
                    translateLabel: true
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   121
                    model: searchNextTextButtonPressed
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   122
                  )
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   123
                 (ActionButtonSpec
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   124
                    label: 'searchPreviousIcon'
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   125
                    name: 'searchPreviousButton'
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   126
                    layout: (LayoutFrame 286 0 2 0 307 0 23 0)
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   127
                    hasCharacterOrientedLabel: false
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   128
                    translateLabel: true
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   129
                    model: searchPreviousTextButtonPressed
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   130
                  )
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   131
                 (CheckBoxSpec
8925
b8b7037e19fd case toggle reversed
Claus Gittinger <cg@exept.de>
parents: 8915
diff changeset
   132
                    label: 'Case'
b8b7037e19fd case toggle reversed
Claus Gittinger <cg@exept.de>
parents: 8915
diff changeset
   133
                    name: 'DoNotIgnoreCaseCheckBox'
8956
c69ca30a3fa7 changed:6 methods
fm
parents: 8925
diff changeset
   134
                    layout: (LayoutFrame 312 0 1 0 396 0 23 0)
c69ca30a3fa7 changed:6 methods
fm
parents: 8925
diff changeset
   135
                    model: matchCaseHolder
8079
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   136
                    translateLabel: true
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   137
                  )
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   138
                 (CheckBoxSpec
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   139
                    label: 'Match'
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   140
                    name: 'MatchCheckBox'
8956
c69ca30a3fa7 changed:6 methods
fm
parents: 8925
diff changeset
   141
                    layout: (LayoutFrame 396 0 1 0 480 0 23 0)
8079
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   142
                    model: matchHolder
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   143
                    translateLabel: true
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   144
                  )
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   145
                 (CheckBoxSpec
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   146
                    label: 'Restart'
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   147
                    name: 'RestartCheckBox'
8956
c69ca30a3fa7 changed:6 methods
fm
parents: 8925
diff changeset
   148
                    layout: (LayoutFrame 480 0 1 0 564 0 23 0)
8079
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   149
                    model: restartHolder
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   150
                    translateLabel: true
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   151
                  )
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   152
                 (LabelSpec
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   153
                    label: 'SearchBarImageInfoLabel'
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   154
                    name: 'SearchBarImageInfoLabel'
8956
c69ca30a3fa7 changed:6 methods
fm
parents: 8925
diff changeset
   155
                    layout: (LayoutFrame 564 0 1 0 588 0 23 0)
8079
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   156
                    hasCharacterOrientedLabel: false
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   157
                    translateLabel: true
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   158
                    labelChannel: searchBarImageInfoLabelHolder
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   159
                  )
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   160
                 (LabelSpec
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   161
                    label: 'SearchBarInfoLabel'
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   162
                    name: 'SearchBarInfoLabel'
8956
c69ca30a3fa7 changed:6 methods
fm
parents: 8925
diff changeset
   163
                    layout: (LayoutFrame 595 0 1 0 877 0 23 0)
8079
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   164
                    translateLabel: true
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   165
                    labelChannel: searchBarInfoLabelHolder
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   166
                    adjust: left
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   167
                  )
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   168
                 )
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   169
               
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   170
              )
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   171
            )
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   172
           )
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   173
         
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   174
        )
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   175
      )
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   176
!
4aec56e898ce restartSearch
fm
parents: 8078
diff changeset
   177
8070
2acefb7023d2 changed #matchCheckboxVisible
Claus Gittinger <cg@exept.de>
parents: 8064
diff changeset
   178
windowSpec_old
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   179
    "This resource specification was automatically generated
3845b02f8475 initial checkin
fm
parents:
diff changeset
   180
     by the UIPainter of ST/X."
3845b02f8475 initial checkin
fm
parents:
diff changeset
   181
3845b02f8475 initial checkin
fm
parents:
diff changeset
   182
    "Do not manually edit this!! If it is corrupted,
3845b02f8475 initial checkin
fm
parents:
diff changeset
   183
     the UIPainter may not be able to read the specification."
3845b02f8475 initial checkin
fm
parents:
diff changeset
   184
3845b02f8475 initial checkin
fm
parents:
diff changeset
   185
    "
8956
c69ca30a3fa7 changed:6 methods
fm
parents: 8925
diff changeset
   186
     UIPainter new openOnClass:Tools::StringSearchToolForTextView andSelector:#windowSpec_old
c69ca30a3fa7 changed:6 methods
fm
parents: 8925
diff changeset
   187
     Tools::StringSearchToolForTextView new openInterface:#windowSpec_old
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   188
    "
3845b02f8475 initial checkin
fm
parents:
diff changeset
   189
3845b02f8475 initial checkin
fm
parents:
diff changeset
   190
    <resource: #canvas>
3845b02f8475 initial checkin
fm
parents:
diff changeset
   191
3845b02f8475 initial checkin
fm
parents:
diff changeset
   192
    ^ 
3845b02f8475 initial checkin
fm
parents:
diff changeset
   193
     #(FullSpec
8956
c69ca30a3fa7 changed:6 methods
fm
parents: 8925
diff changeset
   194
        name: #'windowSpec_old'
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   195
        window: 
3845b02f8475 initial checkin
fm
parents:
diff changeset
   196
       (WindowSpec
3845b02f8475 initial checkin
fm
parents:
diff changeset
   197
          label: 'Tools::StringSearchTool'
3845b02f8475 initial checkin
fm
parents:
diff changeset
   198
          name: 'Tools::StringSearchTool'
3845b02f8475 initial checkin
fm
parents:
diff changeset
   199
          min: (Point 10 10)
3845b02f8475 initial checkin
fm
parents:
diff changeset
   200
          max: (Point 1024 768)
8078
5339ee7d9b22 restartSearch
fm
parents: 8070
diff changeset
   201
          bounds: (Rectangle 0 0 883 27)
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   202
        )
3845b02f8475 initial checkin
fm
parents:
diff changeset
   203
        component: 
3845b02f8475 initial checkin
fm
parents:
diff changeset
   204
       (SpecCollection
3845b02f8475 initial checkin
fm
parents:
diff changeset
   205
          collection: (
3845b02f8475 initial checkin
fm
parents:
diff changeset
   206
           (ViewSpec
3845b02f8475 initial checkin
fm
parents:
diff changeset
   207
              name: 'SearchBox'
3845b02f8475 initial checkin
fm
parents:
diff changeset
   208
              layout: (LayoutFrame 0 0 0 0 0 1 0 1)
3845b02f8475 initial checkin
fm
parents:
diff changeset
   209
              level: -1
3845b02f8475 initial checkin
fm
parents:
diff changeset
   210
              component: 
3845b02f8475 initial checkin
fm
parents:
diff changeset
   211
             (SpecCollection
3845b02f8475 initial checkin
fm
parents:
diff changeset
   212
                collection: (
3845b02f8475 initial checkin
fm
parents:
diff changeset
   213
                 (ActionButtonSpec
3845b02f8475 initial checkin
fm
parents:
diff changeset
   214
                    label: 'closeSearchBarIcon'
3845b02f8475 initial checkin
fm
parents:
diff changeset
   215
                    name: 'hideSearchBarButton'
3845b02f8475 initial checkin
fm
parents:
diff changeset
   216
                    layout: (LayoutFrame 1 0 2 0 22 0 23 0)
3845b02f8475 initial checkin
fm
parents:
diff changeset
   217
                    hasCharacterOrientedLabel: false
3845b02f8475 initial checkin
fm
parents:
diff changeset
   218
                    translateLabel: true
3845b02f8475 initial checkin
fm
parents:
diff changeset
   219
                    model: hideSearchBar
3845b02f8475 initial checkin
fm
parents:
diff changeset
   220
                  )
3845b02f8475 initial checkin
fm
parents:
diff changeset
   221
                 (LabelSpec
3845b02f8475 initial checkin
fm
parents:
diff changeset
   222
                    label: 'Search:'
3845b02f8475 initial checkin
fm
parents:
diff changeset
   223
                    name: 'SearchLabel'
8062
3b38e4e4d786 searchString without showing searchBar
fm
parents: 8060
diff changeset
   224
                    layout: (LayoutFrame 23 0 1 0 71 0 23 0)
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   225
                    translateLabel: true
3845b02f8475 initial checkin
fm
parents:
diff changeset
   226
                    adjust: right
3845b02f8475 initial checkin
fm
parents:
diff changeset
   227
                  )
3845b02f8475 initial checkin
fm
parents:
diff changeset
   228
                 (InputFieldSpec
3845b02f8475 initial checkin
fm
parents:
diff changeset
   229
                    name: 'SearchEntryField'
8062
3b38e4e4d786 searchString without showing searchBar
fm
parents: 8060
diff changeset
   230
                    layout: (LayoutFrame 72 0 1 0 253 0 23 0)
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   231
                    model: searchTextHolder
3845b02f8475 initial checkin
fm
parents:
diff changeset
   232
                    immediateAccept: true
3845b02f8475 initial checkin
fm
parents:
diff changeset
   233
                    acceptOnReturn: true
3845b02f8475 initial checkin
fm
parents:
diff changeset
   234
                    acceptOnTab: true
3845b02f8475 initial checkin
fm
parents:
diff changeset
   235
                    acceptOnLostFocus: true
3845b02f8475 initial checkin
fm
parents:
diff changeset
   236
                    modifiedChannel: searchTextModifiedHolder
3845b02f8475 initial checkin
fm
parents:
diff changeset
   237
                    acceptOnPointerLeave: false
3845b02f8475 initial checkin
fm
parents:
diff changeset
   238
                    postBuildCallback: postBuildSearchTextView:
3845b02f8475 initial checkin
fm
parents:
diff changeset
   239
                  )
3845b02f8475 initial checkin
fm
parents:
diff changeset
   240
                 (ActionButtonSpec
3845b02f8475 initial checkin
fm
parents:
diff changeset
   241
                    label: 'searchNextIcon'
3845b02f8475 initial checkin
fm
parents:
diff changeset
   242
                    name: 'SearchNextButton'
8062
3b38e4e4d786 searchString without showing searchBar
fm
parents: 8060
diff changeset
   243
                    layout: (LayoutFrame 258 0 2 0 279 0 23 0)
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   244
                    hasCharacterOrientedLabel: false
3845b02f8475 initial checkin
fm
parents:
diff changeset
   245
                    translateLabel: true
8078
5339ee7d9b22 restartSearch
fm
parents: 8070
diff changeset
   246
                    model: searchNextTextButtonPressed
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   247
                  )
3845b02f8475 initial checkin
fm
parents:
diff changeset
   248
                 (ActionButtonSpec
3845b02f8475 initial checkin
fm
parents:
diff changeset
   249
                    label: 'searchPreviousIcon'
3845b02f8475 initial checkin
fm
parents:
diff changeset
   250
                    name: 'searchPreviousButton'
8062
3b38e4e4d786 searchString without showing searchBar
fm
parents: 8060
diff changeset
   251
                    layout: (LayoutFrame 286 0 2 0 307 0 23 0)
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   252
                    hasCharacterOrientedLabel: false
3845b02f8475 initial checkin
fm
parents:
diff changeset
   253
                    translateLabel: true
8078
5339ee7d9b22 restartSearch
fm
parents: 8070
diff changeset
   254
                    model: searchPreviousTextButtonPressed
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   255
                  )
3845b02f8475 initial checkin
fm
parents:
diff changeset
   256
                 (CheckBoxSpec
8956
c69ca30a3fa7 changed:6 methods
fm
parents: 8925
diff changeset
   257
                    label: 'Case'
c69ca30a3fa7 changed:6 methods
fm
parents: 8925
diff changeset
   258
                    name: 'CaseCheckBox'
8062
3b38e4e4d786 searchString without showing searchBar
fm
parents: 8060
diff changeset
   259
                    layout: (LayoutFrame 312 0 1 0 424 0 23 0)
8956
c69ca30a3fa7 changed:6 methods
fm
parents: 8925
diff changeset
   260
                    model: matchCaseHolder
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   261
                    translateLabel: true
3845b02f8475 initial checkin
fm
parents:
diff changeset
   262
                  )
3845b02f8475 initial checkin
fm
parents:
diff changeset
   263
                 (CheckBoxSpec
3845b02f8475 initial checkin
fm
parents:
diff changeset
   264
                    label: 'Match'
3845b02f8475 initial checkin
fm
parents:
diff changeset
   265
                    name: 'MatchCheckBox'
8062
3b38e4e4d786 searchString without showing searchBar
fm
parents: 8060
diff changeset
   266
                    layout: (LayoutFrame 424 0 1 0 508 0 23 0)
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   267
                    model: matchHolder
3845b02f8475 initial checkin
fm
parents:
diff changeset
   268
                    translateLabel: true
3845b02f8475 initial checkin
fm
parents:
diff changeset
   269
                  )
8078
5339ee7d9b22 restartSearch
fm
parents: 8070
diff changeset
   270
                 (CheckBoxSpec
5339ee7d9b22 restartSearch
fm
parents: 8070
diff changeset
   271
                    label: 'Restart'
5339ee7d9b22 restartSearch
fm
parents: 8070
diff changeset
   272
                    name: 'RestartCheckBox'
5339ee7d9b22 restartSearch
fm
parents: 8070
diff changeset
   273
                    layout: (LayoutFrame 509 0 1 0 593 0 23 0)
5339ee7d9b22 restartSearch
fm
parents: 8070
diff changeset
   274
                    model: restartHolder
5339ee7d9b22 restartSearch
fm
parents: 8070
diff changeset
   275
                    translateLabel: true
5339ee7d9b22 restartSearch
fm
parents: 8070
diff changeset
   276
                  )
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   277
                 (LabelSpec
3845b02f8475 initial checkin
fm
parents:
diff changeset
   278
                    label: 'SearchBarImageInfoLabel'
3845b02f8475 initial checkin
fm
parents:
diff changeset
   279
                    name: 'SearchBarImageInfoLabel'
8078
5339ee7d9b22 restartSearch
fm
parents: 8070
diff changeset
   280
                    layout: (LayoutFrame 598 0 1 0 622 0 23 0)
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   281
                    hasCharacterOrientedLabel: false
3845b02f8475 initial checkin
fm
parents:
diff changeset
   282
                    translateLabel: true
3845b02f8475 initial checkin
fm
parents:
diff changeset
   283
                    labelChannel: searchBarImageInfoLabelHolder
3845b02f8475 initial checkin
fm
parents:
diff changeset
   284
                  )
3845b02f8475 initial checkin
fm
parents:
diff changeset
   285
                 (LabelSpec
3845b02f8475 initial checkin
fm
parents:
diff changeset
   286
                    label: 'SearchBarInfoLabel'
3845b02f8475 initial checkin
fm
parents:
diff changeset
   287
                    name: 'SearchBarInfoLabel'
8078
5339ee7d9b22 restartSearch
fm
parents: 8070
diff changeset
   288
                    layout: (LayoutFrame 633 0 1 0 882 0 23 0)
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   289
                    translateLabel: true
3845b02f8475 initial checkin
fm
parents:
diff changeset
   290
                    labelChannel: searchBarInfoLabelHolder
3845b02f8475 initial checkin
fm
parents:
diff changeset
   291
                    adjust: left
3845b02f8475 initial checkin
fm
parents:
diff changeset
   292
                  )
3845b02f8475 initial checkin
fm
parents:
diff changeset
   293
                 )
3845b02f8475 initial checkin
fm
parents:
diff changeset
   294
               
3845b02f8475 initial checkin
fm
parents:
diff changeset
   295
              )
3845b02f8475 initial checkin
fm
parents:
diff changeset
   296
            )
3845b02f8475 initial checkin
fm
parents:
diff changeset
   297
           )
3845b02f8475 initial checkin
fm
parents:
diff changeset
   298
         
3845b02f8475 initial checkin
fm
parents:
diff changeset
   299
        )
3845b02f8475 initial checkin
fm
parents:
diff changeset
   300
      )
3845b02f8475 initial checkin
fm
parents:
diff changeset
   301
! !
3845b02f8475 initial checkin
fm
parents:
diff changeset
   302
3845b02f8475 initial checkin
fm
parents:
diff changeset
   303
!StringSearchToolForTextView methodsFor:'accessing'!
3845b02f8475 initial checkin
fm
parents:
diff changeset
   304
3845b02f8475 initial checkin
fm
parents:
diff changeset
   305
textView
3845b02f8475 initial checkin
fm
parents:
diff changeset
   306
    ^ textView
3845b02f8475 initial checkin
fm
parents:
diff changeset
   307
!
3845b02f8475 initial checkin
fm
parents:
diff changeset
   308
3845b02f8475 initial checkin
fm
parents:
diff changeset
   309
textView:something
3845b02f8475 initial checkin
fm
parents:
diff changeset
   310
    textView := something.
3845b02f8475 initial checkin
fm
parents:
diff changeset
   311
! !
3845b02f8475 initial checkin
fm
parents:
diff changeset
   312
3845b02f8475 initial checkin
fm
parents:
diff changeset
   313
!StringSearchToolForTextView methodsFor:'aspects'!
3845b02f8475 initial checkin
fm
parents:
diff changeset
   314
8070
2acefb7023d2 changed #matchCheckboxVisible
Claus Gittinger <cg@exept.de>
parents: 8064
diff changeset
   315
matchCheckboxVisible
2acefb7023d2 changed #matchCheckboxVisible
Claus Gittinger <cg@exept.de>
parents: 8064
diff changeset
   316
    ^ true
2acefb7023d2 changed #matchCheckboxVisible
Claus Gittinger <cg@exept.de>
parents: 8064
diff changeset
   317
!
2acefb7023d2 changed #matchCheckboxVisible
Claus Gittinger <cg@exept.de>
parents: 8064
diff changeset
   318
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   319
matchHolder
3845b02f8475 initial checkin
fm
parents:
diff changeset
   320
3845b02f8475 initial checkin
fm
parents:
diff changeset
   321
    matchHolder isNil ifTrue:[
8915
a46603e1539b *** empty log message ***
fm
parents: 8910
diff changeset
   322
        matchHolder := self class lastMatch asValue.
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   323
"/ if your app needs to be notified of changes, uncomment one of the lines below:
3845b02f8475 initial checkin
fm
parents:
diff changeset
   324
"/       matchHolder addDependent:self.
3845b02f8475 initial checkin
fm
parents:
diff changeset
   325
        matchHolder onChangeSend:#matchHolderChanged to:self.
3845b02f8475 initial checkin
fm
parents:
diff changeset
   326
3845b02f8475 initial checkin
fm
parents:
diff changeset
   327
    ].
3845b02f8475 initial checkin
fm
parents:
diff changeset
   328
    ^ matchHolder.
3845b02f8475 initial checkin
fm
parents:
diff changeset
   329
3845b02f8475 initial checkin
fm
parents:
diff changeset
   330
    "Created: / 16-06-2007 / 06:45:04 / Administrador"
3845b02f8475 initial checkin
fm
parents:
diff changeset
   331
    "Modified: / 16-06-2007 / 19:32:15 / Administrador"
3845b02f8475 initial checkin
fm
parents:
diff changeset
   332
! !
3845b02f8475 initial checkin
fm
parents:
diff changeset
   333
3845b02f8475 initial checkin
fm
parents:
diff changeset
   334
!StringSearchToolForTextView methodsFor:'change & update'!
3845b02f8475 initial checkin
fm
parents:
diff changeset
   335
3845b02f8475 initial checkin
fm
parents:
diff changeset
   336
matchHolderChanged
3845b02f8475 initial checkin
fm
parents:
diff changeset
   337
3845b02f8475 initial checkin
fm
parents:
diff changeset
   338
    self searchNextTextIncludingCurrentSelection: true.
8062
3b38e4e4d786 searchString without showing searchBar
fm
parents: 8060
diff changeset
   339
    self setFocusToSearchTextView.
8915
a46603e1539b *** empty log message ***
fm
parents: 8910
diff changeset
   340
    self class lastMatch: self matchHolder value.
8997
05b9949f54aa fixes in searchBar
fm
parents: 8958
diff changeset
   341
!
05b9949f54aa fixes in searchBar
fm
parents: 8958
diff changeset
   342
05b9949f54aa fixes in searchBar
fm
parents: 8958
diff changeset
   343
searchTextModifiedHolderChanged
05b9949f54aa fixes in searchBar
fm
parents: 8958
diff changeset
   344
05b9949f54aa fixes in searchBar
fm
parents: 8958
diff changeset
   345
    |searchPattern|
05b9949f54aa fixes in searchBar
fm
parents: 8958
diff changeset
   346
05b9949f54aa fixes in searchBar
fm
parents: 8958
diff changeset
   347
    super searchTextModifiedHolderChanged.
05b9949f54aa fixes in searchBar
fm
parents: 8958
diff changeset
   348
05b9949f54aa fixes in searchBar
fm
parents: 8958
diff changeset
   349
    searchPattern := self searchText.
05b9949f54aa fixes in searchBar
fm
parents: 8958
diff changeset
   350
"/    Transcript showCR: searchPattern.
05b9949f54aa fixes in searchBar
fm
parents: 8958
diff changeset
   351
    textView setSearchPattern: searchPattern.
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   352
! !
3845b02f8475 initial checkin
fm
parents:
diff changeset
   353
3845b02f8475 initial checkin
fm
parents:
diff changeset
   354
!StringSearchToolForTextView methodsFor:'initialization & release'!
3845b02f8475 initial checkin
fm
parents:
diff changeset
   355
3845b02f8475 initial checkin
fm
parents:
diff changeset
   356
postBuildSearchTextView: anEditFieldView
3845b02f8475 initial checkin
fm
parents:
diff changeset
   357
3845b02f8475 initial checkin
fm
parents:
diff changeset
   358
    super postBuildSearchTextView: anEditFieldView.
3845b02f8475 initial checkin
fm
parents:
diff changeset
   359
    anEditFieldView crAction: self crAction.
3845b02f8475 initial checkin
fm
parents:
diff changeset
   360
! !
3845b02f8475 initial checkin
fm
parents:
diff changeset
   361
8910
fm
parents: 8276
diff changeset
   362
!StringSearchToolForTextView methodsFor:'misc'!
fm
parents: 8276
diff changeset
   363
fm
parents: 8276
diff changeset
   364
trimMatchPattern: aString
fm
parents: 8276
diff changeset
   365
15289
a4b2c2b77420 class: Tools::StringSearchToolForTextView
Claus Gittinger <cg@exept.de>
parents: 9466
diff changeset
   366
    ^ aString trimForWhich: [:ch | ch == $*].
8910
fm
parents: 8276
diff changeset
   367
fm
parents: 8276
diff changeset
   368
    "
fm
parents: 8276
diff changeset
   369
    '***foo***' trimForWhich: [:ch | ch = $*].  
fm
parents: 8276
diff changeset
   370
    'foo***' trimForWhich: [:ch | ch = $*].    
fm
parents: 8276
diff changeset
   371
    '***foo' trimForWhich: [:ch | ch = $*].      
fm
parents: 8276
diff changeset
   372
    '***f***o***o***' trimForWhich: [:ch | ch = $*].     
fm
parents: 8276
diff changeset
   373
    'foo' trimForWhich: [:ch | ch = $*].
fm
parents: 8276
diff changeset
   374
    "
fm
parents: 8276
diff changeset
   375
! !
fm
parents: 8276
diff changeset
   376
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   377
!StringSearchToolForTextView methodsFor:'public'!
3845b02f8475 initial checkin
fm
parents:
diff changeset
   378
3845b02f8475 initial checkin
fm
parents:
diff changeset
   379
crAction
3845b02f8475 initial checkin
fm
parents:
diff changeset
   380
3845b02f8475 initial checkin
fm
parents:
diff changeset
   381
    ^ [self returnFocusToTextView]
3845b02f8475 initial checkin
fm
parents:
diff changeset
   382
!
3845b02f8475 initial checkin
fm
parents:
diff changeset
   383
8085
e050190fee76 return focus and hide after pressing #Escape
fm
parents: 8079
diff changeset
   384
escapePressed
e050190fee76 return focus and hide after pressing #Escape
fm
parents: 8079
diff changeset
   385
e050190fee76 return focus and hide after pressing #Escape
fm
parents: 8079
diff changeset
   386
    self returnFocusToTextView. 
e050190fee76 return focus and hide after pressing #Escape
fm
parents: 8079
diff changeset
   387
    super escapePressed.
e050190fee76 return focus and hide after pressing #Escape
fm
parents: 8079
diff changeset
   388
!
e050190fee76 return focus and hide after pressing #Escape
fm
parents: 8079
diff changeset
   389
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   390
returnFocusToTextView
3845b02f8475 initial checkin
fm
parents:
diff changeset
   391
3845b02f8475 initial checkin
fm
parents:
diff changeset
   392
    textView takeFocus
8910
fm
parents: 8276
diff changeset
   393
!
fm
parents: 8276
diff changeset
   394
fm
parents: 8276
diff changeset
   395
searchPreviousTextReachBeginning
fm
parents: 8276
diff changeset
   396
    |message searchText match |
fm
parents: 8276
diff changeset
   397
8997
05b9949f54aa fixes in searchBar
fm
parents: 8958
diff changeset
   398
    searchText := self searchText.
8910
fm
parents: 8276
diff changeset
   399
    match := self matchHolder value.
fm
parents: 8276
diff changeset
   400
fm
parents: 8276
diff changeset
   401
    match ifTrue: [
fm
parents: 8276
diff changeset
   402
        searchText := self trimMatchPattern: searchText.
fm
parents: 8276
diff changeset
   403
        (searchText includes: $*) ifTrue: [
8958
6f1fef46e15e changed: #searchPreviousTextReachBeginning
fm
parents: 8956
diff changeset
   404
            message := (resources string: 'Match pattern not available for backward search').
8910
fm
parents: 8276
diff changeset
   405
            self searchTextNotFound: message.
fm
parents: 8276
diff changeset
   406
            Smalltalk beep.
fm
parents: 8276
diff changeset
   407
            ^ self
fm
parents: 8276
diff changeset
   408
        ].    
fm
parents: 8276
diff changeset
   409
    ].
fm
parents: 8276
diff changeset
   410
fm
parents: 8276
diff changeset
   411
    super searchPreviousTextReachBeginning
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   412
! !
3845b02f8475 initial checkin
fm
parents:
diff changeset
   413
3845b02f8475 initial checkin
fm
parents:
diff changeset
   414
!StringSearchToolForTextView methodsFor:'searching'!
3845b02f8475 initial checkin
fm
parents:
diff changeset
   415
3845b02f8475 initial checkin
fm
parents:
diff changeset
   416
hideSearchBar
3845b02f8475 initial checkin
fm
parents:
diff changeset
   417
3845b02f8475 initial checkin
fm
parents:
diff changeset
   418
    masterApplication isNil ifTrue:[^ self].
3845b02f8475 initial checkin
fm
parents:
diff changeset
   419
    masterApplication hideSearchBar.
3845b02f8475 initial checkin
fm
parents:
diff changeset
   420
    self returnFocusToTextView.
3845b02f8475 initial checkin
fm
parents:
diff changeset
   421
!
3845b02f8475 initial checkin
fm
parents:
diff changeset
   422
3845b02f8475 initial checkin
fm
parents:
diff changeset
   423
searchNextTextFromBeginning
3845b02f8475 initial checkin
fm
parents:
diff changeset
   424
    |searchText ignoreCase match absentBlock|
3845b02f8475 initial checkin
fm
parents:
diff changeset
   425
8997
05b9949f54aa fixes in searchBar
fm
parents: 8958
diff changeset
   426
    searchText := self searchText.
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   427
    searchText isEmptyOrNil ifTrue:[^self].
3845b02f8475 initial checkin
fm
parents:
diff changeset
   428
    self textView isNil ifTrue:[^ self].
8956
c69ca30a3fa7 changed:6 methods
fm
parents: 8925
diff changeset
   429
    ignoreCase := self ignoreCase.
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   430
    match := self matchHolder value.
3845b02f8475 initial checkin
fm
parents:
diff changeset
   431
    absentBlock := [self searchTextNotFound.].
3845b02f8475 initial checkin
fm
parents:
diff changeset
   432
    self textView 
3845b02f8475 initial checkin
fm
parents:
diff changeset
   433
        searchFwd:searchText 
3845b02f8475 initial checkin
fm
parents:
diff changeset
   434
        ignoreCase:ignoreCase 
3845b02f8475 initial checkin
fm
parents:
diff changeset
   435
        match: match
3845b02f8475 initial checkin
fm
parents:
diff changeset
   436
        startingAtLine:1 
3845b02f8475 initial checkin
fm
parents:
diff changeset
   437
        col:0
3845b02f8475 initial checkin
fm
parents:
diff changeset
   438
        ifAbsent:absentBlock
3845b02f8475 initial checkin
fm
parents:
diff changeset
   439
!
3845b02f8475 initial checkin
fm
parents:
diff changeset
   440
3845b02f8475 initial checkin
fm
parents:
diff changeset
   441
searchNextTextIncludingCurrentSelection: includeCurrentSelection
8956
c69ca30a3fa7 changed:6 methods
fm
parents: 8925
diff changeset
   442
    |searchText ignoreCase  match absentBlock startCol startLine |
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   443
3845b02f8475 initial checkin
fm
parents:
diff changeset
   444
    self searchTextStarted.
8997
05b9949f54aa fixes in searchBar
fm
parents: 8958
diff changeset
   445
    searchText := self searchText.
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   446
    searchText isEmptyOrNil ifTrue:[^self].
3845b02f8475 initial checkin
fm
parents:
diff changeset
   447
    self textView isNil ifTrue:[^ self].
8956
c69ca30a3fa7 changed:6 methods
fm
parents: 8925
diff changeset
   448
    ignoreCase := self ignoreCase.
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   449
    match := self matchHolder value.
3845b02f8475 initial checkin
fm
parents:
diff changeset
   450
    absentBlock := [self searchNextTextReachEnd].
8956
c69ca30a3fa7 changed:6 methods
fm
parents: 8925
diff changeset
   451
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   452
    (self textView hasSelection and:[includeCurrentSelection]) 
3845b02f8475 initial checkin
fm
parents:
diff changeset
   453
        ifTrue:[
8064
9d91d0d69b09 changed #searchNextTextIncludingCurrentSelection:
fm
parents: 8062
diff changeset
   454
            startCol := ((self textView selectionStartCol ? 1) - 2) max: 0.
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   455
            startLine := (self textView selectionStartLine ? 1).
3845b02f8475 initial checkin
fm
parents:
diff changeset
   456
            self textView searchFwd:searchText ignoreCase:ignoreCase match: match startingAtLine:startLine col:startCol ifAbsent:absentBlock.
8956
c69ca30a3fa7 changed:6 methods
fm
parents: 8925
diff changeset
   457
        ] ifFalse:[   
c69ca30a3fa7 changed:6 methods
fm
parents: 8925
diff changeset
   458
            self textView startPositionForSearchForward = (0 @ 1) ifTrue: [
c69ca30a3fa7 changed:6 methods
fm
parents: 8925
diff changeset
   459
                absentBlock := [self searchTextNotFound].
c69ca30a3fa7 changed:6 methods
fm
parents: 8925
diff changeset
   460
            ].
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   461
            self textView searchFwd:searchText ignoreCase:ignoreCase match: match ifAbsent:absentBlock
3845b02f8475 initial checkin
fm
parents:
diff changeset
   462
    ].
3845b02f8475 initial checkin
fm
parents:
diff changeset
   463
!
3845b02f8475 initial checkin
fm
parents:
diff changeset
   464
3845b02f8475 initial checkin
fm
parents:
diff changeset
   465
searchPreviousText
3845b02f8475 initial checkin
fm
parents:
diff changeset
   466
8910
fm
parents: 8276
diff changeset
   467
    |searchText ignoreCase match absentBlock|
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   468
3845b02f8475 initial checkin
fm
parents:
diff changeset
   469
    self searchTextStarted.
8997
05b9949f54aa fixes in searchBar
fm
parents: 8958
diff changeset
   470
    searchText := self searchText.
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   471
    searchText isEmptyOrNil ifTrue:[^self].
8956
c69ca30a3fa7 changed:6 methods
fm
parents: 8925
diff changeset
   472
    ignoreCase := self ignoreCase.
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   473
    self textView isNil ifTrue:[^ self].
8910
fm
parents: 8276
diff changeset
   474
    match := self matchHolder value.
fm
parents: 8276
diff changeset
   475
    match ifTrue: [
fm
parents: 8276
diff changeset
   476
        searchText := self trimMatchPattern: searchText.
fm
parents: 8276
diff changeset
   477
    ].
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   478
    absentBlock := [self searchPreviousTextReachBeginning].
3845b02f8475 initial checkin
fm
parents:
diff changeset
   479
    self textView searchBwd:searchText ignoreCase:ignoreCase ifAbsent:absentBlock.
3845b02f8475 initial checkin
fm
parents:
diff changeset
   480
!
3845b02f8475 initial checkin
fm
parents:
diff changeset
   481
3845b02f8475 initial checkin
fm
parents:
diff changeset
   482
searchPreviousTextFromEnd
3845b02f8475 initial checkin
fm
parents:
diff changeset
   483
3845b02f8475 initial checkin
fm
parents:
diff changeset
   484
    |searchText ignoreCase absentBlock startLine startCol|
3845b02f8475 initial checkin
fm
parents:
diff changeset
   485
8997
05b9949f54aa fixes in searchBar
fm
parents: 8958
diff changeset
   486
    searchText := self searchText.
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   487
    searchText isEmptyOrNil ifTrue:[^self].
8956
c69ca30a3fa7 changed:6 methods
fm
parents: 8925
diff changeset
   488
    ignoreCase := self ignoreCase.
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   489
    self textView isNil ifTrue:[^ self].
3845b02f8475 initial checkin
fm
parents:
diff changeset
   490
    absentBlock := [self searchTextNotFound.].
3845b02f8475 initial checkin
fm
parents:
diff changeset
   491
    startLine := self textView numberOfLines + 1.
3845b02f8475 initial checkin
fm
parents:
diff changeset
   492
    startCol := 1.
3845b02f8475 initial checkin
fm
parents:
diff changeset
   493
    self textView 
3845b02f8475 initial checkin
fm
parents:
diff changeset
   494
        searchBwd:searchText 
3845b02f8475 initial checkin
fm
parents:
diff changeset
   495
        ignoreCase:ignoreCase
3845b02f8475 initial checkin
fm
parents:
diff changeset
   496
        startingAtLine:startLine 
3845b02f8475 initial checkin
fm
parents:
diff changeset
   497
        col:startCol 
3845b02f8475 initial checkin
fm
parents:
diff changeset
   498
        ifAbsent:absentBlock
3845b02f8475 initial checkin
fm
parents:
diff changeset
   499
! !
3845b02f8475 initial checkin
fm
parents:
diff changeset
   500
3845b02f8475 initial checkin
fm
parents:
diff changeset
   501
!StringSearchToolForTextView class methodsFor:'documentation'!
3845b02f8475 initial checkin
fm
parents:
diff changeset
   502
3845b02f8475 initial checkin
fm
parents:
diff changeset
   503
version
15289
a4b2c2b77420 class: Tools::StringSearchToolForTextView
Claus Gittinger <cg@exept.de>
parents: 9466
diff changeset
   504
    ^ '$Header: /cvs/stx/stx/libtool/Tools__StringSearchToolForTextView.st,v 1.17 2015-02-13 21:58:38 cg Exp $'
8910
fm
parents: 8276
diff changeset
   505
!
fm
parents: 8276
diff changeset
   506
fm
parents: 8276
diff changeset
   507
version_CVS
15289
a4b2c2b77420 class: Tools::StringSearchToolForTextView
Claus Gittinger <cg@exept.de>
parents: 9466
diff changeset
   508
    ^ '$Header: /cvs/stx/stx/libtool/Tools__StringSearchToolForTextView.st,v 1.17 2015-02-13 21:58:38 cg Exp $'
8049
3845b02f8475 initial checkin
fm
parents:
diff changeset
   509
! !
15289
a4b2c2b77420 class: Tools::StringSearchToolForTextView
Claus Gittinger <cg@exept.de>
parents: 9466
diff changeset
   510