Tools__CodeNavigationService.st
author Claus Gittinger <cg@exept.de>
Mon, 22 Jul 2013 14:02:12 +0200
changeset 13203 909820bee403
parent 13109 3eeb533e3874
child 13250 0decde6c459d
child 13405 071eccc590bb
permissions -rw-r--r--
class: Tools::XXXService added: #isUsefulFor:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"
10076
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
     2
 COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
     3
              All Rights Reserved
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
10076
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
     5
Permission is hereby granted, free of charge, to any person
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
     6
obtaining a copy of this software and associated documentation
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
     7
files (the 'Software'), to deal in the Software without
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
     8
restriction, including without limitation the rights to use,
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
     9
copy, modify, merge, publish, distribute, sublicense, and/or sell
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    10
copies of the Software, and to permit persons to whom the
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    11
Software is furnished to do so, subject to the following
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    12
conditions:
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    13
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    14
The above copyright notice and this permission notice shall be
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    15
included in all copies or substantial portions of the Software.
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    16
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    17
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    18
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    19
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    20
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    21
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    22
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    23
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    24
OTHER DEALINGS IN THE SOFTWARE.
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
"
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
"{ Package: 'stx:libtool' }"
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
"{ NameSpace: Tools }"
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
CodeViewService subclass:#CodeNavigationService
12986
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
    31
	instanceVariableNames:'selectorEmphasis variableEmphasis currentEmphasis
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
    32
		currentEmphasisForAssign linesToRedraw menuShown
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
    33
		assignmentEmphasis'
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
    34
	classVariableNames:'DefaultVariableEmphasis DefaultSelectorEmphasis
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
    35
		DefaultAssignmentEmphasis'
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
	poolDictionaries:''
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
	category:'Interface-CodeView'
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
!CodeNavigationService class methodsFor:'documentation'!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
copyright
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
"
10076
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    44
 COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    45
              All Rights Reserved
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    46
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    47
Permission is hereby granted, free of charge, to any person
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    48
obtaining a copy of this software and associated documentation
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    49
files (the 'Software'), to deal in the Software without
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    50
restriction, including without limitation the rights to use,
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    51
copy, modify, merge, publish, distribute, sublicense, and/or sell
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    52
copies of the Software, and to permit persons to whom the
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    53
Software is furnished to do so, subject to the following
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    54
conditions:
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
10076
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    56
The above copyright notice and this permission notice shall be
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    57
included in all copies or substantial portions of the Software.
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    58
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    59
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    60
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    61
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    62
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    63
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    64
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    65
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    66
OTHER DEALINGS IN THE SOFTWARE.
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
"
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
! !
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
!CodeNavigationService class methodsFor:'accessing'!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
label
13103
307e48c216de class: Tools::LintService
Claus Gittinger <cg@exept.de>
parents: 12997
diff changeset
    73
    "Answers a short label - for UI"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
    ^'Semi-modal Code Navigation'
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
    "Created: / 07-03-2010 / 14:00:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10412
cc7a72f29805 Fixes for debugger
vrany
parents: 10361
diff changeset
    78
!
cc7a72f29805 Fixes for debugger
vrany
parents: 10361
diff changeset
    79
cc7a72f29805 Fixes for debugger
vrany
parents: 10361
diff changeset
    80
requiredServices
cc7a72f29805 Fixes for debugger
vrany
parents: 10361
diff changeset
    81
cc7a72f29805 Fixes for debugger
vrany
parents: 10361
diff changeset
    82
    ^#(#'Tools::CodeHighlightingService')
cc7a72f29805 Fixes for debugger
vrany
parents: 10361
diff changeset
    83
cc7a72f29805 Fixes for debugger
vrany
parents: 10361
diff changeset
    84
    "Created: / 27-07-2011 / 11:40:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
! !
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
!CodeNavigationService class methodsFor:'accessing - defaults'!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
12986
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
    89
defaultAssignmentEmphasis
13109
3eeb533e3874 codeView2 fixes
Claus Gittinger <cg@exept.de>
parents: 13103
diff changeset
    90
    "must only define a background - otherwise, syntax highlight fg is lost"
3eeb533e3874 codeView2 fixes
Claus Gittinger <cg@exept.de>
parents: 13103
diff changeset
    91
12986
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
    92
    DefaultAssignmentEmphasis isNil ifTrue:[
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
    93
        ^ Array with:(#backgroundColor -> (UserPreferences current assignmentBackgroundColorForNavigationService))
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
    94
    ].
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
    95
    ^ DefaultAssignmentEmphasis
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
    96
!
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
    97
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
defaultSelectorEmphasis
13109
3eeb533e3874 codeView2 fixes
Claus Gittinger <cg@exept.de>
parents: 13103
diff changeset
    99
    "must only define a background - otherwise, syntax highlight fg is lost"
3eeb533e3874 codeView2 fixes
Claus Gittinger <cg@exept.de>
parents: 13103
diff changeset
   100
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   101
    DefaultSelectorEmphasis isNil ifTrue:[
12486
0a82f2fcb6b3 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12485
diff changeset
   102
        ^ Array with:(#backgroundColor -> (UserPreferences current selectorBackgroundColorForNavigationService))
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   103
    ].
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   104
    ^ DefaultSelectorEmphasis
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   105
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   106
    "Modified: / 21-08-2011 / 09:58:18 / cg"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
defaultVariableEmphasis
13109
3eeb533e3874 codeView2 fixes
Claus Gittinger <cg@exept.de>
parents: 13103
diff changeset
   110
    "must only define a background - otherwise, syntax highlight fg is lost"
3eeb533e3874 codeView2 fixes
Claus Gittinger <cg@exept.de>
parents: 13103
diff changeset
   111
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   112
    DefaultVariableEmphasis isNil ifTrue:[
12486
0a82f2fcb6b3 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12485
diff changeset
   113
        ^ Array with:(#backgroundColor -> (UserPreferences current variableBackgroundColorForNavigationService))
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   114
    ].
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   115
    ^ DefaultVariableEmphasis
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
    "Created: / 25-06-2010 / 13:56:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   118
    "Modified: / 21-08-2011 / 11:04:20 / cg"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
! !
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
13203
909820bee403 class: Tools::XXXService
Claus Gittinger <cg@exept.de>
parents: 13109
diff changeset
   121
!CodeNavigationService class methodsFor:'testing'!
909820bee403 class: Tools::XXXService
Claus Gittinger <cg@exept.de>
parents: 13109
diff changeset
   122
909820bee403 class: Tools::XXXService
Claus Gittinger <cg@exept.de>
parents: 13109
diff changeset
   123
isUsefulFor:aCodeView
909820bee403 class: Tools::XXXService
Claus Gittinger <cg@exept.de>
parents: 13109
diff changeset
   124
    "this filters useful services.
909820bee403 class: Tools::XXXService
Claus Gittinger <cg@exept.de>
parents: 13109
diff changeset
   125
     Redefined to return true for myself - not for subclasses"
909820bee403 class: Tools::XXXService
Claus Gittinger <cg@exept.de>
parents: 13109
diff changeset
   126
909820bee403 class: Tools::XXXService
Claus Gittinger <cg@exept.de>
parents: 13109
diff changeset
   127
    ^ self == Tools::CodeNavigationService
909820bee403 class: Tools::XXXService
Claus Gittinger <cg@exept.de>
parents: 13109
diff changeset
   128
909820bee403 class: Tools::XXXService
Claus Gittinger <cg@exept.de>
parents: 13109
diff changeset
   129
    "Created: / 22-07-2013 / 13:59:20 / cg"
909820bee403 class: Tools::XXXService
Claus Gittinger <cg@exept.de>
parents: 13109
diff changeset
   130
! !
909820bee403 class: Tools::XXXService
Claus Gittinger <cg@exept.de>
parents: 13109
diff changeset
   131
10651
7ab02ade36e2 added: #update:with:from:
Claus Gittinger <cg@exept.de>
parents: 10631
diff changeset
   132
!CodeNavigationService methodsFor:'change & update'!
7ab02ade36e2 added: #update:with:from:
Claus Gittinger <cg@exept.de>
parents: 10631
diff changeset
   133
7ab02ade36e2 added: #update:with:from:
Claus Gittinger <cg@exept.de>
parents: 10631
diff changeset
   134
update: aspect with: param from: sender
10661
367196dfc3f9 changed:
Claus Gittinger <cg@exept.de>
parents: 10653
diff changeset
   135
    sender == textView modifiedChannel ifTrue:[
367196dfc3f9 changed:
Claus Gittinger <cg@exept.de>
parents: 10653
diff changeset
   136
        codeView reallyModified ifTrue:[
367196dfc3f9 changed:
Claus Gittinger <cg@exept.de>
parents: 10653
diff changeset
   137
            "/ no longer highlight - the info is wrong anyway !!
367196dfc3f9 changed:
Claus Gittinger <cg@exept.de>
parents: 10653
diff changeset
   138
            self highlightClear.
367196dfc3f9 changed:
Claus Gittinger <cg@exept.de>
parents: 10653
diff changeset
   139
        ].
367196dfc3f9 changed:
Claus Gittinger <cg@exept.de>
parents: 10653
diff changeset
   140
    ].
367196dfc3f9 changed:
Claus Gittinger <cg@exept.de>
parents: 10653
diff changeset
   141
10653
0f30edd43161 changed halt to breakPoint: in #update:with:from:
vrany
parents: 10651
diff changeset
   142
    "JV: I changed 'halt' to 'breakPoint: #cg'"
10651
7ab02ade36e2 added: #update:with:from:
Claus Gittinger <cg@exept.de>
parents: 10631
diff changeset
   143
7ab02ade36e2 added: #update:with:from:
Claus Gittinger <cg@exept.de>
parents: 10631
diff changeset
   144
    "Created: / 22-08-2011 / 16:22:19 / cg"
10653
0f30edd43161 changed halt to breakPoint: in #update:with:from:
vrany
parents: 10651
diff changeset
   145
    "Modified: / 25-08-2011 / 15:10:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10661
367196dfc3f9 changed:
Claus Gittinger <cg@exept.de>
parents: 10653
diff changeset
   146
    "Modified: / 05-09-2011 / 05:15:42 / cg"
10651
7ab02ade36e2 added: #update:with:from:
Claus Gittinger <cg@exept.de>
parents: 10631
diff changeset
   147
! !
7ab02ade36e2 added: #update:with:from:
Claus Gittinger <cg@exept.de>
parents: 10631
diff changeset
   148
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
!CodeNavigationService methodsFor:'code services'!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   151
browseClass:class 
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   152
    self browser isNil ifTrue:[ ^ NewSystemBrowser browseClass:class ].
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
    (UserPreferences current alwaysOpenNewTabWhenCtrlClick 
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   154
        or:[ self browser navigationState modified ]) 
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   155
            ifTrue:[
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   156
                self browser 
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   157
                    spawnFullBrowserInClass:class
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   158
                    selector:nil
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   159
                    in:#newBuffer
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   160
            ]
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   161
            ifFalse:[ self browser switchToClass:class ]
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
    "Created: / 15-02-2010 / 09:36:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
    "Modified: / 25-07-2010 / 11:00:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   165
    "Modified: / 21-08-2011 / 10:07:30 / cg"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
browser
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
    ^codeView browserHolder value
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
    "Created: / 06-03-2010 / 21:14:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
! !
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
!CodeNavigationService methodsFor:'event handling'!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
button1Press
12353
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   178
    |element|
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
12353
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   180
    (element := codeView syntaxElementSelection) notNil ifTrue:[
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   181
        element type == #selector ifTrue:[self button1PressForSelector: element value. ^true].
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   182
        element type == #class    ifTrue:[self browseClass:element value. ^true].
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   183
    ].
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   184
    ^ false
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
    "Created: / 14-02-2010 / 18:43:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
    "Modified: / 06-03-2010 / 21:11:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10878
3424d00f9155 changed:
Claus Gittinger <cg@exept.de>
parents: 10727
diff changeset
   188
    "Modified: / 18-11-2011 / 14:58:02 / cg"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
button1PressForSelector: selector
12867
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   192
    | impls |
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
10254
43001ebe1490 Merged with JV's branch
vrany
parents: 10076
diff changeset
   194
    impls := codeView implementorsOf: selector.
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   195
    "/ impls size = 1 ifTrue:[^codeView browseMethod: impls anyOne].
12867
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   196
    [
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   197
        menuShown := codeView implementorsMenu: impls selector: selector.
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   198
        self highlightClear.
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   199
        menuShown showAtPointer.
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   200
    ] ensure:[
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   201
        menuShown := nil
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   202
    ].
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
    "Created: / 14-02-2010 / 18:50:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10254
43001ebe1490 Merged with JV's branch
vrany
parents: 10076
diff changeset
   205
    "Modified: / 30-06-2011 / 19:34:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10271
44c51d135362 changed: #button1PressForSelector: bug fix
vrany
parents: 10254
diff changeset
   206
    "Modified: / 07-07-2011 / 17:16:23 / jv"
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   207
    "Modified: / 21-08-2011 / 11:06:08 / cg"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   208
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
button2Press
12353
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   211
    | element |
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   212
12353
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   213
    (element := codeView syntaxElementSelection) notNil ifTrue:[
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   214
        element type == #selector ifTrue:[self button2PressForSelector: element value. ^ true].
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   215
    ].
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   216
    ^ false
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   217
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   218
    "Created: / 14-02-2010 / 18:43:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   219
    "Modified: / 17-06-2011 / 08:58:34 / Jan Vrany <jan.vrany@fit.cvut.cz>"
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   220
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   221
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   222
button2PressForSelector: selector
12867
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   223
    | senders |
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   224
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   225
    senders := codeView sendersOf: selector.
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   226
    "/ senders size = 1 ifTrue:[ codeView browseMethod: senders anyOne. ^ self].
12867
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   227
    [
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   228
        menuShown := codeView sendersMenu: senders selector: selector.
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   229
        self highlightClear.
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   230
        menuShown showAtPointer.
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   231
    ] ensure:[
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   232
        menuShown := nil.
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   233
    ].
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   234
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   235
    "Created: / 14-02-2010 / 18:50:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10254
43001ebe1490 Merged with JV's branch
vrany
parents: 10076
diff changeset
   236
    "Modified: / 30-06-2011 / 19:34:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   237
    "Modified: / 21-08-2011 / 11:34:49 / cg"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   238
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   239
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   240
buttonMotion:button x:x y:y in:view 
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   241
    "Handles an event in given view (a subview of codeView).
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   242
     If the method returns true, the event will not be processed
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   243
     by the view."
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   244
    
12353
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   245
    (view == textView and:[ textView sensor metaDown ]) ifTrue:[
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   246
        self highlightElementAtX:x y:y.
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   247
        ^ true
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   248
    ].
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   249
    ^ false
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   250
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   251
    "Created: / 06-03-2010 / 20:40:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   252
    "Modified (format): / 21-08-2011 / 10:07:15 / cg"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   253
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   254
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   255
buttonPress: button x:x y:y in: view
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   256
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   257
    "Handles an event in given view (a subview of codeView).
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   258
     If the method returns true, the event will not be processed
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   259
     by the view."
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   260
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   261
    (view == textView) ifTrue:[
12353
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   262
        textView isQuickMenuModifierPressed ifTrue:[
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   263
            button == 1      ifTrue: [^self button1Press].
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   264
            button == #paste ifTrue: [^self button2Press].   
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   265
            button == 2      ifTrue: [^self button2Press]
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   266
        ] ifFalse:[
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   267
            button == 1 ifTrue:[
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   268
                self highlightVariableAtX:x y:y.
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   269
            ]
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
        ]
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   271
    ].
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   272
    ^false
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   273
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   274
    "Created: / 06-03-2010 / 21:12:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   275
    "Modified: / 25-06-2010 / 14:53:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   276
    "Modified (format): / 21-08-2011 / 10:06:54 / cg"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   277
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   278
12867
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   279
buttonRelease: button x:x y:y in: view
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   280
    "Handles an event in given view (a subview of codeView).
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   281
     If the method returns true, the event will not be processed
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   282
     by the view."
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   283
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   284
    "/ if I show a quick senders/implementors menu, eat this event
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   285
    ^ menuShown notNil
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   286
!
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   287
12353
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   288
isQuickMenuModifierPressed
12913
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   289
    |sensor|
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   290
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   291
    sensor := textView sensor.
12353
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   292
    UserPreferences current codeView2QuickSendersAndImplementorsOnControl ifTrue:[
12913
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   293
        ^ sensor ctrlDown
12353
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   294
    ].
12913
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   295
    ^ sensor metaDown
12353
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   296
!
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   297
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   298
isQuickMenuModifierReleased
12913
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   299
    |sensor|
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   300
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   301
    sensor := textView sensor.
12353
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   302
    UserPreferences current codeView2QuickSendersAndImplementorsOnControl ifTrue:[
12913
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   303
        ^ sensor ctrlDown not
12353
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   304
    ].
12913
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   305
    ^ sensor metaDown not
12353
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   306
!
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   307
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   308
keyPress:key x:x y:y in:view 
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   309
    "Handles an event in given view (a subview of codeView).
10588
Claus Gittinger <cg@exept.de>
parents: 10412
diff changeset
   310
     If the method returns true, it has eaten the event and it will not be processed
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   311
     by the view."
10588
Claus Gittinger <cg@exept.de>
parents: 10412
diff changeset
   312
12105
44e930e29b99 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 11741
diff changeset
   313
    <resource: #keyboard (#Control_L #Ctrl 
44e930e29b99 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 11741
diff changeset
   314
                          #CursorRight #CursorDown #CursorLeft #CursorUp)>
44e930e29b99 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 11741
diff changeset
   315
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   316
    |ev p|
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   317
12353
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   318
    (view == textView) ifTrue:[
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   319
        "/ ("ctrlDown" "key == #'Control_L' or:[ key == #Ctrl ]") ifTrue:[
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   320
        (textView isQuickMenuModifierPressed) ifTrue:[
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   321
            "/ because it is delegated, the position is not correct
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   322
            ev := WindowGroup lastEventQuerySignal query.
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   323
            p := view device translatePoint:(ev x @ ev y) fromView:ev view toView:view.
12353
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   324
            view sensor 
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   325
                pushUserEvent:#highlightElementAtX:y: 
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   326
                for: self 
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   327
                withArguments:{p x. p y.}.
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   328
            ^ false "/ true. -- no, dont eat the key
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   329
        ].
10661
367196dfc3f9 changed:
Claus Gittinger <cg@exept.de>
parents: 10653
diff changeset
   330
10709
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   331
"/        codeView reallyModified "textView modified" ifTrue:[
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   332
"/            self highlightClear. 
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   333
"/            codeView syntaxElements: nil.
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   334
"/            ^ false
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   335
"/        ].
12913
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   336
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   337
        view sensor metaDown ifTrue:[
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   338
            (key == #CursorRight or:[key == #CursorDown]) ifTrue:[
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   339
                view sensor pushUserEvent:#findNextVariableFromCursor for:self.
12930
658aaa9b2245 class: Tools::CodeNavigationService
Stefan Vogel <sv@exept.de>
parents: 12913
diff changeset
   340
            ] ifFalse:[(key == #CursorLeft or:[key == #CursorUp]) ifTrue:[
12913
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   341
                view sensor pushUserEvent:#findPreviousVariableFromCursor for:self.
12930
658aaa9b2245 class: Tools::CodeNavigationService
Stefan Vogel <sv@exept.de>
parents: 12913
diff changeset
   342
            ]].
10709
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   343
        ] ifFalse:[
12913
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   344
            (key == #CursorRight
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   345
              or:[key == #CursorDown
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   346
              or:[key == #CursorLeft
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   347
              or:[key == #CursorUp]]]
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   348
            ) ifTrue:[
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   349
                view sensor pushUserEvent:#highlightVariableAtCursor for:self .
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   350
            ] ifFalse:[
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   351
                view sensor pushUserEvent:#highlightClear for:self .
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   352
            ]
10709
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   353
        ]
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   354
    ].
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   355
    ^ false
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   356
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   357
    "Created: / 06-03-2010 / 20:50:45 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10661
367196dfc3f9 changed:
Claus Gittinger <cg@exept.de>
parents: 10653
diff changeset
   358
    "Modified: / 05-09-2011 / 05:17:30 / cg"
10727
b2fc73a2b1fe Try to fix the redraw bug
vrany
parents: 10709
diff changeset
   359
    "Modified: / 27-09-2011 / 19:24:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   360
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   361
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   362
keyRelease: key x:x y:y in: view
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   363
    "Handles an event in given view (a subview of codeView).
10588
Claus Gittinger <cg@exept.de>
parents: 10412
diff changeset
   364
     If the method returns true, it has eaten the event and it will not be processed
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   365
     by the view."
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   366
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   367
    |ev p|
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   368
12353
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   369
    (view == textView and:[textView isQuickMenuModifierReleased]) ifTrue:[
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   370
        "/    (view == textView and:[key == #'Control_L' or:[key == #Ctrl]]) ifTrue:[
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   371
        "/ because it is delegated, the position is not correct
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   372
        ev := WindowGroup lastEventQuerySignal query.
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   373
        p := view device translatePoint:(ev x @ ev y) fromView:ev view toView:view.
12913
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   374
 "/       self highlightClear. 
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   375
"/        view sensor pushUserEvent:#highlightClear for:self. 
12353
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   376
        ^ false "/ true -- do not eat the event
10588
Claus Gittinger <cg@exept.de>
parents: 10412
diff changeset
   377
    ].
Claus Gittinger <cg@exept.de>
parents: 10412
diff changeset
   378
    ^ false
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   379
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   380
    "Created: / 06-03-2010 / 21:03:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   381
    "Modified: / 21-08-2011 / 11:32:40 / cg"
10709
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   382
!
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   383
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   384
linesDeletedFrom: start to: end
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   385
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   386
    self highlightClear
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   387
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   388
    "Created: / 06-07-2011 / 17:14:36 / jv"
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   389
    "Created: / 16-09-2011 / 15:39:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   390
!
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   391
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   392
linesInsertedFrom: start to: end
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   393
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   394
    self highlightClear
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   395
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   396
    "Created: / 06-07-2011 / 17:14:36 / jv"
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   397
    "Created: / 16-09-2011 / 15:39:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   398
!
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   399
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   400
linesModifiedFrom: start to: end
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   401
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   402
    self highlightClear
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   403
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   404
    "Created: / 06-07-2011 / 17:14:36 / jv"
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   405
    "Created: / 16-09-2011 / 15:19:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   406
! !
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   407
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   408
!CodeNavigationService methodsFor:'initialization'!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   409
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   410
initialize
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   411
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   412
    super initialize.
13109
3eeb533e3874 codeView2 fixes
Claus Gittinger <cg@exept.de>
parents: 13103
diff changeset
   413
3eeb533e3874 codeView2 fixes
Claus Gittinger <cg@exept.de>
parents: 13103
diff changeset
   414
    "the following must only define a background - otherwise, syntax highlight fg is lost"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   415
    selectorEmphasis := self class defaultSelectorEmphasis.
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   416
    variableEmphasis := self class defaultVariableEmphasis.
12986
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   417
    assignmentEmphasis := self class defaultAssignmentEmphasis.
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   418
    linesToRedraw := OrderedCollection new.
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   419
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   420
    "Created: / 25-06-2010 / 14:05:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   421
! !
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   422
12994
0899f74ec3ce class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12986
diff changeset
   423
!CodeNavigationService methodsFor:'misc'!
0899f74ec3ce class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12986
diff changeset
   424
0899f74ec3ce class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12986
diff changeset
   425
highlightInstanceVariable:name
0899f74ec3ce class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12986
diff changeset
   426
    |element|
0899f74ec3ce class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12986
diff changeset
   427
0899f74ec3ce class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12986
diff changeset
   428
    element := (codeView syntaxElements ? #()) 
0899f74ec3ce class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12986
diff changeset
   429
                    detect:[:e |     
0899f74ec3ce class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12986
diff changeset
   430
                        e isVariable
0899f74ec3ce class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12986
diff changeset
   431
                        and:[ e isInstanceVariable
0899f74ec3ce class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12986
diff changeset
   432
                        and:[ e name = name ]]
0899f74ec3ce class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12986
diff changeset
   433
                    ] ifNone:nil.
12997
f03191d56013 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12994
diff changeset
   434
f03191d56013 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12994
diff changeset
   435
    self highlightClear.
f03191d56013 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12994
diff changeset
   436
    codeView syntaxElementSelection:nil.
f03191d56013 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12994
diff changeset
   437
    self highlightVariable:element.
12994
0899f74ec3ce class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12986
diff changeset
   438
! !
0899f74ec3ce class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12986
diff changeset
   439
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   440
!CodeNavigationService methodsFor:'private'!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   441
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   442
elementAtCursor
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   443
    ^self elementAtLine: textView cursorLine col: textView cursorCol - 1
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   444
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   445
    "Created: / 25-06-2010 / 14:39:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   446
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   447
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   448
elementAtLine:line col:colArg 
11740
fa674978dc41 changed:
Stefan Vogel <sv@exept.de>
parents: 10878
diff changeset
   449
    |characterPosition syntaxElements index element col|
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   450
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   451
    "/ if beyond end of line, do not advance into next line
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   452
    col := colArg min:(textView listAt:line) size.
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   453
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   454
    characterPosition := textView characterPositionOfLine:line col:col.
11740
fa674978dc41 changed:
Stefan Vogel <sv@exept.de>
parents: 10878
diff changeset
   455
    syntaxElements := codeView syntaxElements.
11741
3b6f1c31139f changed:
Stefan Vogel <sv@exept.de>
parents: 11740
diff changeset
   456
    syntaxElements isEmptyOrNil ifTrue:[
3b6f1c31139f changed:
Stefan Vogel <sv@exept.de>
parents: 11740
diff changeset
   457
        ^ nil.
3b6f1c31139f changed:
Stefan Vogel <sv@exept.de>
parents: 11740
diff changeset
   458
    ].
12913
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   459
    0"1" to:0 by:-1 do:[:d |
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   460
        index := (syntaxElements indexForInserting:characterPosition) - d.
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   461
        index > syntaxElements size ifTrue:[^nil].
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   462
        element := syntaxElements at:index ifAbsent:nil.
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   463
        element notNil ifTrue:[
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   464
            (characterPosition between: element start - 1 and: element stop) ifTrue:[^element].
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   465
        ].
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   466
    ].
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   467
    ^nil
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   468
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   469
    "Created: / 25-06-2010 / 14:40:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   470
    "Modified: / 21-08-2011 / 11:03:29 / cg"
10709
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   471
    "Modified: / 16-09-2011 / 17:04:06 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   472
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   473
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   474
elementAtX:x y:y 
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   475
    |visibleLine line col|
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   476
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   477
    codeView syntaxElements isNil ifTrue:[^nil].
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   478
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   479
    visibleLine := textView visibleLineOfY:y.
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   480
    col := textView colOfX:x inVisibleLine:visibleLine.
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   481
    line := textView visibleLineToAbsoluteLine:visibleLine.
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   482
    ^self elementAtLine:line col:col
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   483
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   484
    "Created: / 25-06-2010 / 14:52:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   485
    "Modified: / 01-08-2010 / 08:50:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   486
    "Modified: / 21-08-2011 / 10:26:08 / cg"
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   487
!
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   488
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   489
foo
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   490
|characterPosition index element |
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   491
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   492
characterPosition := 1
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   493
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   494
    "Created: / 21-08-2011 / 10:48:05 / cg"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   495
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   496
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   497
highlighEmphasisFor: element
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   498
10878
3424d00f9155 changed:
Claus Gittinger <cg@exept.de>
parents: 10727
diff changeset
   499
    element isNil ifTrue:[^nil].
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   500
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   501
    element isSelector ifTrue:[^selectorEmphasis].
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   502
    element isVariable ifTrue:[^variableEmphasis].
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   503
    element isSelf     ifTrue:[^variableEmphasis].
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   504
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   505
    ^nil
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   506
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   507
    "Created: / 25-06-2010 / 13:54:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10878
3424d00f9155 changed:
Claus Gittinger <cg@exept.de>
parents: 10727
diff changeset
   508
    "Modified: / 18-11-2011 / 14:58:05 / cg"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   509
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   510
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   511
highlightClear
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   512
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   513
    ^self highlightClear: true.
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   514
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   515
    "Modified: / 26-12-2007 / 12:28:05 / janfrog"
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   516
    "Created: / 25-06-2010 / 14:15:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10276
068f02c67fd7 changed:
Claus Gittinger <cg@exept.de>
parents: 10271
diff changeset
   517
    "Modified: / 08-07-2011 / 08:50:45 / cg"
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   518
    "Modified: / 20-07-2011 / 18:52:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   519
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   520
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   521
highlightClear: redraw
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   522
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   523
    codeView syntaxElementSelection == nil ifTrue:[ ^ self ].
12997
f03191d56013 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12994
diff changeset
   524
10878
3424d00f9155 changed:
Claus Gittinger <cg@exept.de>
parents: 10727
diff changeset
   525
    textView list isNil ifTrue:[ ^ self ].
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   526
    textView list withIndexDo:[:line :lineNo | 
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   527
        line isText ifTrue:[ 
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   528
            (line hasEmphasis: currentEmphasis) ifTrue:[
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   529
                line emphasisAllRemove:currentEmphasis.
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   530
                linesToRedraw add: lineNo.
12986
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   531
            ] ifFalse:[
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   532
                (currentEmphasisForAssign notNil and:[line hasEmphasis: currentEmphasisForAssign]) ifTrue:[
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   533
                    line emphasisAllRemove:currentEmphasisForAssign.
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   534
                    linesToRedraw add: lineNo.
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   535
                ]
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   536
            ]
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   537
        ] 
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   538
    ].
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   539
    codeView syntaxElementSelection:nil.
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   540
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   541
    redraw ifTrue:[self redrawLines].
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   542
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   543
    "Modified: / 26-12-2007 / 12:28:05 / janfrog"
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   544
    "Created: / 20-07-2011 / 18:52:19 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10878
3424d00f9155 changed:
Claus Gittinger <cg@exept.de>
parents: 10727
diff changeset
   545
    "Modified: / 18-11-2011 / 14:58:08 / cg"
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   546
!
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   547
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   548
highlightElement:element 
12997
f03191d56013 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12994
diff changeset
   549
    |e savedEmphasis currentSelection|
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   550
12997
f03191d56013 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12994
diff changeset
   551
    (currentSelection := codeView syntaxElementSelection) == element ifTrue:[ ^ self ]. "/ no change
f03191d56013 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12994
diff changeset
   552
    currentSelection notNil ifTrue:[
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   553
        self highlightClear: false.
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   554
    ].
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   555
12986
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   556
    currentEmphasis := savedEmphasis := self highlighEmphasisFor:element.
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   557
    currentEmphasisForAssign := nil.
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   558
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   559
    element notNil ifTrue:[ 
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   560
        codeView syntaxElementSelection:element.
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   561
        e := element firstElementInChain.
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   562
        [ e notNil ] whileTrue:[ 
12986
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   563
            e assigned ifTrue:[
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   564
                [
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   565
                    currentEmphasis := currentEmphasisForAssign := assignmentEmphasis.
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   566
                    self highlightWithoutClearFrom:e start to:e stop.
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   567
                ] ensure:[
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   568
                    currentEmphasis := savedEmphasis.
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   569
                ].
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   570
            ] ifFalse:[
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   571
                self highlightWithoutClearFrom:e start to:e stop.
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   572
            ].
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   573
            e := e nextElement 
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   574
        ].
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   575
    ].
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   576
    self redrawLines.
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   577
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   578
    "Created: / 14-02-2010 / 16:18:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   579
    "Modified: / 20-07-2011 / 18:52:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   580
    "Modified: / 21-08-2011 / 10:22:58 / cg"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   581
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   582
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   583
highlightElementAtCursor
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   584
    self highlightElementAtLine: textView cursorLine col: textView cursorCol
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   585
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   586
    "Created: / 14-02-2010 / 16:17:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   587
    "Modified: / 06-03-2010 / 19:59:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   588
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   589
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   590
highlightElementAtLine:line col:col 
11740
fa674978dc41 changed:
Stefan Vogel <sv@exept.de>
parents: 10878
diff changeset
   591
    |characterPosition syntaxElements index element|
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   592
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   593
    characterPosition := textView characterPositionOfLine:line col:col.
11740
fa674978dc41 changed:
Stefan Vogel <sv@exept.de>
parents: 10878
diff changeset
   594
    syntaxElements := codeView syntaxElements.
11741
3b6f1c31139f changed:
Stefan Vogel <sv@exept.de>
parents: 11740
diff changeset
   595
    syntaxElements isEmptyOrNil ifTrue:[self highlightElement:nil. ^ self].
11740
fa674978dc41 changed:
Stefan Vogel <sv@exept.de>
parents: 10878
diff changeset
   596
    index := syntaxElements indexForInserting:characterPosition.
fa674978dc41 changed:
Stefan Vogel <sv@exept.de>
parents: 10878
diff changeset
   597
    index > syntaxElements size ifTrue:[self highlightElement:nil. ^ self].
fa674978dc41 changed:
Stefan Vogel <sv@exept.de>
parents: 10878
diff changeset
   598
    element := syntaxElements at:index.
fa674978dc41 changed:
Stefan Vogel <sv@exept.de>
parents: 10878
diff changeset
   599
    (characterPosition between: element start and: element stop) ifFalse:[element := nil].
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   600
    self highlightElement:element
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   601
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   602
    "Created: / 14-02-2010 / 16:17:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   603
    "Modified: / 01-08-2010 / 08:50:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   604
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   605
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   606
highlightElementAtX:x y:y 
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   607
    |visibleLine line col|
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   608
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   609
    codeView syntaxElements isNil ifTrue:[^self].
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   610
    visibleLine := textView visibleLineOfY:y.
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   611
    col := textView colOfX:x inVisibleLine:visibleLine.
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   612
    line := textView visibleLineToAbsoluteLine:visibleLine.
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   613
    self highlightElementAtLine:line col:col
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   614
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   615
    "Created: / 14-02-2010 / 16:12:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   616
    "Modified: / 06-03-2010 / 20:06:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   617
    "Modified: / 21-08-2011 / 10:22:10 / cg"
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   618
!
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   619
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   620
highlightElementOrNil:e
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   621
    e notNil ifTrue:[
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   622
        "/ cg: only if selected !!
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   623
        "/ self halt.
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   624
        self highlightElement:e.
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   625
    ] ifFalse:[
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   626
        self highlightClear
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   627
    ].
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   628
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   629
    "Created: / 25-06-2010 / 14:52:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   630
    "Created: / 21-08-2011 / 09:56:39 / cg"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   631
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   632
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   633
highlightLine:lineNo fromLine:startLine col:endLine toLine:startCol col:endCol
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   634
    |line start end|
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   635
12913
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   636
    (lineNo between:startLine and:endLine) ifFalse:[ ^ self ].
12997
f03191d56013 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12994
diff changeset
   637
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   638
    line := textView listAt:lineNo.
10291
af5825474e18 changed: #highlightLine:fromLine:col:toLine:col:
Claus Gittinger <cg@exept.de>
parents: 10276
diff changeset
   639
    line isEmpty ifTrue:[^self].
12913
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   640
    start := (lineNo = startLine) 
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   641
                ifTrue:[ startCol  ] 
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   642
                ifFalse:[ line indexOfNonSeparator ].
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   643
    end := (lineNo = endLine) 
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   644
                ifTrue:[ endCol ] 
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   645
                ifFalse:[ line size ].
13109
3eeb533e3874 codeView2 fixes
Claus Gittinger <cg@exept.de>
parents: 13103
diff changeset
   646
    line    
3eeb533e3874 codeView2 fixes
Claus Gittinger <cg@exept.de>
parents: 13103
diff changeset
   647
        emphasisFrom:(start max: 1)
10291
af5825474e18 changed: #highlightLine:fromLine:col:toLine:col:
Claus Gittinger <cg@exept.de>
parents: 10276
diff changeset
   648
        to:(end min: line size)
13109
3eeb533e3874 codeView2 fixes
Claus Gittinger <cg@exept.de>
parents: 13103
diff changeset
   649
        add: currentEmphasis.
12913
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   650
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   651
    linesToRedraw add: lineNo.
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   652
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   653
    "Created: / 25-06-2010 / 14:15:39 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10291
af5825474e18 changed: #highlightLine:fromLine:col:toLine:col:
Claus Gittinger <cg@exept.de>
parents: 10276
diff changeset
   654
    "Modified: / 08-07-2011 / 13:02:51 / cg"
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   655
    "Modified: / 20-07-2011 / 18:43:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   656
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   657
12994
0899f74ec3ce class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12986
diff changeset
   658
highlightVariable:element 
0899f74ec3ce class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12986
diff changeset
   659
    (element notNil and:[ element isVariableOrSelf ]) ifTrue:[
0899f74ec3ce class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12986
diff changeset
   660
        self highlightElement:element.
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   661
    ] ifFalse:[
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   662
        self highlightClear.
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   663
    ].
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   664
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   665
    "Modified: / 20-07-2011 / 18:54:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   666
    "Modified: / 21-08-2011 / 09:39:42 / cg"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   667
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   668
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   669
highlightVariableAtCursor
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   670
    self highlightElementOrNil:(self elementAtCursor)
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   671
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   672
    "Modified: / 25-06-2010 / 14:53:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   673
    "Modified: / 21-08-2011 / 09:56:56 / cg"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   674
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   675
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   676
highlightVariableAtX:x y:y 
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   677
    self highlightElementOrNil:(self elementAtX:x y:y).
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   678
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   679
    "Created: / 25-06-2010 / 14:52:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   680
    "Modified: / 21-08-2011 / 10:24:50 / cg"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   681
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   682
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   683
highlightWithoutClearFrom: start to: end
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   684
    "Remove underlined emphasis"
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   685
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   686
    |startLine startCol endLine endCol|
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   687
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   688
    startLine := textView lineOfCharacterPosition:start.
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   689
    startCol := start - (textView characterPositionOfLine:startLine col:1) + 1.
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   690
    endLine := textView lineOfCharacterPosition:end.
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   691
    endCol := end - (textView characterPositionOfLine:endLine col:1) + 1.
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   692
    self highlightWithoutClearFromLine: startLine col: startCol toLine: endLine col: endCol
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   693
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   694
    "Created: / 25-06-2010 / 14:15:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   695
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   696
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   697
highlightWithoutClearFromLine: startLine col: startCol toLine: endLine col: endCol 
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   698
12913
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   699
    textView list keysAndValuesDo: [:lineNo :line|
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   700
        line isText ifTrue: [
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   701
            self highlightLine: lineNo fromLine: startLine col: endLine toLine: startCol col: endCol
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   702
        ]
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   703
    ].
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   704
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   705
    "Created: / 25-06-2010 / 14:15:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   706
! !
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   707
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   708
!CodeNavigationService methodsFor:'redrawing'!
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   709
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   710
redrawLines
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   711
    linesToRedraw do:[:lineNo|
10588
Claus Gittinger <cg@exept.de>
parents: 10412
diff changeset
   712
        textView invalidateLine: lineNo.
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   713
    ].
12997
f03191d56013 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12994
diff changeset
   714
    linesToRedraw := OrderedCollection new
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   715
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   716
    "Created: / 20-07-2011 / 18:45:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10588
Claus Gittinger <cg@exept.de>
parents: 10412
diff changeset
   717
    "Modified (format): / 18-08-2011 / 16:01:34 / cg"
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   718
! !
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   719
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   720
!CodeNavigationService class methodsFor:'documentation'!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   721
12486
0a82f2fcb6b3 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12485
diff changeset
   722
version
13203
909820bee403 class: Tools::XXXService
Claus Gittinger <cg@exept.de>
parents: 13109
diff changeset
   723
    ^ '$Header: /cvs/stx/stx/libtool/Tools__CodeNavigationService.st,v 1.31 2013-07-22 12:02:12 cg Exp $'
12486
0a82f2fcb6b3 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12485
diff changeset
   724
!
0a82f2fcb6b3 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12485
diff changeset
   725
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   726
version_CVS
13203
909820bee403 class: Tools::XXXService
Claus Gittinger <cg@exept.de>
parents: 13109
diff changeset
   727
    ^ '$Header: /cvs/stx/stx/libtool/Tools__CodeNavigationService.st,v 1.31 2013-07-22 12:02:12 cg Exp $'
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   728
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   729
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   730
version_SVN
13203
909820bee403 class: Tools::XXXService
Claus Gittinger <cg@exept.de>
parents: 13109
diff changeset
   731
    ^ '$Id: Tools__CodeNavigationService.st,v 1.31 2013-07-22 12:02:12 cg Exp $'
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   732
! !
12105
44e930e29b99 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 11741
diff changeset
   733