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