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