Tools__CodeNavigationService.st
author Patrik Svestka <patrik.svestka@gmail.com>
Thu, 09 Jun 2022 08:59:11 +0200
branchjv
changeset 19639 03574c4eff56
parent 19608 98f7cba0ce8c
permissions -rw-r--r--
Replacing obsolete method with newer version Fixes an error from settings/tools/editor/code edit2
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
19608
98f7cba0ce8c Theming: add support for theming navigation service's styles
Jan Vrany <jan.vrany@labware.com>
parents: 17136
diff changeset
     3
 COPYRIGHT (c) 2021 LabWare
10076
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
     4
              All Rights Reserved
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
10076
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
     6
Permission is hereby granted, free of charge, to any person
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
     7
obtaining a copy of this software and associated documentation
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
     8
files (the 'Software'), to deal in the Software without
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
     9
restriction, including without limitation the rights to use,
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    10
copy, modify, merge, publish, distribute, sublicense, and/or sell
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    11
copies of the Software, and to permit persons to whom the
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    12
Software is furnished to do so, subject to the following
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    13
conditions:
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    14
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    15
The above copyright notice and this permission notice shall be
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    16
included in all copies or substantial portions of the Software.
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    17
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    18
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    19
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    20
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    21
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    22
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    23
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    24
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
    25
OTHER DEALINGS IN THE SOFTWARE.
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
"
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
"{ Package: 'stx:libtool' }"
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
"{ NameSpace: Tools }"
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
CodeViewService subclass:#CodeNavigationService
13533
827c4bb6abbe class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13463
diff changeset
    32
	instanceVariableNames:'lastHighlightedElement selectorEmphasis variableEmphasis
827c4bb6abbe class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13463
diff changeset
    33
		currentEmphasis currentEmphasisForAssign linesToRedraw menuShown
12986
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
    34
		assignmentEmphasis'
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
    35
	classVariableNames:'DefaultVariableEmphasis DefaultSelectorEmphasis
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
    36
		DefaultAssignmentEmphasis'
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
	poolDictionaries:''
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
	category:'Interface-CodeView'
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
!CodeNavigationService class methodsFor:'documentation'!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
copyright
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
"
10076
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    45
 COPYRIGHT (c) 2010 by Jan Vrany, SWING Research Group. CTU in Prague
19608
98f7cba0ce8c Theming: add support for theming navigation service's styles
Jan Vrany <jan.vrany@labware.com>
parents: 17136
diff changeset
    46
 COPYRIGHT (c) 2021 LabWare
10076
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    47
              All Rights Reserved
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    48
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    49
Permission is hereby granted, free of charge, to any person
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    50
obtaining a copy of this software and associated documentation
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    51
files (the 'Software'), to deal in the Software without
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    52
restriction, including without limitation the rights to use,
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    53
copy, modify, merge, publish, distribute, sublicense, and/or sell
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    54
copies of the Software, and to permit persons to whom the
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    55
Software is furnished to do so, subject to the following
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    56
conditions:
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
10076
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    58
The above copyright notice and this permission notice shall be
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    59
included in all copies or substantial portions of the Software.
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    60
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    61
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    62
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    63
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    64
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    65
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    66
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
6d9055a907ff changed: #copyright
Claus Gittinger <cg@exept.de>
parents: 9979
diff changeset
    67
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
    68
OTHER DEALINGS IN THE SOFTWARE.
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
"
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
! !
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
15470
e59f6dc9d610 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 15458
diff changeset
    72
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
!CodeNavigationService class methodsFor:'accessing'!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
label
13103
307e48c216de class: Tools::LintService
Claus Gittinger <cg@exept.de>
parents: 12997
diff changeset
    76
    "Answers a short label - for UI"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
    ^'Semi-modal Code Navigation'
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
    "Created: / 07-03-2010 / 14:00:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10412
cc7a72f29805 Fixes for debugger
vrany
parents: 10361
diff changeset
    81
!
cc7a72f29805 Fixes for debugger
vrany
parents: 10361
diff changeset
    82
cc7a72f29805 Fixes for debugger
vrany
parents: 10361
diff changeset
    83
requiredServices
cc7a72f29805 Fixes for debugger
vrany
parents: 10361
diff changeset
    84
cc7a72f29805 Fixes for debugger
vrany
parents: 10361
diff changeset
    85
    ^#(#'Tools::CodeHighlightingService')
cc7a72f29805 Fixes for debugger
vrany
parents: 10361
diff changeset
    86
cc7a72f29805 Fixes for debugger
vrany
parents: 10361
diff changeset
    87
    "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
    88
! !
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
!CodeNavigationService class methodsFor:'accessing - defaults'!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
12986
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
    92
defaultAssignmentEmphasis
13109
3eeb533e3874 codeView2 fixes
Claus Gittinger <cg@exept.de>
parents: 13103
diff changeset
    93
    "must only define a background - otherwise, syntax highlight fg is lost"
3eeb533e3874 codeView2 fixes
Claus Gittinger <cg@exept.de>
parents: 13103
diff changeset
    94
12986
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
    95
    DefaultAssignmentEmphasis isNil ifTrue:[
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
    96
        ^ Array with:(#backgroundColor -> (UserPreferences current assignmentBackgroundColorForNavigationService))
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
    97
    ].
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
    98
    ^ DefaultAssignmentEmphasis
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
    99
!
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   100
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
defaultSelectorEmphasis
13109
3eeb533e3874 codeView2 fixes
Claus Gittinger <cg@exept.de>
parents: 13103
diff changeset
   102
    "must only define a background - otherwise, syntax highlight fg is lost"
3eeb533e3874 codeView2 fixes
Claus Gittinger <cg@exept.de>
parents: 13103
diff changeset
   103
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   104
    DefaultSelectorEmphasis isNil ifTrue:[
12486
0a82f2fcb6b3 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12485
diff changeset
   105
        ^ Array with:(#backgroundColor -> (UserPreferences current selectorBackgroundColorForNavigationService))
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   106
    ].
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   107
    ^ DefaultSelectorEmphasis
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   108
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   109
    "Modified: / 21-08-2011 / 09:58:18 / cg"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
defaultVariableEmphasis
13109
3eeb533e3874 codeView2 fixes
Claus Gittinger <cg@exept.de>
parents: 13103
diff changeset
   113
    "must only define a background - otherwise, syntax highlight fg is lost"
3eeb533e3874 codeView2 fixes
Claus Gittinger <cg@exept.de>
parents: 13103
diff changeset
   114
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   115
    DefaultVariableEmphasis isNil ifTrue:[
12486
0a82f2fcb6b3 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12485
diff changeset
   116
        ^ Array with:(#backgroundColor -> (UserPreferences current variableBackgroundColorForNavigationService))
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   117
    ].
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   118
    ^ DefaultVariableEmphasis
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
    "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
   121
    "Modified: / 21-08-2011 / 11:04:20 / cg"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
! !
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
13203
909820bee403 class: Tools::XXXService
Claus Gittinger <cg@exept.de>
parents: 13109
diff changeset
   124
!CodeNavigationService class methodsFor:'testing'!
909820bee403 class: Tools::XXXService
Claus Gittinger <cg@exept.de>
parents: 13109
diff changeset
   125
909820bee403 class: Tools::XXXService
Claus Gittinger <cg@exept.de>
parents: 13109
diff changeset
   126
isUsefulFor:aCodeView
909820bee403 class: Tools::XXXService
Claus Gittinger <cg@exept.de>
parents: 13109
diff changeset
   127
    "this filters useful services.
909820bee403 class: Tools::XXXService
Claus Gittinger <cg@exept.de>
parents: 13109
diff changeset
   128
     Redefined to return true for myself - not for subclasses"
909820bee403 class: Tools::XXXService
Claus Gittinger <cg@exept.de>
parents: 13109
diff changeset
   129
909820bee403 class: Tools::XXXService
Claus Gittinger <cg@exept.de>
parents: 13109
diff changeset
   130
    ^ self == Tools::CodeNavigationService
909820bee403 class: Tools::XXXService
Claus Gittinger <cg@exept.de>
parents: 13109
diff changeset
   131
909820bee403 class: Tools::XXXService
Claus Gittinger <cg@exept.de>
parents: 13109
diff changeset
   132
    "Created: / 22-07-2013 / 13:59:20 / cg"
909820bee403 class: Tools::XXXService
Claus Gittinger <cg@exept.de>
parents: 13109
diff changeset
   133
! !
909820bee403 class: Tools::XXXService
Claus Gittinger <cg@exept.de>
parents: 13109
diff changeset
   134
10651
7ab02ade36e2 added: #update:with:from:
Claus Gittinger <cg@exept.de>
parents: 10631
diff changeset
   135
!CodeNavigationService methodsFor:'change & update'!
7ab02ade36e2 added: #update:with:from:
Claus Gittinger <cg@exept.de>
parents: 10631
diff changeset
   136
7ab02ade36e2 added: #update:with:from:
Claus Gittinger <cg@exept.de>
parents: 10631
diff changeset
   137
update: aspect with: param from: sender
10661
367196dfc3f9 changed:
Claus Gittinger <cg@exept.de>
parents: 10653
diff changeset
   138
    sender == textView modifiedChannel ifTrue:[
367196dfc3f9 changed:
Claus Gittinger <cg@exept.de>
parents: 10653
diff changeset
   139
        codeView reallyModified ifTrue:[
367196dfc3f9 changed:
Claus Gittinger <cg@exept.de>
parents: 10653
diff changeset
   140
            "/ no longer highlight - the info is wrong anyway !!
367196dfc3f9 changed:
Claus Gittinger <cg@exept.de>
parents: 10653
diff changeset
   141
            self highlightClear.
367196dfc3f9 changed:
Claus Gittinger <cg@exept.de>
parents: 10653
diff changeset
   142
        ].
367196dfc3f9 changed:
Claus Gittinger <cg@exept.de>
parents: 10653
diff changeset
   143
    ].
367196dfc3f9 changed:
Claus Gittinger <cg@exept.de>
parents: 10653
diff changeset
   144
10653
0f30edd43161 changed halt to breakPoint: in #update:with:from:
vrany
parents: 10651
diff changeset
   145
    "JV: I changed 'halt' to 'breakPoint: #cg'"
10651
7ab02ade36e2 added: #update:with:from:
Claus Gittinger <cg@exept.de>
parents: 10631
diff changeset
   146
7ab02ade36e2 added: #update:with:from:
Claus Gittinger <cg@exept.de>
parents: 10631
diff changeset
   147
    "Created: / 22-08-2011 / 16:22:19 / cg"
10653
0f30edd43161 changed halt to breakPoint: in #update:with:from:
vrany
parents: 10651
diff changeset
   148
    "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
   149
    "Modified: / 05-09-2011 / 05:15:42 / cg"
10651
7ab02ade36e2 added: #update:with:from:
Claus Gittinger <cg@exept.de>
parents: 10631
diff changeset
   150
! !
7ab02ade36e2 added: #update:with:from:
Claus Gittinger <cg@exept.de>
parents: 10631
diff changeset
   151
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
!CodeNavigationService methodsFor:'code services'!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   154
browseClass:class 
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   155
    self browser isNil ifTrue:[ ^ NewSystemBrowser browseClass:class ].
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
    (UserPreferences current alwaysOpenNewTabWhenCtrlClick 
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   157
        or:[ self browser navigationState modified ]) 
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   158
            ifTrue:[
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   159
                self browser 
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   160
                    spawnFullBrowserInClass:class
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   161
                    selector:nil
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   162
                    in:#newBuffer
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   163
            ]
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   164
            ifFalse:[ self browser switchToClass:class ]
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
    "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
   167
    "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
   168
    "Modified: / 21-08-2011 / 10:07:30 / cg"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
browser
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
    ^codeView browserHolder value
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
    "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
   176
! !
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
!CodeNavigationService methodsFor:'event handling'!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
button1Press
13866
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   181
    | node |
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
13866
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   183
    node := codeView currentParseNode.
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   184
    node isNil ifTrue:[ 
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   185
        ^ 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
   186
    ].
13866
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   187
    node isSelector ifTrue:[
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   188
        self button1PressForMessageNode: node.
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   189
        ^self.
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   190
    ].
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   191
    node isVariable ifTrue:[
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   192
        self button1PressForVariableNode: node.
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   193
        ^self.
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   194
    ].
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   195
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   196
    ^self.
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
    "Created: / 14-02-2010 / 18:43:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
13866
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   199
    "Modified: / 18-11-2011 / 14:58:02 / cg"
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   200
    "Modified: / 21-02-2012 / 14:30:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   201
!
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   202
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   203
button1PressForMessageNode: node
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   204
14058
6018db6ddc02 Fixes in CodeNavigationService - semi-modal navigation should work again.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14004
diff changeset
   205
    ^self button1PressForSelector: node selector.
13866
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   206
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   207
    "Created: / 21-02-2012 / 14:30:10 / Jan Vrany <jan.vrany@fit.cvut.cz>"
14058
6018db6ddc02 Fixes in CodeNavigationService - semi-modal navigation should work again.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14004
diff changeset
   208
    "Modified: / 25-02-2014 / 22:11:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   211
button1PressForSelector: selector
12867
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   212
    | impls |
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   213
10254
43001ebe1490 Merged with JV's branch
vrany
parents: 10076
diff changeset
   214
    impls := codeView implementorsOf: selector.
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   215
    "/ impls size = 1 ifTrue:[^codeView browseMethod: impls anyOne].
12867
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   216
    [
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   217
        menuShown := codeView implementorsMenu: impls selector: selector.
13405
071eccc590bb class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13203
diff changeset
   218
        "/ cg: why is this done?
071eccc590bb class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13203
diff changeset
   219
        "/ self highlightClear.
12867
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   220
        menuShown showAtPointer.
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   221
    ] ensure:[
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   222
        menuShown := nil
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   223
    ].
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   224
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   225
    "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
   226
    "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
   227
    "Modified: / 07-07-2011 / 17:16:23 / jv"
13405
071eccc590bb class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13203
diff changeset
   228
    "Modified (comment): / 29-08-2013 / 16:27:58 / cg"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   229
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   230
13866
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   231
button1PressForVariableNode: node
14128
9be54971efa0 FIxed semi-model navigation for classes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14058
diff changeset
   232
    | name value |
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   233
13866
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   234
    node isGlobalVariable ifTrue:[
14128
9be54971efa0 FIxed semi-model navigation for classes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14058
diff changeset
   235
        value := nil.
9be54971efa0 FIxed semi-model navigation for classes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14058
diff changeset
   236
        name := node name asSymbolIfInterned.
9be54971efa0 FIxed semi-model navigation for classes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14058
diff changeset
   237
        name notNil ifTrue:[
9be54971efa0 FIxed semi-model navigation for classes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14058
diff changeset
   238
            value := Smalltalk at: name.
9be54971efa0 FIxed semi-model navigation for classes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14058
diff changeset
   239
        ].
13866
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   240
        value notNil ifTrue:[
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   241
            value isBehavior ifTrue:[
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   242
                self browseClass: value.
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   243
            ] ifFalse:[
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   244
                value inspect.
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   245
            ]
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   246
        ]
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   247
    ]
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   248
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   249
    "Created: / 21-02-2012 / 14:30:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
14128
9be54971efa0 FIxed semi-model navigation for classes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14058
diff changeset
   250
    "Modified: / 07-03-2014 / 22:17:41 / Jan Vrany <jan.vrany@fit.cvut.cz>"
13866
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   251
!
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   252
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   253
button2Press
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   254
14448
e1cfd3e4826b fixed ALT-right click (senders of selector under cursor)
az
parents: 14204
diff changeset
   255
    | sel node|
e1cfd3e4826b fixed ALT-right click (senders of selector under cursor)
az
parents: 14204
diff changeset
   256
13866
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   257
    sel := codeView syntaxElementSelection.
14448
e1cfd3e4826b fixed ALT-right click (senders of selector under cursor)
az
parents: 14204
diff changeset
   258
    (sel notNil 
e1cfd3e4826b fixed ALT-right click (senders of selector under cursor)
az
parents: 14204
diff changeset
   259
      and:[(node := sel node) isMessage 
e1cfd3e4826b fixed ALT-right click (senders of selector under cursor)
az
parents: 14204
diff changeset
   260
           or:[node isSelector]]
e1cfd3e4826b fixed ALT-right click (senders of selector under cursor)
az
parents: 14204
diff changeset
   261
    ) ifTrue:[
e1cfd3e4826b fixed ALT-right click (senders of selector under cursor)
az
parents: 14204
diff changeset
   262
        ^self button2PressForSelector: node selector
e1cfd3e4826b fixed ALT-right click (senders of selector under cursor)
az
parents: 14204
diff changeset
   263
    ].
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   264
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   265
    "Created: / 14-02-2010 / 18:43:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
13866
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   266
    "Modified: / 08-03-2012 / 16:49:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
14448
e1cfd3e4826b fixed ALT-right click (senders of selector under cursor)
az
parents: 14204
diff changeset
   267
    "Modified (format): / 04-06-2014 / 11:09:33 / az"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   268
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   269
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   270
button2PressForSelector: selector
12867
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   271
    | senders |
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   272
13422
86835045a828 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13405
diff changeset
   273
    [
86835045a828 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13405
diff changeset
   274
        senders := codeView sendersOf: selector.
86835045a828 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13405
diff changeset
   275
    ] valueWithTimeout:(500 milliseconds). 
86835045a828 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13405
diff changeset
   276
    senders isNil ifTrue:[^ self].
86835045a828 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13405
diff changeset
   277
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   278
    "/ senders size = 1 ifTrue:[ codeView browseMethod: senders anyOne. ^ self].
12867
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   279
    [
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   280
        menuShown := codeView sendersMenu: senders selector: selector.
13405
071eccc590bb class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13203
diff changeset
   281
        "/ cg: why is this done?
071eccc590bb class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13203
diff changeset
   282
        "/ self highlightClear.
12867
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   283
        menuShown showAtPointer.
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   284
    ] ensure:[
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   285
        menuShown := nil.
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   286
    ].
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   287
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   288
    "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
   289
    "Modified: / 30-06-2011 / 19:34:43 / Jan Vrany <jan.vrany@fit.cvut.cz>"
13405
071eccc590bb class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13203
diff changeset
   290
    "Modified: / 28-08-2013 / 21:59:26 / cg"
071eccc590bb class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13203
diff changeset
   291
    "Modified (comment): / 29-08-2013 / 16:28:03 / cg"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   292
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   293
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   294
buttonMotion:button x:x y:y in:view 
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   295
    "Handles an event in given view (a subview of codeView).
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   296
     If the method returns true, the event will not be processed
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   297
     by the view."
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   298
    
14004
ee41e156d189 class: Tools::CodeNavigationService
Stefan Vogel <sv@exept.de>
parents: 13946
diff changeset
   299
    (view == textView and:[ textView isQuickMenuModifierPressed ]) ifTrue:[
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   300
        self highlightElementAtX:x y:y.
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   301
        ^ true
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   302
    ].
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   303
    ^ false
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   304
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   305
    "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
   306
    "Modified (format): / 21-08-2011 / 10:07:15 / cg"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   307
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   308
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   309
buttonPress: button x:x y:y in: view
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   310
    "Handles an event in given view (a subview of codeView).
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   311
     If the method returns true, the event will not be processed
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   312
     by the view."
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   313
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   314
    (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
   315
        textView isQuickMenuModifierPressed ifTrue:[
13699
462794004446 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13564
diff changeset
   316
            button == 1      ifTrue: [
462794004446 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13564
diff changeset
   317
                codeView sensor shiftDown ifTrue:[
462794004446 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13564
diff changeset
   318
                    ^self button2Press
462794004446 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13564
diff changeset
   319
                ].
462794004446 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13564
diff changeset
   320
                ^self button1Press
462794004446 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13564
diff changeset
   321
            ].
12353
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   322
            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
   323
            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
   324
        ] ifFalse:[
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   325
            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
   326
                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
   327
            ]
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   328
        ]
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   329
    ].
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   330
    ^false
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   331
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   332
    "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
   333
    "Modified: / 25-06-2010 / 14:53:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
13699
462794004446 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13564
diff changeset
   334
    "Modified: / 01-12-2013 / 23:42:02 / cg"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   335
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   336
12867
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   337
buttonRelease: button x:x y:y in: view
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   338
    "Handles an event in given view (a subview of codeView).
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   339
     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
   340
     by the view."
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   341
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   342
    "/ 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
   343
    ^ menuShown notNil
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   344
!
03a18d91ded1 faster quick senders menu.
Claus Gittinger <cg@exept.de>
parents: 12486
diff changeset
   345
13561
14ca499f0ca4 Pass programming language when asking DWIM to complete code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13536
diff changeset
   346
findNextVariableFromCursor
13564
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   347
    | currentElement nextElement |
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   348
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   349
    codeView hasSelection ifTrue:[
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   350
        currentElement := self elementAtLine: textView selectionStartLine col: textView selectionStartCol.
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   351
    ] ifFalse:[
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   352
        currentElement := codeView syntaxElementSelection.
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   353
    ].
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   354
    currentElement isVariable ifTrue:[
15458
c910159068d9 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 15325
diff changeset
   355
        nextElement := currentElement nextElement.
13564
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   356
        nextElement notNil ifTrue:[
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   357
            textView selectFrom: nextElement start to: nextElement stop. 
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   358
        ]
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   359
    ]
13561
14ca499f0ca4 Pass programming language when asking DWIM to complete code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13536
diff changeset
   360
14ca499f0ca4 Pass programming language when asking DWIM to complete code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13536
diff changeset
   361
    "Created: / 18-09-2013 / 13:15:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
14ca499f0ca4 Pass programming language when asking DWIM to complete code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13536
diff changeset
   362
!
14ca499f0ca4 Pass programming language when asking DWIM to complete code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13536
diff changeset
   363
14ca499f0ca4 Pass programming language when asking DWIM to complete code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13536
diff changeset
   364
findPreviousVariableFromCursor
13564
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   365
    | currentElement prevElement |
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   366
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   367
    codeView hasSelection ifTrue:[
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   368
        currentElement := self elementAtLine: textView selectionStartLine col: textView selectionStartCol.
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   369
    ] ifFalse:[
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   370
        currentElement := codeView syntaxElementSelection.
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   371
    ].
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   372
    currentElement isVariable ifTrue:[
15458
c910159068d9 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 15325
diff changeset
   373
        prevElement := currentElement previousElement.
13564
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   374
        prevElement notNil ifTrue:[
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   375
            textView selectFrom: prevElement start to: prevElement stop. 
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   376
        ]
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   377
    ]
13561
14ca499f0ca4 Pass programming language when asking DWIM to complete code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13536
diff changeset
   378
14ca499f0ca4 Pass programming language when asking DWIM to complete code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13536
diff changeset
   379
    "Created: / 18-09-2013 / 13:15:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
14ca499f0ca4 Pass programming language when asking DWIM to complete code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13536
diff changeset
   380
!
14ca499f0ca4 Pass programming language when asking DWIM to complete code
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13536
diff changeset
   381
12353
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   382
isQuickMenuModifierPressed
13405
071eccc590bb class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13203
diff changeset
   383
    ^ textView isQuickMenuModifierPressed
071eccc590bb class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13203
diff changeset
   384
"/
071eccc590bb class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13203
diff changeset
   385
"/    sensor := textView sensor.
071eccc590bb class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13203
diff changeset
   386
"/    UserPreferences current codeView2QuickSendersAndImplementorsOnControl ifTrue:[
071eccc590bb class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13203
diff changeset
   387
"/        ^ sensor ctrlDown
071eccc590bb class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13203
diff changeset
   388
"/    ].
071eccc590bb class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13203
diff changeset
   389
"/    ^ sensor metaDown
12913
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   390
13405
071eccc590bb class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13203
diff changeset
   391
    "Modified: / 28-08-2013 / 22:13:18 / cg"
12353
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   392
!
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   393
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   394
isQuickMenuModifierReleased
12913
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   395
    |sensor|
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   396
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   397
    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
   398
    UserPreferences current codeView2QuickSendersAndImplementorsOnControl ifTrue:[
12913
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   399
        ^ 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
   400
    ].
12913
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   401
    ^ 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
   402
!
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   403
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   404
keyPress:key x:x y:y in:view 
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   405
    "Handles an event in given view (a subview of codeView).
10588
Claus Gittinger <cg@exept.de>
parents: 10412
diff changeset
   406
     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
   407
     by the view."
10588
Claus Gittinger <cg@exept.de>
parents: 10412
diff changeset
   408
12105
44e930e29b99 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 11741
diff changeset
   409
    <resource: #keyboard (#Control_L #Ctrl 
44e930e29b99 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 11741
diff changeset
   410
                          #CursorRight #CursorDown #CursorLeft #CursorUp)>
44e930e29b99 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 11741
diff changeset
   411
13463
3b75183ce219 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13422
diff changeset
   412
    |ev p sensor|
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   413
12353
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   414
    (view == textView) ifTrue:[
13463
3b75183ce219 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13422
diff changeset
   415
        sensor := view sensor.
3b75183ce219 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13422
diff changeset
   416
12353
9d725076871b changed default for Jan's quick menus to use the ALT button isntead
Claus Gittinger <cg@exept.de>
parents: 12105
diff changeset
   417
        "/ ("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
   418
        (textView isQuickMenuModifierPressed) ifTrue:[
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   419
            "/ because it is delegated, the position is not correct
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   420
            ev := WindowGroup lastEventQuerySignal query.
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   421
            p := view device translatePoint:(ev x @ ev y) fromView:ev view toView:view.
13463
3b75183ce219 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13422
diff changeset
   422
            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
   423
                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
   424
                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
   425
                withArguments:{p x. p y.}.
17040
84e03a037118 #DOCUMENTATION by cg
Claus Gittinger <cg@exept.de>
parents: 16294
diff changeset
   426
            ^ false "/ true. -- no, don't eat the key
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   427
        ].
10661
367196dfc3f9 changed:
Claus Gittinger <cg@exept.de>
parents: 10653
diff changeset
   428
10709
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   429
"/        codeView reallyModified "textView modified" ifTrue:[
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   430
"/            self highlightClear. 
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   431
"/            codeView syntaxElements: nil.
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   432
"/            ^ false
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   433
"/        ].
12913
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   434
13564
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   435
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   436
        (key == #FocusNext) ifTrue:[
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   437
            sensor pushUserEvent:#findNextVariableFromCursor for:self.            
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   438
            ^ true.
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   439
        ].
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   440
        (key == #FocusPrevious) ifTrue:[
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   441
            sensor pushUserEvent:#findPreviousVariableFromCursor for:self.
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   442
            ^ true.
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   443
        ].
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   444
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   445
        (key == #CursorRight
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   446
          or:[key == #CursorDown
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   447
          or:[key == #CursorLeft
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   448
          or:[key == #CursorUp]]]
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   449
        ) ifTrue:[
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   450
            sensor pushUserEvent:#highlightVariableAtCursor for:self .
10709
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   451
        ] ifFalse:[
13564
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   452
            "/ sensor pushUserEvent:#highlightClear for:self .
10709
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   453
        ]
13564
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   454
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   455
    ].
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   456
    ^ false
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   457
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   458
    "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
   459
    "Modified: / 05-09-2011 / 05:17:30 / cg"
13564
05ed2f6a11ab class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13561
diff changeset
   460
    "Modified: / 18-09-2013 / 15:20:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   461
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   462
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   463
keyRelease: key x:x y:y in: view
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   464
    "Handles an event in given view (a subview of codeView).
10588
Claus Gittinger <cg@exept.de>
parents: 10412
diff changeset
   465
     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
   466
     by the view."
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   467
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   468
    |ev p|
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   469
14204
bee53f8e01ca class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 14128
diff changeset
   470
"/    (view == textView and:[textView isQuickMenuModifierReleased]) ifTrue:[
bee53f8e01ca class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 14128
diff changeset
   471
"/        "/    (view == textView and:[key == #'Control_L' or:[key == #Ctrl]]) ifTrue:[
bee53f8e01ca class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 14128
diff changeset
   472
"/        "/ because it is delegated, the position is not correct
bee53f8e01ca class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 14128
diff changeset
   473
"/        ev := WindowGroup lastEventQuerySignal query.
bee53f8e01ca class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 14128
diff changeset
   474
"/        p := view device translatePoint:(ev x @ ev y) fromView:ev view toView:view.
bee53f8e01ca class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 14128
diff changeset
   475
"/ "/       self highlightClear. 
bee53f8e01ca class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 14128
diff changeset
   476
"/ "/        view sensor pushUserEvent:#highlightClear for:self. 
bee53f8e01ca class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 14128
diff changeset
   477
"/        ^ false "/ true -- do not eat the event
bee53f8e01ca class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 14128
diff changeset
   478
"/    ].
10588
Claus Gittinger <cg@exept.de>
parents: 10412
diff changeset
   479
    ^ false
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   480
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   481
    "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
   482
    "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
   483
!
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   484
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   485
linesDeletedFrom: start to: end
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   486
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   487
    self highlightClear
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   488
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   489
    "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
   490
    "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
   491
!
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   492
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   493
linesInsertedFrom: start to: end
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   494
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   495
    self highlightClear
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   496
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   497
    "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
   498
    "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
   499
!
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   500
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   501
linesModifiedFrom: start to: end
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   502
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   503
    self highlightClear
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   504
e3257bcab5de Fixes for syntax highlighting and code navigation. Now it should work fine debugger.
vrany
parents: 10661
diff changeset
   505
    "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
   506
    "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
   507
! !
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   508
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   509
!CodeNavigationService methodsFor:'initialization'!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   510
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   511
initialize
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   512
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   513
    super initialize.
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   514
    linesToRedraw := OrderedCollection new.
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   515
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   516
    "Created: / 25-06-2010 / 14:05:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
19608
98f7cba0ce8c Theming: add support for theming navigation service's styles
Jan Vrany <jan.vrany@labware.com>
parents: 17136
diff changeset
   517
    "Modified: / 15-09-2021 / 21:18:34 / Jan Vrany <jan.vrany@labware.com>"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   518
! !
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   519
12994
0899f74ec3ce class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12986
diff changeset
   520
!CodeNavigationService methodsFor:'misc'!
0899f74ec3ce class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12986
diff changeset
   521
15172
26249a020c0f class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 14448
diff changeset
   522
highlightClassVariable:name
26249a020c0f class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 14448
diff changeset
   523
    "interface from browser (when a class var is selected)"
26249a020c0f class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 14448
diff changeset
   524
26249a020c0f class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 14448
diff changeset
   525
    self highlightVariable:name isClassVariable:true
26249a020c0f class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 14448
diff changeset
   526
!
26249a020c0f class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 14448
diff changeset
   527
12994
0899f74ec3ce class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12986
diff changeset
   528
highlightInstanceVariable:name
15172
26249a020c0f class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 14448
diff changeset
   529
    "interface from browser (when an inst var is selected)"
26249a020c0f class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 14448
diff changeset
   530
26249a020c0f class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 14448
diff changeset
   531
    self highlightVariable:name isClassVariable:false
26249a020c0f class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 14448
diff changeset
   532
!
26249a020c0f class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 14448
diff changeset
   533
26249a020c0f class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 14448
diff changeset
   534
highlightVariable:name isClassVariable:isClassVariable
26249a020c0f class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 14448
diff changeset
   535
    "interface from browser (when an inst or class var is selected)"
26249a020c0f class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 14448
diff changeset
   536
12994
0899f74ec3ce class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12986
diff changeset
   537
    |element|
0899f74ec3ce class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12986
diff changeset
   538
0899f74ec3ce class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12986
diff changeset
   539
    element := (codeView syntaxElements ? #()) 
0899f74ec3ce class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12986
diff changeset
   540
                    detect:[:e |     
0899f74ec3ce class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12986
diff changeset
   541
                        e isVariable
15172
26249a020c0f class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 14448
diff changeset
   542
                        and:[ (isClassVariable 
26249a020c0f class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 14448
diff changeset
   543
                                    ifTrue:[e isClassVariable ]
26249a020c0f class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 14448
diff changeset
   544
                                    ifFalse:[e isInstanceVariable ])
12994
0899f74ec3ce class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12986
diff changeset
   545
                        and:[ e name = name ]]
0899f74ec3ce class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12986
diff changeset
   546
                    ] ifNone:nil.
12997
f03191d56013 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12994
diff changeset
   547
f03191d56013 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12994
diff changeset
   548
    self highlightClear.
f03191d56013 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12994
diff changeset
   549
    codeView syntaxElementSelection:nil.
f03191d56013 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12994
diff changeset
   550
    self highlightVariable:element.
12994
0899f74ec3ce class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12986
diff changeset
   551
! !
0899f74ec3ce class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12986
diff changeset
   552
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   553
!CodeNavigationService methodsFor:'private'!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   554
13946
458fb7b5c705 class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13866
diff changeset
   555
elementAtCharacterPosition: pos 
458fb7b5c705 class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13866
diff changeset
   556
    | treeIndex low high mid midEl |
458fb7b5c705 class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13866
diff changeset
   557
458fb7b5c705 class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13866
diff changeset
   558
    treeIndex := codeView syntaxElements.
458fb7b5c705 class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13866
diff changeset
   559
    treeIndex isNil ifTrue:[ ^ nil ].
458fb7b5c705 class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13866
diff changeset
   560
    low := 1.
458fb7b5c705 class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13866
diff changeset
   561
    high := treeIndex size.
458fb7b5c705 class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13866
diff changeset
   562
458fb7b5c705 class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13866
diff changeset
   563
    [ low <= high ] whileTrue:[ 
458fb7b5c705 class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13866
diff changeset
   564
        mid := (low + high) >> 1.
458fb7b5c705 class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13866
diff changeset
   565
        midEl := treeIndex at: mid.
458fb7b5c705 class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13866
diff changeset
   566
        pos < midEl start ifTrue:[ 
458fb7b5c705 class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13866
diff changeset
   567
            high := mid - 1.
458fb7b5c705 class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13866
diff changeset
   568
        ] ifFalse:[ 
458fb7b5c705 class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13866
diff changeset
   569
            midEl stop < pos ifTrue:[ 
458fb7b5c705 class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13866
diff changeset
   570
                low := mid + 1.
458fb7b5c705 class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13866
diff changeset
   571
            ] ifFalse:[ 
458fb7b5c705 class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13866
diff changeset
   572
                ^ midEl 
458fb7b5c705 class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13866
diff changeset
   573
            ].
458fb7b5c705 class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13866
diff changeset
   574
        ].
458fb7b5c705 class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13866
diff changeset
   575
    ].
458fb7b5c705 class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13866
diff changeset
   576
    ^ nil.
458fb7b5c705 class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13866
diff changeset
   577
458fb7b5c705 class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13866
diff changeset
   578
    "Created: / 15-02-2014 / 10:14:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
458fb7b5c705 class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13866
diff changeset
   579
!
458fb7b5c705 class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13866
diff changeset
   580
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   581
elementAtCursor
16294
767ba26a5661 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15470
diff changeset
   582
    ^self elementAtLine: textView cursorLine col: textView cursorCol "- 1"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   583
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   584
    "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
   585
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   586
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   587
elementAtLine:line col:colArg 
13946
458fb7b5c705 class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13866
diff changeset
   588
    |col|
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   589
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   590
    "/ if beyond end of line, do not advance into next line
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   591
    col := colArg min:(textView listAt:line) size.
13946
458fb7b5c705 class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13866
diff changeset
   592
    ^ self elementAtCharacterPosition: (textView characterPositionOfLine:line col:col)
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   593
13946
458fb7b5c705 class: Tools::CodeNavigationService
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13866
diff changeset
   594
    "Created: / 15-02-2014 / 10:15:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   595
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   596
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   597
elementAtX:x y:y 
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   598
    |visibleLine line col|
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   599
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   600
    codeView syntaxElements isNil ifTrue:[^nil].
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   601
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   602
    visibleLine := textView visibleLineOfY:y.
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   603
    col := textView colOfX:x inVisibleLine:visibleLine.
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   604
    line := textView visibleLineToAbsoluteLine:visibleLine.
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   605
    ^self elementAtLine:line col:col
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   606
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   607
    "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
   608
    "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
   609
    "Modified: / 21-08-2011 / 10:26:08 / cg"
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   610
!
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   611
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   612
highlighEmphasisFor: element
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   613
10878
3424d00f9155 changed:
Claus Gittinger <cg@exept.de>
parents: 10727
diff changeset
   614
    element isNil ifTrue:[^nil].
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   615
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   616
    element isSelector ifTrue:[^selectorEmphasis].
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   617
    element isVariable ifTrue:[^variableEmphasis].
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   618
    element isSelf     ifTrue:[^variableEmphasis].
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   619
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   620
    ^nil
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   621
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   622
    "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
   623
    "Modified: / 18-11-2011 / 14:58:05 / cg"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   624
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   625
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   626
highlightClear
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   627
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   628
    ^self highlightClear: true.
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   629
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   630
    "Modified: / 26-12-2007 / 12:28:05 / janfrog"
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   631
    "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
   632
    "Modified: / 08-07-2011 / 08:50:45 / cg"
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   633
    "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
   634
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   635
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   636
highlightClear: redraw
13534
e9982215307d class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13533
diff changeset
   637
    lastHighlightedElement := nil.
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   638
    codeView syntaxElementSelection == nil ifTrue:[ ^ self ].
12997
f03191d56013 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12994
diff changeset
   639
10878
3424d00f9155 changed:
Claus Gittinger <cg@exept.de>
parents: 10727
diff changeset
   640
    textView list isNil ifTrue:[ ^ self ].
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   641
    textView list withIndexDo:[:line :lineNo | 
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   642
        line isText ifTrue:[ 
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   643
            (line hasEmphasis: currentEmphasis) ifTrue:[
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   644
                line emphasisAllRemove:currentEmphasis.
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   645
                linesToRedraw add: lineNo.
12986
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   646
            ] ifFalse:[
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   647
                (currentEmphasisForAssign notNil and:[line hasEmphasis: currentEmphasisForAssign]) ifTrue:[
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   648
                    line emphasisAllRemove:currentEmphasisForAssign.
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   649
                    linesToRedraw add: lineNo.
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   650
                ]
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   651
            ]
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   652
        ] 
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   653
    ].
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   654
    codeView syntaxElementSelection:nil.
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   655
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   656
    redraw ifTrue:[self redrawLines].
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   657
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   658
    "Modified: / 26-12-2007 / 12:28:05 / janfrog"
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   659
    "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
   660
    "Modified: / 18-11-2011 / 14:58:08 / cg"
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   661
!
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   662
13534
e9982215307d class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13533
diff changeset
   663
highlightElement:element
15470
e59f6dc9d610 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 15458
diff changeset
   664
    "walk through the chain of elements and highlight each
e59f6dc9d610 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 15458
diff changeset
   665
     Notice, that the chain links elements for the same-variable
e59f6dc9d610 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 15458
diff changeset
   666
     (and lists for same-named-but-in-different-scope variables have
e59f6dc9d610 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 15458
diff changeset
   667
      already been separated)"
13534
e9982215307d class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13533
diff changeset
   668
15458
c910159068d9 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 15325
diff changeset
   669
    |e firstElement savedEmphasis currentSelection highlightSingle|
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   670
12997
f03191d56013 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12994
diff changeset
   671
    (currentSelection := codeView syntaxElementSelection) == element ifTrue:[ ^ self ]. "/ no change
f03191d56013 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12994
diff changeset
   672
    currentSelection notNil ifTrue:[
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   673
        self highlightClear: false.
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   674
    ].
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   675
12986
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   676
    currentEmphasis := savedEmphasis := self highlighEmphasisFor:element.
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   677
    currentEmphasisForAssign := nil.
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   678
13534
e9982215307d class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13533
diff changeset
   679
    highlightSingle :=
15470
e59f6dc9d610 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 15458
diff changeset
   680
        [:element |
e59f6dc9d610 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 15458
diff changeset
   681
            |start stop|
e59f6dc9d610 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 15458
diff changeset
   682
e59f6dc9d610 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 15458
diff changeset
   683
            start := element start.
e59f6dc9d610 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 15458
diff changeset
   684
            stop := element stop.
e59f6dc9d610 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 15458
diff changeset
   685
e59f6dc9d610 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 15458
diff changeset
   686
            element assigned ifTrue:[
12986
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   687
                [
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   688
                    currentEmphasis := currentEmphasisForAssign := assignmentEmphasis.
15470
e59f6dc9d610 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 15458
diff changeset
   689
                    self highlightWithoutClearFrom:start to:stop.
12986
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   690
                ] ensure:[
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   691
                    currentEmphasis := savedEmphasis.
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   692
                ].
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   693
            ] ifFalse:[
15470
e59f6dc9d610 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 15458
diff changeset
   694
                self highlightWithoutClearFrom:start to:stop.
12986
145d28bf105e class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12930
diff changeset
   695
            ].
13534
e9982215307d class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13533
diff changeset
   696
        ].
e9982215307d class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13533
diff changeset
   697
e9982215307d class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13533
diff changeset
   698
    element notNil ifTrue:[ 
e9982215307d class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13533
diff changeset
   699
        codeView syntaxElementSelection:element.
15458
c910159068d9 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 15325
diff changeset
   700
        e := firstElement := element firstElementInChain.
13534
e9982215307d class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13533
diff changeset
   701
e9982215307d class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13533
diff changeset
   702
        "/ cg: I thought that this would work, to speedup up the case, where the same
e9982215307d class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13533
diff changeset
   703
        "/ element is to be highlighted again (it does, but now, it does not correctly
e9982215307d class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13533
diff changeset
   704
        "/ redraw in some situations)
e9982215307d class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13533
diff changeset
   705
        "/ can someone check this?
e9982215307d class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13533
diff changeset
   706
        false ifTrue:[
e9982215307d class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13533
diff changeset
   707
            e == lastHighlightedElement ifTrue:[
e9982215307d class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13533
diff changeset
   708
                "/ same chain
e9982215307d class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13533
diff changeset
   709
                highlightSingle value:element.
e9982215307d class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13533
diff changeset
   710
                ^ self
e9982215307d class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13533
diff changeset
   711
            ].
e9982215307d class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13533
diff changeset
   712
            lastHighlightedElement := e.    "/ remember
e9982215307d class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13533
diff changeset
   713
        ].
e9982215307d class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13533
diff changeset
   714
e9982215307d class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13533
diff changeset
   715
        [ e notNil ] whileTrue:[
15458
c910159068d9 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 15325
diff changeset
   716
            "/ cg: suppress variables with same name, but in different blocks
15470
e59f6dc9d610 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 15458
diff changeset
   717
            "/ (e isVariable not or:[ e isInSameBlockScopeAs:firstElement]) ifTrue:[
15458
c910159068d9 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 15325
diff changeset
   718
                highlightSingle value:e.
15470
e59f6dc9d610 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 15458
diff changeset
   719
            "/ ].
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   720
            e := e nextElement 
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   721
        ].
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   722
    ].
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   723
    self redrawLines.
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   724
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   725
    "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
   726
    "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
   727
    "Modified: / 21-08-2011 / 10:22:58 / cg"
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
highlightElementAtCursor
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   731
    self highlightElementAtLine: textView cursorLine col: textView cursorCol
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   732
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   733
    "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
   734
    "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
   735
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   736
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   737
highlightElementAtLine:line col:col 
13866
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   738
    |elementOrNil|
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   739
13866
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   740
    elementOrNil := self elementAtLine: line col: col.
13536
c7a7ca8afcdd class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 13534
diff changeset
   741
    self highlightElement:elementOrNil
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   742
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   743
    "Created: / 14-02-2010 / 16:17:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
13866
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   744
    "Modified: / 02-10-2013 / 01:29:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   745
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   746
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   747
highlightElementAtX:x y:y 
14004
ee41e156d189 class: Tools::CodeNavigationService
Stefan Vogel <sv@exept.de>
parents: 13946
diff changeset
   748
    |elementOrNil|
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   749
14004
ee41e156d189 class: Tools::CodeNavigationService
Stefan Vogel <sv@exept.de>
parents: 13946
diff changeset
   750
    elementOrNil := self elementAtX:x y:y.
ee41e156d189 class: Tools::CodeNavigationService
Stefan Vogel <sv@exept.de>
parents: 13946
diff changeset
   751
    self highlightElement:elementOrNil
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   752
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   753
    "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
   754
    "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
   755
    "Modified: / 21-08-2011 / 10:22:10 / cg"
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   756
!
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   757
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   758
highlightElementOrNil:e
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   759
    e notNil ifTrue:[
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   760
        "/ cg: only if selected !!
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   761
        "/ self halt.
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   762
        self highlightElement:e.
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   763
    ] ifFalse:[
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   764
        self highlightClear
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   765
    ].
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   766
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   767
    "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
   768
    "Created: / 21-08-2011 / 09:56:39 / cg"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   769
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   770
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   771
highlightLine:lineNo fromLine:startLine col:endLine toLine:startCol col:endCol
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   772
    |line start end|
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   773
12913
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   774
    (lineNo between:startLine and:endLine) ifFalse:[ ^ self ].
12997
f03191d56013 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12994
diff changeset
   775
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   776
    line := textView listAt:lineNo.
10291
af5825474e18 changed: #highlightLine:fromLine:col:toLine:col:
Claus Gittinger <cg@exept.de>
parents: 10276
diff changeset
   777
    line isEmpty ifTrue:[^self].
15470
e59f6dc9d610 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 15458
diff changeset
   778
12913
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   779
    start := (lineNo = startLine) 
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   780
                ifTrue:[ startCol  ] 
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   781
                ifFalse:[ line indexOfNonSeparator ].
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   782
    end := (lineNo = endLine) 
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   783
                ifTrue:[ endCol ] 
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   784
                ifFalse:[ line size ].
13866
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   785
    line setRuns:(line runs asArray).
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   786
    "/ JV: CG commented following and added the commtent code below.
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   787
    "/     however, this clear all other emphasis like bold, color and so on!!
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   788
    line 
13109
3eeb533e3874 codeView2 fixes
Claus Gittinger <cg@exept.de>
parents: 13103
diff changeset
   789
        emphasisFrom:(start max: 1)
10291
af5825474e18 changed: #highlightLine:fromLine:col:toLine:col:
Claus Gittinger <cg@exept.de>
parents: 10276
diff changeset
   790
        to:(end min: line size)
13109
3eeb533e3874 codeView2 fixes
Claus Gittinger <cg@exept.de>
parents: 13103
diff changeset
   791
        add: currentEmphasis.
13866
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   792
"/    line 
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   793
"/        emphasizeFrom:(start max: 1)
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   794
"/        to:(end min: line size)
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   795
"/        with: currentEmphasis.
7b45431bb24e merged in jv's chenges
Claus Gittinger <cg@exept.de>
parents: 13699
diff changeset
   796
    line setRuns:(line runs asRunArray).                              
12913
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   797
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   798
    linesToRedraw add: lineNo.
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   799
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   800
    "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
   801
    "Modified: / 08-07-2011 / 13:02:51 / cg"
14058
6018db6ddc02 Fixes in CodeNavigationService - semi-modal navigation should work again.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14004
diff changeset
   802
    "Modified: / 25-02-2014 / 21:01:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   803
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   804
12994
0899f74ec3ce class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12986
diff changeset
   805
highlightVariable:element 
0899f74ec3ce class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12986
diff changeset
   806
    (element notNil and:[ element isVariableOrSelf ]) ifTrue:[
0899f74ec3ce class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12986
diff changeset
   807
        self highlightElement:element.
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   808
    ] ifFalse:[
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   809
        self highlightClear.
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   810
    ].
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   811
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   812
    "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
   813
    "Modified: / 21-08-2011 / 09:39:42 / cg"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   814
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   815
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   816
highlightVariableAtCursor
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   817
    self highlightElementOrNil:(self elementAtCursor)
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   818
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   819
    "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
   820
    "Modified: / 21-08-2011 / 09:56:56 / cg"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   821
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   822
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   823
highlightVariableAtX:x y:y 
10631
7639ba8f13da fixed highlighting
Claus Gittinger <cg@exept.de>
parents: 10588
diff changeset
   824
    self highlightElementOrNil:(self elementAtX:x y:y).
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   825
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   826
    "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
   827
    "Modified: / 21-08-2011 / 10:24:50 / cg"
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   828
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   829
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   830
highlightWithoutClearFrom: start to: end
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   831
    "Remove underlined emphasis"
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   832
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   833
    |startLine startCol endLine endCol|
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   834
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   835
    startLine := textView lineOfCharacterPosition:start.
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   836
    startCol := start - (textView characterPositionOfLine:startLine col:1) + 1.
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   837
    endLine := textView lineOfCharacterPosition:end.
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   838
    endCol := end - (textView characterPositionOfLine:endLine col:1) + 1.
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   839
    self highlightWithoutClearFromLine: startLine col: startCol toLine: endLine col: endCol
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   840
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   841
    "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
   842
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   843
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   844
highlightWithoutClearFromLine: startLine col: startCol toLine: endLine col: endCol 
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   845
12913
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   846
    textView list keysAndValuesDo: [:lineNo :line|
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   847
        line isText ifTrue: [
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   848
            self highlightLine: lineNo fromLine: startLine col: endLine toLine: startCol col: endCol
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   849
        ]
c5fdb1a82ed1 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12867
diff changeset
   850
    ].
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   851
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   852
    "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
   853
! !
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   854
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   855
!CodeNavigationService methodsFor:'redrawing'!
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   856
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   857
redrawLines
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   858
    linesToRedraw do:[:lineNo|
10588
Claus Gittinger <cg@exept.de>
parents: 10412
diff changeset
   859
        textView invalidateLine: lineNo.
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   860
    ].
12997
f03191d56013 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12994
diff changeset
   861
    linesToRedraw := OrderedCollection new
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   862
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   863
    "Created: / 20-07-2011 / 18:45:38 / Jan Vrany <jan.vrany@fit.cvut.cz>"
10588
Claus Gittinger <cg@exept.de>
parents: 10412
diff changeset
   864
    "Modified (format): / 18-08-2011 / 16:01:34 / cg"
10361
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   865
! !
1443a20ddac2 Navigation redrawing optimized a bit...
vrany
parents: 10291
diff changeset
   866
19608
98f7cba0ce8c Theming: add support for theming navigation service's styles
Jan Vrany <jan.vrany@labware.com>
parents: 17136
diff changeset
   867
!CodeNavigationService methodsFor:'registering'!
98f7cba0ce8c Theming: add support for theming navigation service's styles
Jan Vrany <jan.vrany@labware.com>
parents: 17136
diff changeset
   868
98f7cba0ce8c Theming: add support for theming navigation service's styles
Jan Vrany <jan.vrany@labware.com>
parents: 17136
diff changeset
   869
registerIn: aCodeView
98f7cba0ce8c Theming: add support for theming navigation service's styles
Jan Vrany <jan.vrany@labware.com>
parents: 17136
diff changeset
   870
    | theme |
98f7cba0ce8c Theming: add support for theming navigation service's styles
Jan Vrany <jan.vrany@labware.com>
parents: 17136
diff changeset
   871
98f7cba0ce8c Theming: add support for theming navigation service's styles
Jan Vrany <jan.vrany@labware.com>
parents: 17136
diff changeset
   872
    super registerIn: aCodeView.
98f7cba0ce8c Theming: add support for theming navigation service's styles
Jan Vrany <jan.vrany@labware.com>
parents: 17136
diff changeset
   873
98f7cba0ce8c Theming: add support for theming navigation service's styles
Jan Vrany <jan.vrany@labware.com>
parents: 17136
diff changeset
   874
    theme := UserPreferences current codeViewTheme ? UserPreferences current.
98f7cba0ce8c Theming: add support for theming navigation service's styles
Jan Vrany <jan.vrany@labware.com>
parents: 17136
diff changeset
   875
    selectorEmphasis := theme selectorHighlightEmphasis.
98f7cba0ce8c Theming: add support for theming navigation service's styles
Jan Vrany <jan.vrany@labware.com>
parents: 17136
diff changeset
   876
    variableEmphasis := theme variableHighlightEmphasis.
98f7cba0ce8c Theming: add support for theming navigation service's styles
Jan Vrany <jan.vrany@labware.com>
parents: 17136
diff changeset
   877
    assignmentEmphasis := theme assignmentHighlightEmphasis.
98f7cba0ce8c Theming: add support for theming navigation service's styles
Jan Vrany <jan.vrany@labware.com>
parents: 17136
diff changeset
   878
98f7cba0ce8c Theming: add support for theming navigation service's styles
Jan Vrany <jan.vrany@labware.com>
parents: 17136
diff changeset
   879
    "Created: / 15-09-2021 / 21:18:13 / Jan Vrany <jan.vrany@labware.com>"
98f7cba0ce8c Theming: add support for theming navigation service's styles
Jan Vrany <jan.vrany@labware.com>
parents: 17136
diff changeset
   880
! !
98f7cba0ce8c Theming: add support for theming navigation service's styles
Jan Vrany <jan.vrany@labware.com>
parents: 17136
diff changeset
   881
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   882
!CodeNavigationService class methodsFor:'documentation'!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   883
12486
0a82f2fcb6b3 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12485
diff changeset
   884
version
16294
767ba26a5661 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15470
diff changeset
   885
    ^ '$Header$'
12486
0a82f2fcb6b3 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12485
diff changeset
   886
!
0a82f2fcb6b3 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 12485
diff changeset
   887
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   888
version_CVS
16294
767ba26a5661 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15470
diff changeset
   889
    ^ '$Header$'
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   890
!
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   891
19608
98f7cba0ce8c Theming: add support for theming navigation service's styles
Jan Vrany <jan.vrany@labware.com>
parents: 17136
diff changeset
   892
version_HG
98f7cba0ce8c Theming: add support for theming navigation service's styles
Jan Vrany <jan.vrany@labware.com>
parents: 17136
diff changeset
   893
98f7cba0ce8c Theming: add support for theming navigation service's styles
Jan Vrany <jan.vrany@labware.com>
parents: 17136
diff changeset
   894
    ^ '$Changeset: <not expanded> $'
98f7cba0ce8c Theming: add support for theming navigation service's styles
Jan Vrany <jan.vrany@labware.com>
parents: 17136
diff changeset
   895
!
98f7cba0ce8c Theming: add support for theming navigation service's styles
Jan Vrany <jan.vrany@labware.com>
parents: 17136
diff changeset
   896
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   897
version_SVN
16294
767ba26a5661 #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 15470
diff changeset
   898
    ^ '$Id$'
9979
00b306851c88 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   899
! !
12105
44e930e29b99 class: Tools::CodeNavigationService
Claus Gittinger <cg@exept.de>
parents: 11741
diff changeset
   900