PopUpMenu.st
author Claus Gittinger <cg@exept.de>
Sun, 14 Jan 1996 15:21:47 +0100
changeset 284 fb625951b7fc
parent 281 0f41c95fa722
child 335 81c8965c4437
permissions -rw-r--r--
beispiel
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     1
"
5
claus
parents: 3
diff changeset
     2
 COPYRIGHT (c) 1989 by Claus Gittinger
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
     3
	      All Rights Reserved
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     4
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     5
 This software is furnished under a license and may be used
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     6
 only in accordance with the terms of that license and with the
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     8
 be provided or otherwise made available to, or used by, any
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
     9
 other person.  No title to or ownership of the software is
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    10
 hereby transferred.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    11
"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    12
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    13
PopUpView subclass:#PopUpMenu
281
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
    14
	instanceVariableNames:'menuView lastSelection memorize hideOnLeave actionLabels
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
    15
		actionLines actionValues hideOnRelease defaultHideOnRelease'
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
    16
	classVariableNames:'DefaultHideOnRelease'
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
    17
	poolDictionaries:''
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
    18
	category:'Views-Menus'
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    19
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    20
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    21
!PopUpMenu class methodsFor:'documentation'!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    22
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    23
copyright
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    24
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    25
 COPYRIGHT (c) 1989 by Claus Gittinger
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    26
	      All Rights Reserved
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    27
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    28
 This software is furnished under a license and may be used
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    29
 only in accordance with the terms of that license and with the
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    30
 inclusion of the above copyright notice.   This software may not
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    31
 be provided or otherwise made available to, or used by, any
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    32
 other person.  No title to or ownership of the software is
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    33
 hereby transferred.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    34
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    35
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    36
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    37
documentation
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    38
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    39
    This class provides PopUpMenu functionality; Actually, this class
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    40
    only provides the popup and shadow functionality and wraps another
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    41
    view, which is the actual menu-list (usually an instance of MenuView).
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    42
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    43
    PopUpMenus are usually created with a list of labels, selectors and a
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    44
    receivier. Once activated, the specified receiver will be sent a
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    45
    'selector'-message.
112
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
    46
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
    47
    PopupMenus may be either assigned statically to a view (via the #middleButtonMenu:
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
    48
    message) or created dynamically as required.
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
    49
    Static definition makes sense, if the menu stays constant and you want to
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
    50
    assign it once for the lifetime of the view.
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
    51
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
    52
    Dynamic menus are easier to use, if the number of or look of the entries has to
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
    53
    change according the internal state of some model. Also, this is the ST-80 way
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
    54
    of using popupMenus. For dynamic popups, the views model is asked for a menu
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
    55
    via the #menuSelector each time a button press occurs.
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
    56
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
    57
    See examples section for more.
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 59
diff changeset
    58
"
f4eaf04d1eaf *** empty log message ***
claus
parents: 59
diff changeset
    59
!
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    60
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 59
diff changeset
    61
examples
f4eaf04d1eaf *** empty log message ***
claus
parents: 59
diff changeset
    62
"
284
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    63
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    64
    Examples:
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    65
284
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    66
        |p|
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    67
        p := PopUpMenu
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    68
                labels:#('foo'
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    69
                         'bar'
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    70
                         'baz')
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    71
                selectors:#(
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    72
                            #foo
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    73
                            #bar
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    74
                            #baz)
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    75
                receiver:nil.
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    76
        p showAtPointer
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    77
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    78
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    79
    sometimes, you want to specify both selectors and some arguments
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    80
    to be sent; this is done by:
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    81
284
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    82
        |p|
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    83
        p := PopUpMenu
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    84
                labels:#('foo' 'bar' 'baz')
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    85
                selectors:#(#foo: #bar: #foo:)
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    86
                args:#(1 2 3)
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    87
                receiver:nil.
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    88
        p showAtPointer
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    89
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    90
    or, the same selector but different arguments:
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    91
284
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    92
        |p|
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    93
        p := PopUpMenu
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    94
                labels:#('foo' 'bar' 'baz')
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    95
                selectors:#foo:
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    96
                args:#(1 2 3)
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    97
                receiver:nil.
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
    98
        p showAtPointer
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    99
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   100
    Normally, you do not show the menu explicitely, but install
112
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
   101
    it as a either as middleButtonMenu of some view or return it from
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
   102
    a model. 
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
   103
    (Views/Controllers button-event handler will show it when the middle
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
   104
    button is pressed ...)
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
   105
    Static menu:
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   106
284
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   107
        |v m|
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   108
284
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   109
        v := View new.
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   110
        m := PopUpMenu
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   111
                labels:#('lower'
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   112
                         'raise'
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   113
                         '-'
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   114
                         'destroy')
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   115
                selectors:#(#lower #raise nil #destroy)
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   116
                receiver:v.
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   117
        v middleButtonMenu:m.
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   118
        v open
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   119
112
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
   120
    Dynamic menu:
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
   121
    (since we need some model which responds to a menu-message,
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
   122
     we use a plug in the example below; normally, this would be your model)
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
   123
284
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   124
        |v model|
112
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
   125
284
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   126
        model := Plug new.
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   127
        model respondTo:#getMenu with:[PopUpMenu labels:#('foo' 'bar')
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   128
                                                 selectors:#(foo bar)].
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   129
        model respondTo:#foo with:[Transcript showCr:'models foo called'].
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   130
        model respondTo:#bar with:[Transcript showCr:'models bar called'].
112
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
   131
284
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   132
        v := View new.
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   133
        v model:model; menu:#getMenu.
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   134
        v open
112
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
   135
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
   136
    Dynamic menus are the MVC-way (i.e. ST-80) way of doing things.
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
   137
    They are usually easier to use, if the menu changes depending on the models
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
   138
    state. (for example, see the systemBrowsers menus being different when
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
   139
    things are selected ...)
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
   140
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   141
    It is also possible, to add check-mark entries, with an entry string
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   142
    starting with the special sequence '\c' (for check-mark). The value
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   143
    passed will be the truth-state of the check-mark.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   144
284
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   145
        |m v|
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   146
284
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   147
        v := View new.
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   148
        m := PopUpMenu
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   149
                labels:#('\c foo'
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   150
                         '\c bar')
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   151
                selectors:#(#value: #value:)
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   152
                receiver:[:v | Transcript show:'arg: '; showCr:v].
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   153
        v middleButtonMenu:m.
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   154
        v open
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   155
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   156
    Finally, you can wrap other views into a popup menu (for example,
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   157
    to implement menus with icons or other components).
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   158
    The view should respond to some messages sent from here (for
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   159
    example: #hideSubmenus, #deselectWithoutRedraw and others).
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   160
    Currently there is only one class in the system, which can be used
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   161
    this way (PatternMenu in the DrawTool demo):
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   162
284
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   163
        |v p|
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   164
284
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   165
        v := View new.
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   166
        p := PatternMenu new.
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   167
        p patterns:(Array with:Color red
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   168
                          with:Color green
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   169
                          with:Color blue).
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   170
        v middleButtonMenu:(PopUpMenu forMenu:p).
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   171
        v open
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   172
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   173
    or try:
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   174
284
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   175
        |v p|
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   176
284
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   177
        v := View new.
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   178
        p := PatternMenu new.
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   179
        p patterns:(Array with:Color red
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   180
                          with:Color green
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   181
                          with:Color blue).
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   182
        p selectors:#value:.
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   183
        p receiver:[:val | v viewBackground:val. v clear].
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   184
        p args:(Array with:Color red
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   185
                      with:Color green
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   186
                      with:Color blue).
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   187
        v middleButtonMenu:(PopUpMenu forMenu:p).
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   188
        v open
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   189
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   190
        
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   191
    ST-80 style:
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   192
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   193
    The above menus all did some message send on selection; it is
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   194
    also possible, to use Smalltalk-80 style menus (which return some value
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   195
    from their startup method):
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   196
284
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   197
        |m selection|
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   198
284
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   199
        m := PopUpMenu
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   200
                labels:#('one' 'two' 'three').
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   201
        selection := m startUp.
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   202
        Transcript show:'the selection was: '; showCr:selection
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   203
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   204
    startUp will return the entries index, or 0 if there was no selection.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   205
    You can also specify an array of values to be returned instead of the
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   206
    index:
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   207
284
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   208
        |m selection|
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   209
284
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   210
        m := PopUpMenu
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   211
                labels:#('one' 'two' 'three')
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   212
                values:#(10 20 30).
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   213
        selection := m startUp.
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   214
        Transcript show:'the value was: '; showCr:selection
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   215
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   216
    In ST/X style menus, separating lines between entries are created
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   217
    by a '-'-string as its label text (and corresponding nil-entries in the
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   218
    selectors- and args-arrays).
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   219
    In ST-80, you have to pass the indices of the lines in an extra array:
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   220
284
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   221
        |m selection|
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   222
284
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   223
        m := PopUpMenu
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   224
                labels:#('one' 'two' 'three' 'four' 'five')
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   225
                lines:#(2 4).
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   226
        selection := m startUp.
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   227
        Transcript show:'the value was: '; showCr:selection
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   228
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   229
    or:
284
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   230
        |m selection|
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   231
284
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   232
        m := PopUpMenu
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   233
                labels:#('one' 'two' 'three')
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   234
                lines:#(2)
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   235
                values:#(10 20 30).
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   236
        selection := m startUp.
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   237
        Transcript show:'the value was: '; showCr:selection
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   238
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   239
    Use whichever interface you prefer.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   240
"
119
claus
parents: 112
diff changeset
   241
! !
claus
parents: 112
diff changeset
   242
claus
parents: 112
diff changeset
   243
!PopUpMenu class methodsFor:'instance creation'!
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   244
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   245
forMenu:aMenuView
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   246
    "this wraps an already existing menu - allowing to put any
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   247
     view (not just MenuViews) into popups (for example, menus
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   248
     with icons, or other components).
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   249
     Currently, there is only one example of different menus in
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   250
     the system (PatternMenu in the DrawTool) which could be used
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   251
     this way.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   252
     The view should respond to some of the menuView messages
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   253
     (such as hideSubmenu, deselectWithoutRedraw etc.)"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   254
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   255
    |newMenu|
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   256
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   257
    newMenu := self onSameDeviceAs:aMenuView. 
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   258
    newMenu addSubView:aMenuView.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   259
    newMenu menu:aMenuView.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   260
    ^ newMenu
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   261
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   262
202
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   263
labels:labels selector:aSelector args:args receiver:anObject
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   264
    "create and return a popup menu with labels as entries.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   265
     Each item will send aSelector with a corresponding argument from the
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   266
     args array to anObject. The menu is created on the default DIsplay"
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   267
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   268
    "
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   269
     OBSOLETE protocol: #labels:selectors:... knows how to handle single-symbol selectors-arg
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   270
    "
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   271
    ^ self labels:labels selectors:aSelector args:args receiver:anObject 
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   272
!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   273
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   274
labels:labels selector:aSelector args:args receiver:anObject for:aView
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   275
    "create and return a popup menu with labels as entries.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   276
     Each item will send aSelector with a corresponding argument from the
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   277
     args array to anObject. The menu is created on the same physical device
258
ae4b8f1a6738 interest is written with one 'r' (shame on me)
Claus Gittinger <cg@exept.de>
parents: 205
diff changeset
   278
     as aView (which is only of interest in multi-Display applications; 
202
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   279
     typical applications can use the sibbling message without the for: argument)."
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   280
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   281
    "
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   282
     OBSOLETE protocol: #labels:selectors:... knows how to handle single-symbol selectors-arg
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   283
    "
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   284
    ^ self labels:labels selectors:aSelector args:args receiver:anObject for:aView
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   285
!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   286
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   287
labels:labels selectors:selectors 
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   288
    "create and return a menu with label-items and selectors. The receiver
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   289
     will either be defined later, or not used at all (if opened via startUp)"
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   290
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   291
    ^ self labels:labels selectors:selectors args:nil receiver:nil for:nil
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   292
!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   293
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   294
labels:labels selectors:selectors args:argArray 
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   295
    "create and return a menu with label-items and selectors. The receiver
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   296
     will either be defined later, or not used at all (if opened via startUp)"
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   297
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   298
    ^ self labels:labels selectors:selectors args:argArray receiver:nil for:nil
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   299
!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   300
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   301
labels:labels selectors:selectors args:args receiver:anObject
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   302
    "create and return a popup menu with labels as entries.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   303
     Each item will send a corresponding selector:argument from the selectors-
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   304
     and args array to anObject. The menu is created on the default Display"
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   305
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   306
    ^ self labels:labels selectors:selectors args:args receiver:anObject for:nil
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   307
!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   308
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   309
labels:labels selectors:selectors args:args receiver:anObject for:aView
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 59
diff changeset
   310
    "create and return a popup menu with labels as entries.
f4eaf04d1eaf *** empty log message ***
claus
parents: 59
diff changeset
   311
     Each item will send a corresponding selector:argument from the selectors-
f4eaf04d1eaf *** empty log message ***
claus
parents: 59
diff changeset
   312
     and args array to anObject. The menu is created on the same physical device
258
ae4b8f1a6738 interest is written with one 'r' (shame on me)
Claus Gittinger <cg@exept.de>
parents: 205
diff changeset
   313
     as aView (which is only of interest in multi-Display applications; 
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 59
diff changeset
   314
     typical applications can use the sibbling message without the for: argument)."
f4eaf04d1eaf *** empty log message ***
claus
parents: 59
diff changeset
   315
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   316
    |newMenu|
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   317
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   318
    newMenu := self onSameDeviceAs:aView. 
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   319
    newMenu menu:(MenuView
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   320
		    labels:labels
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   321
		    selectors:selectors
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   322
		    args:args
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   323
		    receiver:anObject
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   324
		    in:newMenu).
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   325
    ^ newMenu
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   326
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   327
119
claus
parents: 112
diff changeset
   328
labels:labels selectors:selectors receiver:anObject
claus
parents: 112
diff changeset
   329
    "create and return a popup menu with labels as entries.
claus
parents: 112
diff changeset
   330
     Each item will send a message with a selector from the corresponding 
claus
parents: 112
diff changeset
   331
     selectors-array.
claus
parents: 112
diff changeset
   332
     The menu is created on the default Display."
claus
parents: 112
diff changeset
   333
claus
parents: 112
diff changeset
   334
    ^ self labels:labels selectors:selectors args:nil receiver:anObject for:nil
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 59
diff changeset
   335
!
f4eaf04d1eaf *** empty log message ***
claus
parents: 59
diff changeset
   336
202
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   337
labels:labels selectors:selectors receiver:anObject for:aView
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   338
    "create and return a popup menu with labels as entries.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   339
     Each item will send a corresponding selector from the selectors-array
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   340
     to anObject. The menu is created on the same physical device
258
ae4b8f1a6738 interest is written with one 'r' (shame on me)
Claus Gittinger <cg@exept.de>
parents: 205
diff changeset
   341
     as aView (which is only of interest in multi-Display applications; 
202
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   342
     typical applications can use the sibbling message without the for: argument)."
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 59
diff changeset
   343
202
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   344
    ^ self labels:labels selectors:selectors args:nil receiver:anObject for:aView
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   345
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   346
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   347
!PopUpMenu class methodsFor:'ST-80 instance creation'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   348
202
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   349
labelArray:labels lines:lines values:values 
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   350
    "ST80R4 compatibility"
119
claus
parents: 112
diff changeset
   351
202
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   352
    ^ self labels:labels lines:lines values:values 
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   353
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   354
119
claus
parents: 112
diff changeset
   355
labelArray:labels values:values 
claus
parents: 112
diff changeset
   356
    "ST80R4 compatibility"
claus
parents: 112
diff changeset
   357
claus
parents: 112
diff changeset
   358
    ^ self labels:labels lines:nil values:values 
claus
parents: 112
diff changeset
   359
!
claus
parents: 112
diff changeset
   360
202
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   361
labelList:labels 
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   362
    "ST80R4 compatibility:
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   363
	given a list consisting of group label entries (to be separated by
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   364
	lines), convert into standard form (using '-' for lines.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   365
    "
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   366
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   367
    ^ self labelList:labels values:nil
119
claus
parents: 112
diff changeset
   368
202
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   369
    "
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   370
     (PopUpMenu labels:#('1' '2' '3')) showAtPointer
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   371
     (PopUpMenu labelList:#(('1') ('2' '3'))) showAtPointer    
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   372
     (PopUpMenu labelList:#(('1') ('2') ('3'))) showAtPointer    
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   373
    "
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   374
!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   375
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   376
labelList:labels lines:lines values:values 
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   377
    "mhmh what is that ?"
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   378
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   379
    ^ (self new) labels:labels lines:lines values:values 
119
claus
parents: 112
diff changeset
   380
!
claus
parents: 112
diff changeset
   381
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   382
labelList:labels values:values 
119
claus
parents: 112
diff changeset
   383
    "ST80R4 compatibility:
claus
parents: 112
diff changeset
   384
	given a list consisting of group label entries (to be separated by
claus
parents: 112
diff changeset
   385
	lines), convert into standard form (using '-' for lines.
claus
parents: 112
diff changeset
   386
    "
claus
parents: 112
diff changeset
   387
claus
parents: 112
diff changeset
   388
    |newLabels newValues lS vS first|
claus
parents: 112
diff changeset
   389
claus
parents: 112
diff changeset
   390
    newLabels := OrderedCollection new.
claus
parents: 112
diff changeset
   391
    newValues := OrderedCollection new.
claus
parents: 112
diff changeset
   392
    lS := ReadStream on:labels.
claus
parents: 112
diff changeset
   393
    values notNil ifTrue:[vS := ReadStream on:values].
claus
parents: 112
diff changeset
   394
    first := true.
claus
parents: 112
diff changeset
   395
    [lS atEnd] whileFalse:[
claus
parents: 112
diff changeset
   396
	|entry|
claus
parents: 112
diff changeset
   397
claus
parents: 112
diff changeset
   398
	entry := lS next.
claus
parents: 112
diff changeset
   399
	entry isCollection ifTrue:[
claus
parents: 112
diff changeset
   400
	    first ifFalse:[
claus
parents: 112
diff changeset
   401
		newLabels add:'-'.
claus
parents: 112
diff changeset
   402
		values notNil ifTrue:[newValues add:nil]
claus
parents: 112
diff changeset
   403
	    ].
claus
parents: 112
diff changeset
   404
	    newLabels addAll:entry.
claus
parents: 112
diff changeset
   405
	    values notNil ifTrue:[newValues addAll:(vS next:entry size)]
claus
parents: 112
diff changeset
   406
	] ifFalse:[
claus
parents: 112
diff changeset
   407
	    newLabels add:entry.
claus
parents: 112
diff changeset
   408
	    values notNil ifTrue:[newValues add:(vS next)]
claus
parents: 112
diff changeset
   409
	].
claus
parents: 112
diff changeset
   410
	first := false.
claus
parents: 112
diff changeset
   411
    ].
claus
parents: 112
diff changeset
   412
    values isNil ifTrue:[
claus
parents: 112
diff changeset
   413
	^ self labels:newLabels
claus
parents: 112
diff changeset
   414
    ].
claus
parents: 112
diff changeset
   415
    ^ self labels:newLabels values:newValues
claus
parents: 112
diff changeset
   416
claus
parents: 112
diff changeset
   417
    "
claus
parents: 112
diff changeset
   418
     (PopUpMenu labels:#('1' '2' '3') values:#(1 2 3)) showAtPointer
claus
parents: 112
diff changeset
   419
     (PopUpMenu labelList:#(('1') ('2' '3')) values:#(1 2 3)) showAtPointer    
claus
parents: 112
diff changeset
   420
     (PopUpMenu labelList:#(('1') ('2') ('3')) values:#(1 2 3)) showAtPointer    
claus
parents: 112
diff changeset
   421
    "
claus
parents: 112
diff changeset
   422
!
claus
parents: 112
diff changeset
   423
202
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   424
labels:labels 
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   425
    "ST80R2 compatibility"
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   426
202
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   427
    ^ self labels:labels lines:nil values:nil 
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   428
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   429
202
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   430
labels:labels lines:lines 
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   431
    "ST80R2 compatibility"
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   432
202
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   433
    ^ self labels:labels lines:lines values:nil
77
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   434
!
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   435
202
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   436
labels:labels lines:lines values:values 
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   437
    "ST80R2 compatibility"
127
claus
parents: 126
diff changeset
   438
202
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   439
    ^ (self new) labels:labels lines:lines values:values 
77
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   440
!
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   441
202
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   442
labels:labels values:values 
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   443
    "ST80R2 compatibility"
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   444
202
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   445
    ^ self labels:labels lines:nil values:values 
127
claus
parents: 126
diff changeset
   446
! !
claus
parents: 126
diff changeset
   447
202
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   448
!PopUpMenu class methodsFor:'defaults'!
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   449
202
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   450
updateStyleCache
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   451
    DefaultHideOnRelease := StyleSheet at:#popupHideOnRelease default:true.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   452
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   453
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   454
!PopUpMenu methodsFor:'ST-80 activation'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   455
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   456
startUp
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   457
    "start the menu modal - return the selected value,
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   458
     or - if no values where specified - return the index.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   459
     If nothing was selected, return 0.
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   460
     Modal - i.e. stay in the menu until finished.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   461
     This is the ST-80 way of launching a menu."
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   462
281
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   463
    ^ self startUpAt:nil
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   464
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   465
    "
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   466
     Transcript showCr:(PopUpMenu labels:#('foo' 'bar' 'baz')) startUp 
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   467
     Transcript showCr:(PopUpMenu labels:#('foo' 'bar' 'baz')
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   468
                                  values:#(foo bar baz)) startUp
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   469
    "
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   470
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   471
    "Modified: 10.1.1996 / 20:16:40 / cg"
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   472
!
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   473
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   474
startUpAt:aPoint
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   475
    "start the menu modal - return the selected value,
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   476
     or - if no values where specified - return the index.
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   477
     If nothing was selected, return 0.
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   478
     Modal - i.e. stay in the menu until finished.
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   479
     This is the ST-80 way of launching a menu."
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   480
96
5996b2afa4fb *** empty log message ***
claus
parents: 95
diff changeset
   481
    |return rec sel0 sel1 arg|
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 59
diff changeset
   482
119
claus
parents: 112
diff changeset
   483
    return := 0.
claus
parents: 112
diff changeset
   484
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   485
    menuView action:[:selected |
281
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   486
        |actionIndex value sel retVal|
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   487
281
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   488
        retVal := 0.
95
7535cfca9509 *** empty log message ***
claus
parents: 81
diff changeset
   489
281
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   490
        menuView args isNil ifTrue:[
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   491
            menuView selectors notNil ifTrue:[
119
claus
parents: 112
diff changeset
   492
"/                sel := menuView selectors at:selected.
claus
parents: 112
diff changeset
   493
"/                sel notNil ifTrue:[sel0 := sel].
claus
parents: 112
diff changeset
   494
claus
parents: 112
diff changeset
   495
"/                (arg := menuView checkFlags at:selected) isNil ifTrue:[
281
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   496
                    sel0 := menuView selectors at:selected.
119
claus
parents: 112
diff changeset
   497
"/                ] ifFalse:[
claus
parents: 112
diff changeset
   498
"/                    sel1 := menuView selectors at:selected.
claus
parents: 112
diff changeset
   499
"/                ].
281
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   500
                "/ retVal := nil.
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   501
            ]
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   502
        ] ifFalse:[
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   503
            actionIndex := menuView args at:selected.
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   504
            actionIndex notNil ifTrue:[
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   505
                actionValues isNil ifTrue:[
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   506
                    menuView selectors notNil ifTrue:[
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   507
                    "/ mhmh an ST/X menu started the ST-80 way
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   508
                        sel1 := menuView selectors at:selected.
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   509
                        arg := actionIndex.
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   510
                        "/ retVal := nil.
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   511
                    ] ifFalse:[
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   512
                        retVal := actionIndex
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   513
                    ]
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   514
                ] ifFalse:[
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   515
                    retVal := actionValues at:actionIndex.
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   516
                    (retVal isKindOf:PopUpMenu) ifTrue:[
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   517
                        retVal := retVal startUp
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   518
                    ]
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   519
                ]
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   520
            ] ifFalse:[
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   521
                "/ mhmh an ST/X menu started the ST-80 way
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   522
                menuView selectors notNil ifTrue:[
119
claus
parents: 112
diff changeset
   523
"/                    (arg := menuView checkFlags at:selected) isNil ifTrue:[
281
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   524
                        sel0 := menuView selectors at:selected.
119
claus
parents: 112
diff changeset
   525
"/                    ] ifFalse:[
claus
parents: 112
diff changeset
   526
"/                        sel1 := menuView selectors at:selected.
claus
parents: 112
diff changeset
   527
"/                    ].
281
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   528
                    "/ retVal := nil.
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   529
                ]
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   530
            ]
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   531
        ].
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   532
        return := retVal
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   533
    ].
281
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   534
    aPoint isNil ifTrue:[
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   535
        self showAtPointer
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   536
    ] ifFalse:[
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   537
        self showAt:aPoint.
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   538
    ].
96
5996b2afa4fb *** empty log message ***
claus
parents: 95
diff changeset
   539
5996b2afa4fb *** empty log message ***
claus
parents: 95
diff changeset
   540
    "/ 
5996b2afa4fb *** empty log message ***
claus
parents: 95
diff changeset
   541
    "/ mhmh an ST/X menu started the ST-80 way
5996b2afa4fb *** empty log message ***
claus
parents: 95
diff changeset
   542
    "/
5996b2afa4fb *** empty log message ***
claus
parents: 95
diff changeset
   543
    (sel0 notNil or:[sel1 notNil]) ifTrue:[
281
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   544
        rec := menuView receiver.
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   545
        sel0 notNil ifTrue:[
131
claus
parents: 127
diff changeset
   546
^ sel0
claus
parents: 127
diff changeset
   547
"/            rec perform:sel0
281
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   548
        ] ifFalse:[
131
claus
parents: 127
diff changeset
   549
^ Array with:sel1 with:arg.
claus
parents: 127
diff changeset
   550
"/            rec perform:sel1 with:arg.
281
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   551
        ]
95
7535cfca9509 *** empty log message ***
claus
parents: 81
diff changeset
   552
    ].
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 59
diff changeset
   553
    ^ return
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   554
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   555
    "
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 59
diff changeset
   556
     Transcript showCr:(PopUpMenu labels:#('foo' 'bar' 'baz')) startUp 
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   557
     Transcript showCr:(PopUpMenu labels:#('foo' 'bar' 'baz')
281
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   558
                                  values:#(foo bar baz)) startUp
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   559
    "
281
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   560
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   561
    "Created: 10.1.1996 / 20:11:42 / cg"
0f41c95fa722 added method to open menu at a particular position
Claus Gittinger <cg@exept.de>
parents: 258
diff changeset
   562
    "Modified: 10.1.1996 / 20:12:26 / cg"
110
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   563
!
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   564
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   565
startUpWithHeading:aString
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   566
    "start the menu modal - return the selected value,
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   567
     or - if no values where specified - return the index.
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   568
     If nothing was selected, return 0.
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   569
     Modal - i.e. stay in the menu until finished.
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   570
     This is the ST-80 way of launching a menu."
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   571
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   572
    defaultHideOnRelease := false.
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   573
    menuView labels notNil ifTrue:[
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   574
	menuView labels:(Array with:aString with:'=') , menuView labels.
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   575
    ].
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   576
    menuView selectors notNil ifTrue:[
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   577
	menuView selectors:(Array with:nil with:nil) , menuView selectors.
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   578
    ].
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   579
"/    menuView disable:1; disable:2.
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   580
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   581
    ^ self startUp.
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   582
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   583
    "
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   584
     (PopUpMenu
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   585
	labels:#('foo' 'bar'))
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   586
	startUp
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   587
    "
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   588
    "
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   589
     (PopUpMenu
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   590
	labels:#('foo' 'bar'))
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   591
	startUpWithHeading:'hello'
eb59f6e31e84 *** empty log message ***
claus
parents: 105
diff changeset
   592
    "
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   593
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   594
202
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   595
!PopUpMenu methodsFor:'accessing-behavior'!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   596
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   597
hideOnLeave:aBoolean
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   598
    "set/clear the hideOnLeave attribute, which controls
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   599
     if the menu should be hidden when the pointer leaves
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   600
     the view (used with multiple-menus)"
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   601
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   602
    hideOnLeave := aBoolean
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   603
!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   604
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   605
hideOnRelease:aBoolean
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   606
    "set/clear the hideOnRelease attribute, which controls
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   607
     if the menu should be hidden when the button is released"
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   608
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   609
    hideOnRelease := aBoolean.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   610
    menuView hideOnRelease:aBoolean 
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   611
! !
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   612
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   613
!PopUpMenu methodsFor:'accessing-items'!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   614
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   615
indexOf:indexOrName
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   616
    "return the index of a submenu - or 0 if there is none"
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   617
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   618
    ^ menuView indexOf:indexOrName
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   619
!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   620
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   621
labels
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   622
    "return the list of labels"
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   623
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   624
    actionLabels notNil ifTrue:[
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   625
	^ actionLabels asStringCollection
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   626
    ].
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   627
    ^ menuView list
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   628
!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   629
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   630
labels:labelString lines:lineArray values:valueArray
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   631
    "define the menu the ST-80 way (with labels and lines defined separately)"
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   632
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   633
    |labelArray argArray convertedLabels 
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   634
     offs dstOffs linePos|
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   635
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   636
    actionLabels := labelString.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   637
    actionLines := lineArray.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   638
    actionValues := valueArray.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   639
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   640
    labelArray := labelString asStringCollection.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   641
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   642
    convertedLabels := Array new:(labelArray size + lineArray size).
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   643
    argArray := Array new:(labelArray size + lineArray size).
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   644
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   645
    offs := 1.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   646
    dstOffs := 1.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   647
    1 to:lineArray size do:[:lineIndex |
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   648
	linePos := lineArray at:lineIndex.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   649
	[offs <= linePos] whileTrue:[
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   650
	    convertedLabels at:dstOffs put:(labelArray at:offs).
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   651
	    argArray at:dstOffs put:offs.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   652
	    offs := offs + 1.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   653
	    dstOffs := dstOffs + 1
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   654
	].
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   655
	convertedLabels at:dstOffs put:'-'.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   656
	argArray at:dstOffs put:nil.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   657
	dstOffs := dstOffs + 1
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   658
    ].
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   659
    [offs <= labelArray size] whileTrue:[
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   660
	convertedLabels at:dstOffs put:(labelArray at:offs).
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   661
	argArray at:dstOffs put:offs.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   662
	offs := offs + 1.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   663
	dstOffs := dstOffs + 1
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   664
    ].
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   665
    self menu:(MenuView
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   666
			labels:convertedLabels
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   667
		     selectors:nil
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   668
			  args:argArray
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   669
		      receiver:nil 
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   670
			    in:self)
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   671
!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   672
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   673
lines
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   674
    "st-80 compatibility"
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   675
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   676
    ^ actionLines
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   677
!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   678
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   679
numberOfItems
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   680
    "return the number of items in the menu"
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   681
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   682
    actionLabels notNil ifTrue:[
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   683
	^ actionLabels asStringCollection size
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   684
    ].
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   685
    ^ menuView list size
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   686
!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   687
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   688
remove:indexOrName
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   689
    "remove a menu entry"
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   690
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   691
    menuView remove:indexOrName
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   692
!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   693
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   694
subMenuAt:indexOrName put:aMenu
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   695
    "define a submenu to be shown for entry indexOrName"
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   696
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   697
"
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   698
    aMenu hideOnLeave:true.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   699
"
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   700
    menuView subMenuAt:indexOrName put:aMenu.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   701
    "tell the submenu to notify me when action is performed"
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   702
    aMenu superMenu:self.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   703
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   704
    "
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   705
     |v m someObject|
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   706
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   707
     v := View new.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   708
     m := PopUpMenu labels:#('1' '2' '3')
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   709
		 selectors:#(one two nil)
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   710
		  receiver:someObject 
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   711
		       for:nil.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   712
     m subMenuAt:3 put:(PopUpMenu
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   713
			     labels:#('a' 'b' 'c')
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   714
			  selectors:#(a b c)
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   715
			   receiver:someObject 
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   716
				for:nil).
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   717
     v middleButtonMenu:m.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   718
     v realize
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   719
    "
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   720
!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   721
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   722
values
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   723
    "st-80 compatibility"
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   724
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   725
    ^ actionValues
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   726
!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   727
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   728
values:aValueArray
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   729
    "st-80 compatibility"
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   730
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   731
    actionValues := aValueArray
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   732
! !
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   733
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   734
!PopUpMenu methodsFor:'accessing-look'!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   735
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   736
font:aFont
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   737
    menuView font:aFont
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   738
!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   739
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   740
viewBackground:aColor
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   741
    "this is a kludge and will vanish ..."
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   742
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   743
    super viewBackground:aColor.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   744
    menuView viewBackground:aColor
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   745
! !
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   746
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   747
!PopUpMenu methodsFor:'accessing-mvc'!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   748
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   749
changeMessage
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   750
    "forward from my menu"
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   751
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   752
    ^ menuView changeMessage
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   753
!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   754
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   755
changeMessage:aSymbol
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   756
    "forward to my menu"
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   757
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   758
    menuView changeMessage:aSymbol
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   759
!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   760
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   761
model 
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   762
    ^ menuView model 
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   763
!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   764
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   765
model:aModel
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   766
    menuView model:aModel
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   767
! !
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   768
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   769
!PopUpMenu methodsFor:'deactivation'!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   770
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   771
hide
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   772
    "hide the menu - if there are any pop-up-submenus, hide them also"
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   773
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   774
    menuView hideSubmenu.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   775
    windowGroup notNil ifTrue:[
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   776
	windowGroup removeView:menuView.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   777
    ].
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   778
    super hide.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   779
    menuView superMenu notNil ifTrue:[
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   780
	menuView superMenu regainControl
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   781
    ].
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   782
! !
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   783
70
14443a9ea4ec *** empty log message ***
claus
parents: 63
diff changeset
   784
!PopUpMenu methodsFor:'event handling'!
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   785
161
claus
parents: 137
diff changeset
   786
buttonMotion:state x:x y:y
70
14443a9ea4ec *** empty log message ***
claus
parents: 63
diff changeset
   787
    |p superMenu|
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   788
161
claus
parents: 137
diff changeset
   789
    state == 0 ifTrue:[^ self].
claus
parents: 137
diff changeset
   790
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   791
    ((x >= 0) and:[x < width]) ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   792
	((y >= 0) and:[y < height]) ifTrue:[
105
3d064ba4a0cc *** empty log message ***
claus
parents: 96
diff changeset
   793
	    hideOnRelease := true.
161
claus
parents: 137
diff changeset
   794
	    menuView buttonMotion:state x:x y:y.
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   795
	    ^ self
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   796
	]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   797
    ].
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   798
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   799
    "outside of myself"
70
14443a9ea4ec *** empty log message ***
claus
parents: 63
diff changeset
   800
    superMenu := menuView superMenu.
14443a9ea4ec *** empty log message ***
claus
parents: 63
diff changeset
   801
    superMenu notNil ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   802
	p := device translatePoint:(x @ y)
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   803
			      from:drawableId
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   804
				to:(menuView superMenu id).
161
claus
parents: 137
diff changeset
   805
	superMenu buttonMotion:state x:p x y:p y
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   806
    ].
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   807
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   808
    menuView subMenuShown isNil ifTrue:[
161
claus
parents: 137
diff changeset
   809
	menuView pointerLeave:state.
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   810
    ].
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   811
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   812
    hideOnLeave ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   813
	self hide
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   814
    ].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   815
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   816
105
3d064ba4a0cc *** empty log message ***
claus
parents: 96
diff changeset
   817
buttonPress:button x:x y:y
3d064ba4a0cc *** empty log message ***
claus
parents: 96
diff changeset
   818
    hideOnRelease ifTrue:[
3d064ba4a0cc *** empty log message ***
claus
parents: 96
diff changeset
   819
	self hide.
3d064ba4a0cc *** empty log message ***
claus
parents: 96
diff changeset
   820
"
3d064ba4a0cc *** empty log message ***
claus
parents: 96
diff changeset
   821
	menuView buttonRelease:button x:x y:y.
3d064ba4a0cc *** empty log message ***
claus
parents: 96
diff changeset
   822
"
3d064ba4a0cc *** empty log message ***
claus
parents: 96
diff changeset
   823
	menuView superMenu notNil ifTrue:[
3d064ba4a0cc *** empty log message ***
claus
parents: 96
diff changeset
   824
	    menuView superMenu submenuTriggered 
3d064ba4a0cc *** empty log message ***
claus
parents: 96
diff changeset
   825
	].
3d064ba4a0cc *** empty log message ***
claus
parents: 96
diff changeset
   826
	menuView buttonRelease:button x:x y:y.
3d064ba4a0cc *** empty log message ***
claus
parents: 96
diff changeset
   827
    ] ifFalse:[
3d064ba4a0cc *** empty log message ***
claus
parents: 96
diff changeset
   828
	hideOnRelease := true.
3d064ba4a0cc *** empty log message ***
claus
parents: 96
diff changeset
   829
	((x >= 0) and:[x < width]) ifTrue:[
3d064ba4a0cc *** empty log message ***
claus
parents: 96
diff changeset
   830
	    ((y >= 0) and:[y < height]) ifTrue:[
3d064ba4a0cc *** empty log message ***
claus
parents: 96
diff changeset
   831
		menuView buttonPress:button x:x y:y.
3d064ba4a0cc *** empty log message ***
claus
parents: 96
diff changeset
   832
		^ self
3d064ba4a0cc *** empty log message ***
claus
parents: 96
diff changeset
   833
	    ]
3d064ba4a0cc *** empty log message ***
claus
parents: 96
diff changeset
   834
	].
3d064ba4a0cc *** empty log message ***
claus
parents: 96
diff changeset
   835
    ].
3d064ba4a0cc *** empty log message ***
claus
parents: 96
diff changeset
   836
!
3d064ba4a0cc *** empty log message ***
claus
parents: 96
diff changeset
   837
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   838
buttonRelease:button x:x y:y
105
3d064ba4a0cc *** empty log message ***
claus
parents: 96
diff changeset
   839
    hideOnRelease ifFalse:[
3d064ba4a0cc *** empty log message ***
claus
parents: 96
diff changeset
   840
	^ self
3d064ba4a0cc *** empty log message ***
claus
parents: 96
diff changeset
   841
    ].
3d064ba4a0cc *** empty log message ***
claus
parents: 96
diff changeset
   842
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   843
    self hide.
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   844
"
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   845
    menuView buttonRelease:button x:x y:y.
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   846
"
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   847
    menuView superMenu notNil ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   848
	menuView superMenu submenuTriggered 
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   849
    ].
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   850
    menuView buttonRelease:button x:x y:y.
112
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
   851
!
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
   852
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
   853
keyPress:key x:x y:y
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
   854
"/    hideOnRelease := true.
81633ba1bf40 *** empty log message ***
claus
parents: 110
diff changeset
   855
    menuView keyPress:key x:x y:y.
202
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   856
!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   857
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   858
pointerEnter:state x:x y:y
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   859
    "catch quick release of button"
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   860
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   861
    hideOnLeave ifTrue:[
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   862
	state == 0 ifTrue:[^ self hide].
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   863
    ]
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   864
!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   865
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   866
pointerLeave:state
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   867
"/    menuView pointerLeave:state.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   868
"/    hideOnLeave ifTrue:[
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   869
"/        self hide
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   870
"/    ].
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   871
"/    menuView superMenu notNil ifTrue:[
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   872
"/        menuView superMenu regainControl
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   873
"/    ]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   874
! !
202
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   875
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   876
!PopUpMenu methodsFor:'initialization'!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   877
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   878
initEvents
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   879
    super initEvents.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   880
    self enableEnterLeaveEvents.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   881
    self enableMotionEvents.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   882
!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   883
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   884
initialize
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   885
    super initialize.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   886
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   887
    memorize := true.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   888
    hideOnLeave := false.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   889
    defaultHideOnRelease := DefaultHideOnRelease.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   890
! !
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   891
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   892
!PopUpMenu methodsFor:'menuview messages'!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   893
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   894
doesNotUnderstand:aMessage
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   895
    "forward all menu-view messages"
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   896
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   897
    (menuView respondsTo:(aMessage selector)) ifTrue:[
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   898
	^ aMessage sendTo:menuView
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   899
    ].
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   900
    ^ super doesNotUnderstand:aMessage
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   901
! !
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   902
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   903
!PopUpMenu methodsFor:'private accessing'!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   904
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   905
menu:aMenu
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   906
    "set the actual menu"
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   907
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   908
    menuView := aMenu.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   909
    menuView origin:(margin @ margin).
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   910
    menuView borderWidth:0.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   911
    menuView masterView:self
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   912
!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   913
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   914
menuView
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   915
    "return the actual menu"
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   916
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   917
    ^ menuView
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   918
!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   919
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   920
superMenu:aMenu
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   921
    "return the superMenu"
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   922
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   923
    menuView superMenu:aMenu
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   924
! !
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   925
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   926
!PopUpMenu methodsFor:'realization'!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   927
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   928
fixSize
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   929
    "called right before the view is made visible.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   930
     adjust my size to the size of the actual menu"
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   931
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   932
    |extra newWidth newHeight|
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   933
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   934
    extra := margin * 2.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   935
    menuView resizeIfChanged.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   936
    newWidth := menuView width + extra.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   937
    newHeight := menuView height + extra.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   938
    ((newWidth ~~ width) or:[newHeight ~~ height]) ifTrue:[
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   939
	self extent:(menuView width + extra) @ (menuView height + extra)
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   940
    ].
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   941
    super fixSize
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   942
!
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   943
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   944
realize
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   945
    menuView deselectWithoutRedraw.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   946
    super realize.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   947
    hideOnRelease := defaultHideOnRelease.
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   948
! !
01f3cbb8e20e checkin from browser
Claus Gittinger <cg@exept.de>
parents: 174
diff changeset
   949
205
6814c0bf8df8 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 202
diff changeset
   950
!PopUpMenu class methodsFor:'documentation'!
6814c0bf8df8 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 202
diff changeset
   951
6814c0bf8df8 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 202
diff changeset
   952
version
284
fb625951b7fc beispiel
Claus Gittinger <cg@exept.de>
parents: 281
diff changeset
   953
    ^ '$Header: /cvs/stx/stx/libwidg/PopUpMenu.st,v 1.31 1996-01-14 14:21:47 cg Exp $'
205
6814c0bf8df8 checkin from browser
Claus Gittinger <cg@exept.de>
parents: 202
diff changeset
   954
! !