CodeCompletionHelpMenuView.st
author Jan Vrany <jan.vrany@labware.com>
Sat, 30 Sep 2023 22:55:25 +0100
branchjv
changeset 19648 5df52d354504
parent 16375 7d37905ad40b
permissions -rw-r--r--
`TestRunner2`: do not use `#keysAndValuesCollect:` ...as semantics differ among smalltalk dialects. This is normally not a problem until we use code that adds this as a "compatibility" method. So to stay on a safe side, avoid using this method.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
13478
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
     1
"
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
     2
 COPYRIGHT (c) 2013 by Claus Gittinger
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
     3
              All Rights Reserved
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
     4
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
     5
 This software is furnished under a license and may be used
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
     6
 only in accordance with the terms of that license and with the
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
     8
 be provided or otherwise made available to, or used by, any
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
     9
 other person.  No title to or ownership of the software is
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
    10
 hereby transferred.
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
    11
"
13477
89fd61f3c821 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
"{ Package: 'stx:libtool' }"
89fd61f3c821 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
16051
65b2ad2b4723 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 13669
diff changeset
    14
"{ NameSpace: Smalltalk }"
65b2ad2b4723 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 13669
diff changeset
    15
13477
89fd61f3c821 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
MenuView subclass:#CodeCompletionHelpMenuView
16051
65b2ad2b4723 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 13669
diff changeset
    17
	instanceVariableNames:'infoPerEntry'
13477
89fd61f3c821 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
	classVariableNames:''
89fd61f3c821 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
	poolDictionaries:''
89fd61f3c821 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
	category:'Interface-Help'
89fd61f3c821 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
!
89fd61f3c821 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
16078
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
    23
PopUpView subclass:#SimulatedMenuForHTMLView
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
    24
	instanceVariableNames:'codeCompletionMenu'
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
    25
	classVariableNames:''
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
    26
	poolDictionaries:''
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
    27
	privateIn:CodeCompletionHelpMenuView
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
    28
!
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
    29
13478
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
    30
!CodeCompletionHelpMenuView class methodsFor:'documentation'!
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
    31
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
    32
copyright
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
    33
"
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
    34
 COPYRIGHT (c) 2013 by Claus Gittinger
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
    35
              All Rights Reserved
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
    36
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
    37
 This software is furnished under a license and may be used
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
    38
 only in accordance with the terms of that license and with the
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
    39
 inclusion of the above copyright notice.   This software may not
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
    40
 be provided or otherwise made available to, or used by, any
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
    41
 other person.  No title to or ownership of the software is
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
    42
 hereby transferred.
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
    43
"
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
    44
!
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
    45
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
    46
documentation
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
    47
"
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
    48
    used with code completion suggestions
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
    49
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
    50
    [author:]
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
    51
        Claus Gittinger
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
    52
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
    53
    [See also:]
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
    54
        Workspace::CodeCompletionService
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
    55
"
Claus Gittinger <cg@exept.de>
parents: 13477
diff changeset
    56
! !
13477
89fd61f3c821 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
16051
65b2ad2b4723 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 13669
diff changeset
    58
!CodeCompletionHelpMenuView methodsFor:'accessing'!
65b2ad2b4723 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 13669
diff changeset
    59
65b2ad2b4723 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 13669
diff changeset
    60
infoPerEntry:something
65b2ad2b4723 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 13669
diff changeset
    61
    infoPerEntry := something.
65b2ad2b4723 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 13669
diff changeset
    62
! !
65b2ad2b4723 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 13669
diff changeset
    63
13537
968b3d74a2b8 class: CodeCompletionHelpMenuView
Claus Gittinger <cg@exept.de>
parents: 13478
diff changeset
    64
!CodeCompletionHelpMenuView methodsFor:'initialization'!
968b3d74a2b8 class: CodeCompletionHelpMenuView
Claus Gittinger <cg@exept.de>
parents: 13478
diff changeset
    65
968b3d74a2b8 class: CodeCompletionHelpMenuView
Claus Gittinger <cg@exept.de>
parents: 13478
diff changeset
    66
initStyle
13669
bb9278273984 class: CodeCompletionHelpMenuView
Claus Gittinger <cg@exept.de>
parents: 13537
diff changeset
    67
    |defaultFont|
bb9278273984 class: CodeCompletionHelpMenuView
Claus Gittinger <cg@exept.de>
parents: 13537
diff changeset
    68
13537
968b3d74a2b8 class: CodeCompletionHelpMenuView
Claus Gittinger <cg@exept.de>
parents: 13478
diff changeset
    69
    super initStyle.
13669
bb9278273984 class: CodeCompletionHelpMenuView
Claus Gittinger <cg@exept.de>
parents: 13537
diff changeset
    70
    defaultFont := StyleSheet fontAt:#'activeHelp.font' default:nil.
bb9278273984 class: CodeCompletionHelpMenuView
Claus Gittinger <cg@exept.de>
parents: 13537
diff changeset
    71
    defaultFont notNil ifTrue:[
bb9278273984 class: CodeCompletionHelpMenuView
Claus Gittinger <cg@exept.de>
parents: 13537
diff changeset
    72
        self font:defaultFont
bb9278273984 class: CodeCompletionHelpMenuView
Claus Gittinger <cg@exept.de>
parents: 13537
diff changeset
    73
    ].
16051
65b2ad2b4723 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 13669
diff changeset
    74
    self viewBackground:Color orange lightened lightened lightened.
13537
968b3d74a2b8 class: CodeCompletionHelpMenuView
Claus Gittinger <cg@exept.de>
parents: 13478
diff changeset
    75
! !
968b3d74a2b8 class: CodeCompletionHelpMenuView
Claus Gittinger <cg@exept.de>
parents: 13478
diff changeset
    76
13477
89fd61f3c821 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
!CodeCompletionHelpMenuView methodsFor:'queries'!
89fd61f3c821 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
16375
7d37905ad40b #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 16078
diff changeset
    79
isGraphicItem:line
7d37905ad40b #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 16078
diff changeset
    80
    ^ false
7d37905ad40b #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 16078
diff changeset
    81
!
7d37905ad40b #UI_ENHANCEMENT by cg
Claus Gittinger <cg@exept.de>
parents: 16078
diff changeset
    82
13477
89fd61f3c821 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
wantsFocusWithPointerEnter
89fd61f3c821 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
    "DEFINITELY not, because if we do so,
89fd61f3c821 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
     the editView looses focus on entry, and sends me to hell in its lost focus handling!!
89fd61f3c821 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
     So I will be terminated by a motion"
89fd61f3c821 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
89fd61f3c821 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
    ^ false
89fd61f3c821 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
! !
89fd61f3c821 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
16051
65b2ad2b4723 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 13669
diff changeset
    91
!CodeCompletionHelpMenuView methodsFor:'selections'!
65b2ad2b4723 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 13669
diff changeset
    92
65b2ad2b4723 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 13669
diff changeset
    93
setSelection:newSelection
65b2ad2b4723 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 13669
diff changeset
    94
    super setSelection:newSelection.
65b2ad2b4723 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 13669
diff changeset
    95
    self showInfoForSelection:newSelection.
65b2ad2b4723 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 13669
diff changeset
    96
!
65b2ad2b4723 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 13669
diff changeset
    97
65b2ad2b4723 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 13669
diff changeset
    98
showInfoForSelection:newSelection
16078
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
    99
    |selector info|
16051
65b2ad2b4723 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 13669
diff changeset
   100
    
16078
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   101
    "/ work in progress...
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   102
    
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   103
false ifTrue:[
16051
65b2ad2b4723 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 13669
diff changeset
   104
    newSelection notNil ifTrue:[
65b2ad2b4723 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 13669
diff changeset
   105
        selector := self listAt:newSelection.
16078
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   106
        infoPerEntry notNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   107
            info := infoPerEntry at:newSelection.
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   108
        ] ifFalse:[
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   109
            info := 'bla bla bla'.
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   110
        ].
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   111
        info notNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   112
            (self subMenuAt:newSelection) isNil ifTrue:[
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   113
                "/ TODO: install another menu, showing the tooltop
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   114
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   115
                |infoView htmlView|
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   116
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   117
                infoView := SimulatedMenuForHTMLView new.
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   118
                htmlView := HTMLView origin:0.0@0.0 corner:1.0@1.0 in:infoView.
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   119
                htmlView contents:info.
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   120
                
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   121
                self subMenuAt:newSelection put:infoView.
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   122
                "/ Transcript showCR:selector.
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   123
                self invalidateLine:newSelection.
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   124
            ].    
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   125
        ].    
16051
65b2ad2b4723 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 13669
diff changeset
   126
    ].
16078
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   127
].
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   128
! !
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   129
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   130
!CodeCompletionHelpMenuView::SimulatedMenuForHTMLView methodsFor:'menu protocol'!
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   131
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   132
action:anActionBlock
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   133
    "ignored for now"
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   134
!
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   135
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   136
haveControl:aBoolean
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   137
    "ignored here"
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   138
!
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   139
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   140
menuView
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   141
    ^ self
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   142
!
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   143
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   144
noShadow
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   145
!
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   146
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   147
superMenu:aMenu
Claus Gittinger <cg@exept.de>
parents: 16051
diff changeset
   148
    "ignored for now"
16051
65b2ad2b4723 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 13669
diff changeset
   149
! !
65b2ad2b4723 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 13669
diff changeset
   150
13477
89fd61f3c821 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
!CodeCompletionHelpMenuView class methodsFor:'documentation'!
89fd61f3c821 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
89fd61f3c821 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
version
16051
65b2ad2b4723 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 13669
diff changeset
   154
    ^ '$Header$'
13477
89fd61f3c821 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
!
89fd61f3c821 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
89fd61f3c821 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
version_CVS
16051
65b2ad2b4723 #FEATURE
Claus Gittinger <cg@exept.de>
parents: 13669
diff changeset
   158
    ^ '$Header$'
13477
89fd61f3c821 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
! !
89fd61f3c821 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160