ActiveHelp.st
author ca
Tue, 27 May 1997 11:11:29 +0200
changeset 584 9a4c30f7586f
parent 344 42ae71c13eef
child 596 a184f2e4dbbb
permissions -rw-r--r--
ST-80 compatible features addded
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
     1
"
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
     2
 COPYRIGHT (c) 1995 by Claus Gittinger
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
     3
	      All Rights Reserved
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
     4
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
    11
"
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
    12
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
    13
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
    14
EventListener subclass:#ActiveHelp
216
a5f97668e99a commentary
Claus Gittinger <cg@exept.de>
parents: 138
diff changeset
    15
	instanceVariableNames:'currentView currentHelpView currentFrame showProcess closeProcess'
a5f97668e99a commentary
Claus Gittinger <cg@exept.de>
parents: 138
diff changeset
    16
	classVariableNames:'DelayTime ShowTime TheOneAndOnlyHelpListener'
a5f97668e99a commentary
Claus Gittinger <cg@exept.de>
parents: 138
diff changeset
    17
	poolDictionaries:''
a5f97668e99a commentary
Claus Gittinger <cg@exept.de>
parents: 138
diff changeset
    18
	category:'Interface-Help'
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
    19
!
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
    20
338
071f92621e3b oops - catching the terminateSignal is no good idea
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
    21
!ActiveHelp class methodsFor:'documentation'!
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
    22
138
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
    23
copyright
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
    24
"
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
    25
 COPYRIGHT (c) 1995 by Claus Gittinger
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
    26
	      All Rights Reserved
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
    27
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
    28
 This software is furnished under a license and may be used
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
    29
 only in accordance with the terms of that license and with the
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
    30
 inclusion of the above copyright notice.   This software may not
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
    31
 be provided or otherwise made available to, or used by, any
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
    32
 other person.  No title to or ownership of the software is
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
    33
 hereby transferred.
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
    34
"
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
    35
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
    36
!
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
    37
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
    38
documentation
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
    39
"
98
claus
parents: 97
diff changeset
    40
    The active help listener.
claus
parents: 97
diff changeset
    41
    The one and only instance of myself intercepts incoming mouse & keyboard 
claus
parents: 97
diff changeset
    42
    events for the display device, being especially interested in view-enter/
100
claus
parents: 98
diff changeset
    43
    leave enents. When such an event arrives, it asks the corresponding view
98
claus
parents: 97
diff changeset
    44
    or its model for a help message and display it via an ActiveHelpView.
100
claus
parents: 98
diff changeset
    45
    This query is repeated along the views superView chain, until any model or
claus
parents: 98
diff changeset
    46
    view returns a nonNil answer for the #helpTextFor:at or #helpTextFor
claus
parents: 98
diff changeset
    47
    message.
claus
parents: 98
diff changeset
    48
98
claus
parents: 97
diff changeset
    49
    All I need for automatic help is some model/view/applicationModel along
claus
parents: 97
diff changeset
    50
    the superview chain of the entered component, which responds to the
claus
parents: 97
diff changeset
    51
    #helpTextFor: message with a non-nil (string-) answer.
claus
parents: 97
diff changeset
    52
    I close down the help view after a while, if a key is pressed or the mouse
claus
parents: 97
diff changeset
    53
    moved to another view.
100
claus
parents: 98
diff changeset
    54
claus
parents: 98
diff changeset
    55
    Who should provide the helpText:
claus
parents: 98
diff changeset
    56
221
ea942fe5dc04 documentation
Claus Gittinger <cg@exept.de>
parents: 216
diff changeset
    57
        the best place is the application object (an instance of ApplicationModel)
ea942fe5dc04 documentation
Claus Gittinger <cg@exept.de>
parents: 216
diff changeset
    58
        or the topView, if its a derived class of StandardSystemView.
ea942fe5dc04 documentation
Claus Gittinger <cg@exept.de>
parents: 216
diff changeset
    59
        This should know about its components and return the string
ea942fe5dc04 documentation
Claus Gittinger <cg@exept.de>
parents: 216
diff changeset
    60
        when asked via #helpTextFor:aComponent.
330
d7ce98930ad3 Rename Launcher-->OldLauncher, NewLauncher-->Launcher.
Stefan Vogel <sv@exept.de>
parents: 297
diff changeset
    61
        See examples in FileBrowser, Launcher etc.
100
claus
parents: 98
diff changeset
    62
claus
parents: 98
diff changeset
    63
    Be aware, that for applicationModels, there must be a link from the
claus
parents: 98
diff changeset
    64
    topView to this applicationModel 
claus
parents: 98
diff changeset
    65
    (set via: aTopView application:anApplicationModel)
claus
parents: 98
diff changeset
    66
    otherwise, the helpManager has no means of finding the application which
claus
parents: 98
diff changeset
    67
    corresponds to a view.
claus
parents: 98
diff changeset
    68
claus
parents: 98
diff changeset
    69
    Who should display the helpText:
claus
parents: 98
diff changeset
    70
221
ea942fe5dc04 documentation
Claus Gittinger <cg@exept.de>
parents: 216
diff changeset
    71
        by default, the helpListener opens a little popup view, which displays the
ea942fe5dc04 documentation
Claus Gittinger <cg@exept.de>
parents: 216
diff changeset
    72
        returned help message. However, a nice trick which can be used by applications
ea942fe5dc04 documentation
Claus Gittinger <cg@exept.de>
parents: 216
diff changeset
    73
        is to create an infoLabel as a subview of the topFrame (a la windows)
ea942fe5dc04 documentation
Claus Gittinger <cg@exept.de>
parents: 216
diff changeset
    74
        and display the text right in the #helpTextFor: method. To cheat the
ea942fe5dc04 documentation
Claus Gittinger <cg@exept.de>
parents: 216
diff changeset
    75
        help listener, this method should then return nil, to keep it silent.
ea942fe5dc04 documentation
Claus Gittinger <cg@exept.de>
parents: 216
diff changeset
    76
ea942fe5dc04 documentation
Claus Gittinger <cg@exept.de>
parents: 216
diff changeset
    77
ea942fe5dc04 documentation
Claus Gittinger <cg@exept.de>
parents: 216
diff changeset
    78
    [author:]
ea942fe5dc04 documentation
Claus Gittinger <cg@exept.de>
parents: 216
diff changeset
    79
        Claus Gittinger
ea942fe5dc04 documentation
Claus Gittinger <cg@exept.de>
parents: 216
diff changeset
    80
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
    81
    [start with:]
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
    82
        ActiveHelp start
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
    83
        ActiveHelp stop
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
    84
221
ea942fe5dc04 documentation
Claus Gittinger <cg@exept.de>
parents: 216
diff changeset
    85
    [See also:]
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
    86
        ActiveHelpView
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
    87
        WindowGroup WindowEvent
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
    88
        ApplicationModel StandardSystemView
100
claus
parents: 98
diff changeset
    89
"
claus
parents: 98
diff changeset
    90
!
claus
parents: 98
diff changeset
    91
claus
parents: 98
diff changeset
    92
examples
claus
parents: 98
diff changeset
    93
"
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
    94
    (make certain that activeHelp is turned on ...
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
    95
     ... otherwise, you will see nothing)
100
claus
parents: 98
diff changeset
    96
claus
parents: 98
diff changeset
    97
    the following example uses a Plug as a model replacement.
claus
parents: 98
diff changeset
    98
    In concrete application, you would create a method to implement the helpText
claus
parents: 98
diff changeset
    99
    query message.
227
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   100
                                                                        [exBegin]
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   101
        |app top button1 button2|
100
claus
parents: 98
diff changeset
   102
227
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   103
        app := Plug new.
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   104
        app respondTo:#helpTextFor:
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   105
                 with:[:view | 
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   106
                               view == button1 ifTrue:[
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   107
                                 'this is button1'
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   108
                               ] ifFalse:[
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   109
                                 view == button2 ifTrue:[
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   110
                                   'some help for button2'
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   111
                                 ] ifFalse:[
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   112
                                   nil
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   113
                                 ]
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   114
                               ]
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   115
                      ].
100
claus
parents: 98
diff changeset
   116
227
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   117
        top := StandardSystemView new.
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   118
        top extent:300@100.
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   119
        button1 := Button label:'b1' in:top.
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   120
        button1 origin:0.0@0.0 corner:0.5@30. 
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   121
        button2 := Button label:'b2' in:top.
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   122
        button2 origin:0.5@0.0 corner:1.0@30.
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   123
        top model:app. '<-- normally this would be: top application:app'.
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   124
        top open
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   125
                                                                        [exEnd]
100
claus
parents: 98
diff changeset
   126
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   127
    (make certain that activeHelp is turned on ...
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   128
     ... otherwise, you will see nothing)
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   129
227
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   130
    alternatively, display of the helpMessage in a local, private view:
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   131
                                                                        [exBegin]
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   132
        |app top button1 button2 infoView|
100
claus
parents: 98
diff changeset
   133
227
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   134
        app := Plug new.
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   135
        app respondTo:#helpTextFor:
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   136
                 with:[:view | infoView label:'info ...'.
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   137
                               view == button1 ifTrue:[
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   138
                                 infoView label:'this is button1'
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   139
                               ].
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   140
                               view == button2 ifTrue:[
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   141
                                 infoView label:'some help for button2'
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   142
                               ].
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   143
                               nil
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   144
                      ].
100
claus
parents: 98
diff changeset
   145
227
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   146
        top := StandardSystemView new.
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   147
        top extent:300@100.
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   148
        button1 := Button label:'b1' in:top.
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   149
        button1 origin:0.0@0.0 corner:0.5@30. 
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   150
        button2 := Button label:'b2' in:top.
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   151
        button2 origin:0.5@0.0 corner:1.0@30.
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   152
        infoView := Label label:'info ...' in:top.
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   153
        infoView level:-1; origin:0.0@1.0 corner:1.0@1.0.
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   154
        infoView topInset:(infoView preferredExtent y negated - 3);
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   155
                 leftInset:3; 
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   156
                 rightInset:3; 
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   157
                 bottomInset:3;
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   158
                 adjust:#left.
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   159
        top model:app. '<-- normally this would be: top application:app'.
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   160
        top open
3f18af678ac9 examples for docViewer
Claus Gittinger <cg@exept.de>
parents: 221
diff changeset
   161
                                                                        [exEnd]
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   162
"
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   163
! !
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   164
338
071f92621e3b oops - catching the terminateSignal is no good idea
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   165
!ActiveHelp class methodsFor:'initialization'!
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   166
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   167
initialize
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   168
    "set default delay & help-display times"
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   169
92
claus
parents: 59
diff changeset
   170
    ShowTime := 15.
100
claus
parents: 98
diff changeset
   171
    DelayTime := 2.
92
claus
parents: 59
diff changeset
   172
claus
parents: 59
diff changeset
   173
    "
claus
parents: 59
diff changeset
   174
     ActiveHelp initialize
claus
parents: 59
diff changeset
   175
    "
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   176
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   177
    "Modified: 27.4.1996 / 15:07:27 / cg"
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   178
! !
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   179
338
071f92621e3b oops - catching the terminateSignal is no good idea
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   180
!ActiveHelp class methodsFor:'startup'!
100
claus
parents: 98
diff changeset
   181
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   182
isActive
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   183
    "return true, if activeHelp is turned on"
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   184
138
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   185
    ^ TheOneAndOnlyHelpListener notNil
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   186
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   187
    "Modified: 27.4.1996 / 15:07:57 / cg"
138
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   188
!
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   189
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   190
start
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   191
    "start activeHelp"
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   192
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   193
    TheOneAndOnlyHelpListener isNil ifTrue:[
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   194
        TheOneAndOnlyHelpListener := self new.
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   195
    ].
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   196
    TheOneAndOnlyHelpListener listen
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   197
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   198
    "
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   199
     ActiveHelp start
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   200
    "
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   201
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   202
    "Modified: 27.4.1996 / 15:08:05 / cg"
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   203
!
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   204
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   205
stop
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   206
    "stop activeHelp"
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   207
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   208
    TheOneAndOnlyHelpListener notNil ifTrue:[
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   209
        TheOneAndOnlyHelpListener unlisten.
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   210
    ].
92
claus
parents: 59
diff changeset
   211
    TheOneAndOnlyHelpListener := nil
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   212
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   213
    "
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   214
     ActiveHelp stop
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   215
    "
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   216
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   217
    "Modified: 27.4.1996 / 15:08:11 / cg"
138
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   218
! !
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   219
338
071f92621e3b oops - catching the terminateSignal is no good idea
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   220
!ActiveHelp class methodsFor:'times'!
138
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   221
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   222
delayTime:numberOfSeconds
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   223
    "set the delay (the time, the cursor has to be in the view
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   224
     before help is shown). The default is 2 seconds."
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   225
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   226
    DelayTime := numberOfSeconds
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   227
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   228
    "
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   229
     ActiveHelp delayTime:0.5
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   230
     ActiveHelp delayTime:2
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   231
     ActiveHelp delayTime:10
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   232
    "
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   233
!
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   234
138
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   235
showTime:numberOfSeconds
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   236
    "set the number of seconds, a help messages is to be shown.
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   237
     The default is 15 seconds."
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   238
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   239
    ShowTime := numberOfSeconds
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   240
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   241
    "
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   242
     ActiveHelp showTime:10
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   243
     ActiveHelp showTime:99999 
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   244
     ActiveHelp showTime:30
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   245
    "
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   246
! !
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   247
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   248
!ActiveHelp methodsFor:'listening'!
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   249
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   250
buttonMotion:state x:x y:y view:view
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   251
    "handle motion events - if the mousepointer left the 
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   252
     previous helped view, hide the help"
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   253
138
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   254
    self hideIfPointerLeft:view.
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   255
    ^ false
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   256
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   257
    "Modified: 27.4.1996 / 15:09:48 / cg"
138
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   258
!
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   259
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   260
buttonPress:state x:x y:y view:view
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   261
    "handle button press - unconditionally hide the help"
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   262
138
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   263
    self hideHelp.
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   264
    ^ false
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   265
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   266
    "Modified: 27.4.1996 / 15:09:45 / cg"
138
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   267
!
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   268
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   269
keyPress:state x:x y:y view:view
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   270
    "handle key press - unconditionally hide the help"
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   271
138
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   272
    self hideHelp.
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   273
    ^ false
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   274
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   275
    "Modified: 27.4.1996 / 15:09:57 / cg"
138
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   276
!
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   277
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   278
pointerEnter:state x:x y:y view:aView
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   279
    "handle pointer entering a view; setup timeOut to show help"
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   280
344
42ae71c13eef *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 338
diff changeset
   281
    |p|
138
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   282
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   283
    showProcess notNil ifTrue:[
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   284
        p := showProcess. showProcess := nil.
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   285
        p terminate.
138
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   286
    ].
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   287
    self hideIfPointerLeft:aView.
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   288
    aView topView == currentHelpView ifTrue:[
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   289
        ^ true
138
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   290
    ].
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   291
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   292
    self initiateHelpFor:aView atX:x y:y.
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   293
    ^ false
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   294
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   295
    "Modified: 27.4.1996 / 15:10:27 / cg"
138
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   296
!
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   297
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   298
pointerLeave:state view:view
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   299
    "handle pointer leaving a view; hide help text"
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   300
138
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   301
    self hideIfPointerLeft:view.
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   302
    ^ false
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   303
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   304
    "Modified: 27.4.1996 / 15:10:41 / cg"
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   305
! !
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   306
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   307
!ActiveHelp methodsFor:'private'!
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   308
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   309
helpTextFor:aView atX:x y:y
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   310
    "retrieve helptext for aView as a string; 
100
claus
parents: 98
diff changeset
   311
     walk along the views superView chain,
claus
parents: 98
diff changeset
   312
     asking models and views encountered while walking.
claus
parents: 98
diff changeset
   313
     The first one who understands and returns a nonNil answer to the
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   314
     #helpTextFor:at: or #helpTextFor: message ends this search and the
100
claus
parents: 98
diff changeset
   315
     returned string is returned."
claus
parents: 98
diff changeset
   316
344
42ae71c13eef *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 338
diff changeset
   317
    |model text view v sv|
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   318
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   319
    view := aView.
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   320
    (model := aView model) notNil ifTrue:[
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   321
        (model respondsTo:#helpTextFor:at:) ifTrue:[
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   322
            text := model helpTextFor:aView at:x@y.
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   323
            text notNil ifTrue:[^ text].
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   324
        ].
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   325
        (model respondsTo:#helpTextFor:) ifTrue:[
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   326
            text := model helpTextFor:aView.
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   327
            text notNil ifTrue:[^ text].
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   328
        ]
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   329
    ].
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   330
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   331
    (aView respondsTo:#helpText) ifTrue:[
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   332
        text := aView helpText.
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   333
        text notNil ifTrue:[^ text].
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   334
    ].
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   335
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   336
    "walk up the chain - maybe someone knows about its subview ..."
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   337
    v := aView.
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   338
296
c7ae52588794 #superView -> #container
Claus Gittinger <cg@exept.de>
parents: 276
diff changeset
   339
    [(sv := v container) notNil] whileTrue:[
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   340
        (model := sv model) notNil ifTrue:[
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   341
            (model respondsTo:#helpTextFor:at:) ifTrue:[
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   342
                text := model helpTextFor:aView at:x@y.
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   343
                text notNil ifTrue:[^ text].
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   344
            ].
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   345
            (model respondsTo:#helpTextFor:) ifTrue:[
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   346
                text := model helpTextFor:aView.
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   347
                text notNil ifTrue:[^ text].
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   348
            ]
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   349
        ].
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   350
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   351
        (sv respondsTo:#helpTextFor:) ifTrue:[
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   352
            text := sv helpTextFor:aView.
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   353
            text notNil ifTrue:[^ text].
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   354
            text := sv helpTextFor:v.
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   355
            text notNil ifTrue:[^ text].
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   356
         ].
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   357
         v := sv.
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   358
    ].
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   359
100
claus
parents: 98
diff changeset
   360
    (v notNil and:[v respondsTo:#application]) ifTrue:[
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   361
        (model := v application) notNil ifTrue:[
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   362
            (model respondsTo:#helpTextFor:at:) ifTrue:[
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   363
                text := model helpTextFor:aView at:x@y.
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   364
                text notNil ifTrue:[^ text].
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   365
            ].
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   366
            (model respondsTo:#helpTextFor:) ifTrue:[
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   367
                text := model helpTextFor:aView.
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   368
                text notNil ifTrue:[^ text].
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   369
            ]
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   370
        ]
100
claus
parents: 98
diff changeset
   371
    ].
claus
parents: 98
diff changeset
   372
    (v notNil and:[v respondsTo:#model]) ifTrue:[
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   373
        (model := v model) notNil ifTrue:[
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   374
            (model respondsTo:#helpTextFor:at:) ifTrue:[
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   375
                text := model helpTextFor:aView at:x@y.
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   376
                text notNil ifTrue:[^ text].
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   377
            ].
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   378
            (model respondsTo:#helpTextFor:) ifTrue:[
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   379
                text := model helpTextFor:aView.
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   380
                text notNil ifTrue:[^ text].
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   381
            ]
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   382
        ]
100
claus
parents: 98
diff changeset
   383
    ].
claus
parents: 98
diff changeset
   384
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   385
    (view class respondsTo:#helpText) ifTrue:[
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   386
        text := view class helpText.
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   387
        text notNil ifTrue:[^ text].
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   388
    ].
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   389
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   390
    ^ nil
100
claus
parents: 98
diff changeset
   391
claus
parents: 98
diff changeset
   392
    "Modified: 31.8.1995 / 20:38:00 / claus"
296
c7ae52588794 #superView -> #container
Claus Gittinger <cg@exept.de>
parents: 276
diff changeset
   393
    "Modified: 5.6.1996 / 14:18:23 / cg"
100
claus
parents: 98
diff changeset
   394
!
claus
parents: 98
diff changeset
   395
138
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   396
hideIfPointerLeft:aView
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   397
    "hide help, if the pointer is not in aView"
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   398
138
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   399
    |whereOnScreen p|
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   400
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   401
"/    showProcess notNil ifTrue:[
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   402
"/        p := showProcess. showProcess := nil.
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   403
"/        p terminate.
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   404
"/    ].
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   405
276
19b205dde532 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 233
diff changeset
   406
    whereOnScreen := aView graphicsDevice pointerPosition.
138
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   407
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   408
    (currentFrame notNil
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   409
    and:[(currentFrame insetBy:1@1) containsPoint:whereOnScreen]) ifFalse:[
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   410
        self hideHelp.
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   411
        currentView := nil
138
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   412
    ].
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   413
276
19b205dde532 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 233
diff changeset
   414
    "Modified: 28.5.1996 / 20:18:28 / cg"
138
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   415
!
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   416
100
claus
parents: 98
diff changeset
   417
initiateHelpFor:aView atX:x y:y
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   418
    "start a timeout process to display help for aView after some delay"
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   419
100
claus
parents: 98
diff changeset
   420
    |text p|
claus
parents: 98
diff changeset
   421
claus
parents: 98
diff changeset
   422
    text := self helpTextFor:aView atX:x y:y.
claus
parents: 98
diff changeset
   423
claus
parents: 98
diff changeset
   424
    text notNil ifTrue:[
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   425
        DelayTime > 0 ifTrue:[
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   426
            showProcess notNil ifTrue:[
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   427
                p := showProcess. showProcess := nil.
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   428
                p terminate.
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   429
            ].
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   430
            showProcess := [
297
14971808870c #superView -> #container
Claus Gittinger <cg@exept.de>
parents: 296
diff changeset
   431
                    Delay waitForSeconds:DelayTime.
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   432
                    showProcess := nil.
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   433
                    self showHelp:text for:aView
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   434
            ] forkAt:(Processor userSchedulingPriority + 1).
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   435
        ] ifFalse:[
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   436
            self showHelp:text for:aView
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   437
        ]
100
claus
parents: 98
diff changeset
   438
    ].
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   439
297
14971808870c #superView -> #container
Claus Gittinger <cg@exept.de>
parents: 296
diff changeset
   440
    "Modified: 7.6.1996 / 10:02:19 / cg"
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   441
! !
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   442
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   443
!ActiveHelp methodsFor:'show / hide help'!
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   444
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   445
hideHelp
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   446
    "hide the help text"
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   447
98
claus
parents: 97
diff changeset
   448
    |p|
claus
parents: 97
diff changeset
   449
92
claus
parents: 59
diff changeset
   450
    showProcess notNil ifTrue:[
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   451
        p := showProcess. showProcess := nil.
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   452
        p terminate.
92
claus
parents: 59
diff changeset
   453
    ].
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   454
    currentHelpView notNil ifTrue:[
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   455
        [
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   456
            currentHelpView destroy.
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   457
            currentHelpView := nil.
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   458
            currentView := nil.
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   459
        ] valueUninterruptably
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   460
    ].
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   461
    currentFrame := nil.
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   462
    closeProcess notNil ifTrue:[
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   463
        p := closeProcess. closeProcess := nil.
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   464
        p terminate.
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   465
    ]
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   466
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   467
    "Modified: 27.4.1996 / 15:12:13 / cg"
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   468
!
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   469
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   470
showHelp:aHelpText for:view
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   471
    "show the help text for aView"
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   472
276
19b205dde532 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 233
diff changeset
   473
    |org p v dev|
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   474
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   475
    view == currentView ifTrue:[^ self].
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   476
92
claus
parents: 59
diff changeset
   477
    closeProcess notNil ifTrue:[
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   478
        p := closeProcess. closeProcess := nil.
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   479
        p terminate.
92
claus
parents: 59
diff changeset
   480
    ].
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   481
    currentHelpView notNil ifTrue:[
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   482
        self hideHelp
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   483
    ].
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   484
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   485
    org := view originRelativeTo:nil.
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   486
    currentFrame := org extent:view extent.
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   487
    org :=org + (view extent // 2).
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   488
100
claus
parents: 98
diff changeset
   489
    v := ActiveHelpView for:aHelpText withCRs.
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   490
276
19b205dde532 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 233
diff changeset
   491
    dev := view graphicsDevice.
19b205dde532 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 233
diff changeset
   492
    org := dev pointerPosition.
100
claus
parents: 98
diff changeset
   493
    org := org + (10@10).
276
19b205dde532 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 233
diff changeset
   494
    (org x + v width) > dev width ifTrue:[
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   495
        org := (org x - v width) @ org y
92
claus
parents: 59
diff changeset
   496
    ].
276
19b205dde532 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 233
diff changeset
   497
    (org y + v height) > dev height ifTrue:[
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   498
        org := org x @ (org y - v height).
92
claus
parents: 59
diff changeset
   499
    ].
claus
parents: 59
diff changeset
   500
100
claus
parents: 98
diff changeset
   501
    v origin:org.
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   502
"/    currentHelpView open.
100
claus
parents: 98
diff changeset
   503
    v realize.
claus
parents: 98
diff changeset
   504
    v enableButtonMotionEvents.
claus
parents: 98
diff changeset
   505
    v enableMotionEvents.
claus
parents: 98
diff changeset
   506
    currentHelpView := v.
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   507
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   508
    currentView := view.
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   509
    closeProcess := [
338
071f92621e3b oops - catching the terminateSignal is no good idea
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   510
        [
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   511
            (Delay forSeconds:ShowTime) wait.
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   512
            [
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   513
                currentHelpView notNil ifTrue:[
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   514
                    currentHelpView destroy.
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   515
                    currentHelpView := nil.
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   516
                ]
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   517
            ] valueUninterruptably
338
071f92621e3b oops - catching the terminateSignal is no good idea
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   518
        ] valueOnUnwindDo:[
071f92621e3b oops - catching the terminateSignal is no good idea
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   519
            closeProcess := nil.
233
196eb68b707c documentation
Claus Gittinger <cg@exept.de>
parents: 227
diff changeset
   520
        ].
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   521
    ] forkAt:(Processor userSchedulingPriority + 1).
100
claus
parents: 98
diff changeset
   522
claus
parents: 98
diff changeset
   523
    "Modified: 31.8.1995 / 19:20:45 / claus"
338
071f92621e3b oops - catching the terminateSignal is no good idea
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   524
    "Modified: 16.10.1996 / 00:36:22 / cg"
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   525
! !
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   526
338
071f92621e3b oops - catching the terminateSignal is no good idea
Claus Gittinger <cg@exept.de>
parents: 330
diff changeset
   527
!ActiveHelp class methodsFor:'documentation'!
138
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   528
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   529
version
344
42ae71c13eef *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 338
diff changeset
   530
    ^ '$Header: /cvs/stx/stx/libview2/ActiveHelp.st,v 1.18 1996-10-26 16:56:48 cg Exp $'
138
492fb73ca439 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 114
diff changeset
   531
! !
59
98a4d38cfc96 Initial revision
claus
parents:
diff changeset
   532
ActiveHelp initialize!