PopUpMenu.st
author claus
Mon, 10 Oct 1994 04:03:47 +0100
changeset 59 450ce95a72a4
parent 38 4b9b70b2cc87
child 63 f4eaf04d1eaf
permissions -rw-r--r--
*** empty log message ***
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
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    15
			      actionLabels actionLines actionValues'
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    16
       classVariableNames:''
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    17
       poolDictionaries:''
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    18
       category:'Views-Menus'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    19
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    20
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    21
PopUpMenu comment:'
5
claus
parents: 3
diff changeset
    22
COPYRIGHT (c) 1989 by Claus Gittinger
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    23
	      All Rights Reserved
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    24
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    25
$Header: /cvs/stx/stx/libwidg/PopUpMenu.st,v 1.8 1994-10-10 03:02:35 claus Exp $
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    26
'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    27
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    28
!PopUpMenu class methodsFor:'documentation'!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    29
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    30
copyright
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    31
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    32
 COPYRIGHT (c) 1989 by Claus Gittinger
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    33
	      All Rights Reserved
38
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
 This software is furnished under a license and may be used
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    36
 only in accordance with the terms of that license and with the
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    37
 inclusion of the above copyright notice.   This software may not
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    38
 be provided or otherwise made available to, or used by, any
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    39
 other person.  No title to or ownership of the software is
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    40
 hereby transferred.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    41
"
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
version
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    45
"
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    46
$Header: /cvs/stx/stx/libwidg/PopUpMenu.st,v 1.8 1994-10-10 03:02:35 claus Exp $
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    47
"
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
documentation
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    51
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    52
    This class provides PopUpMenu functionality; Actually, this class
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    53
    only provides the popup and shadow functionality and wraps another
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    54
    view, which is the actual menu-list (usually an instance of MenuView).
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    55
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    56
    PopUpMenus are usually created with a list of labels, selectors and a
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    57
    receivier. Once activated, the specified receiver will be sent a
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    58
    'selector'-message.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    59
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    60
    Examples:
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    61
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    62
	|p|
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    63
	p := PopUpMenu
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    64
		labels:#('foo'
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    65
			 'bar'
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    66
			 'baz')
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    67
		selectors:#(
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    68
			    #foo
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    69
			    #bar
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    70
			    #baz)
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    71
		receiver:nil.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    72
	p showAtPointer
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    73
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    74
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    75
    sometimes, you want to specify both selectors and some arguments
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    76
    to be sent; this is done by:
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    77
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    78
	|p|
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    79
	p := PopUpMenu
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    80
		labels:#('foo' 'bar' 'baz')
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    81
		selectors:#(#foo: #bar: #foo:)
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    82
		args:#(1 2 3)
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    83
		receiver:nil.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    84
	p showAtPointer
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    85
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    86
    or, the same selector but different arguments:
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    87
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    88
	|p|
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    89
	p := PopUpMenu
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    90
		labels:#('foo' 'bar' 'baz')
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    91
		selectors:#foo:
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    92
		args:#(1 2 3)
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    93
		receiver:nil.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    94
	p showAtPointer
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    95
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    96
    Normally, you do not show the menu explicitely, but install
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    97
    it as a middleButtonMenu of some view. (Views button-event handler
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    98
    will show it when the button is pressed ...)
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    99
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   100
	|v m|
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   101
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   102
	v := View new.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   103
	m := PopUpMenu
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   104
		labels:#('lower'
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   105
			 'raise'
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   106
			 '-'
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   107
			 'destroy')
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   108
		selectors:#(#lower #raise nil #destroy)
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   109
		receiver:v.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   110
	v middleButtonMenu:m.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   111
	v open
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
    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
   114
    starting with the special sequence '\c' (for check-mark). The value
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   115
    passed will be the truth-state of the check-mark.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   116
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   117
	|m v|
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   118
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   119
	v := View new.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   120
	m := PopUpMenu
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   121
		labels:#('\c foo'
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   122
			 '\c bar')
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   123
		selectors:#(#value: #value:)
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   124
		receiver:[:v | Transcript show:'arg: '; showCr:v].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   125
	v middleButtonMenu:m.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   126
	v open
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   127
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   128
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   129
    Finally, you can wrap other views into a popup menu (for example,
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   130
    to implement menus with icons or other components).
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   131
    The view should respond to some messages sent from here (for
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   132
    example: #hideSubmenus, #deselectWithoutRedraw and others).
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   133
    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
   134
    this way (PatternMenu in the DrawTool demo):
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   135
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   136
	|v p|
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   137
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   138
	v := View new.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   139
	p := PatternMenu new.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   140
	p patterns:(Array with:Color red
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   141
			  with:Color green
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   142
			  with:Color blue).
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   143
	v middleButtonMenu:(PopUpMenu forMenu:p).
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   144
	v open
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   145
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   146
    or try:
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   147
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   148
	|v p|
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   149
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   150
	v := View new.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   151
	p := PatternMenu new.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   152
	p patterns:(Array with:Color red
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   153
			  with:Color green
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   154
			  with:Color blue).
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   155
	p selectors:#value:.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   156
	p receiver:[:val | v viewBackground:val. v clear].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   157
	p args:(Array with:Color red
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   158
		      with:Color green
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   159
		      with:Color blue).
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   160
	v middleButtonMenu:(PopUpMenu forMenu:p).
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   161
	v open
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   162
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   163
        
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   164
    ST-80 style:
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   165
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   166
    The above menus all did some message send on selection; it is
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   167
    also possible, to use Smalltalk-80 style menus (which return some value
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   168
    from their startup method):
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   169
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   170
	|m selection|
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   171
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   172
	m := PopUpMenu
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   173
		labels:#('one' 'two' 'three').
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   174
	selection := m startUp.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   175
	Transcript show:'the selection was: '; showCr:selection
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   176
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   177
    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
   178
    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
   179
    index:
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   180
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   181
	|m selection|
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   182
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   183
	m := PopUpMenu
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   184
		labels:#('one' 'two' 'three')
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   185
		values:#(10 20 30).
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   186
	selection := m startUp.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   187
	Transcript show:'the value was: '; showCr:selection
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   188
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   189
    In ST/X style menus, separating lines between entries are created
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   190
    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
   191
    selectors- and args-arrays).
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   192
    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
   193
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   194
	|m selection|
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   195
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   196
	m := PopUpMenu
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   197
		labels:#('one' 'two' 'three' 'four' 'five')
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   198
		lines:#(2 4).
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   199
	selection := m startUp.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   200
	Transcript show:'the value was: '; showCr:selection
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   201
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   202
    or:
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   203
	|m selection|
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   204
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   205
	m := PopUpMenu
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   206
		labels:#('one' 'two' 'three')
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   207
		lines:#(2)
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   208
		values:#(10 20 30).
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   209
	selection := m startUp.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   210
	Transcript show:'the value was: '; showCr:selection
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   211
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   212
    Use whichever interface you prefer.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   213
"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   214
! !
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   215
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   216
!PopUpMenu class methodsFor:'instance creation'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   217
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   218
onSameDeviceAs:aView
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   219
    "this takes care of the device on which the view (for which
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   220
     the popup-menu is to be created) is located."
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   221
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   222
    aView isNil ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   223
	^ self on:Display
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   224
    ].
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   225
    ^ self on:(aView device)
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   226
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   227
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   228
forMenu:aMenuView
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   229
    "this wraps an already existing menu - allowing to put any
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   230
     view (not just MenuViews) into popups (for example, menus
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   231
     with icons, or other components).
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   232
     Currently, there is only one example of different menus in
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   233
     the system (PatternMenu in the DrawTool) which could be used
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   234
     this way.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   235
     The view should respond to some of the menuView messages
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   236
     (such as hideSubmenu, deselectWithoutRedraw etc.)"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   237
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   238
    |newMenu|
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   239
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   240
    newMenu := self onSameDeviceAs:aMenuView. 
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   241
    newMenu addSubView:aMenuView.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   242
    newMenu menu:aMenuView.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   243
    ^ newMenu
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
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   246
labels:labels selectors:selectors receiver:anObject for:aView
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   247
    |newMenu|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   248
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   249
    newMenu := self onSameDeviceAs:aView. 
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   250
    newMenu menu:(MenuView
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   251
			labels:labels
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   252
			selectors:selectors
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   253
			receiver:anObject
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   254
			in:newMenu).
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   255
    ^ newMenu
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   256
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   257
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   258
labels:labels selectors:selectors args:args receiver:anObject
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   259
    ^ self labels:labels 
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   260
	selectors:selectors 
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   261
	     args:args 
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   262
	 receiver:anObject 
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   263
	      for:nil
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   264
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   265
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   266
labels:labels selectors:selectors args:args receiver:anObject for:aView
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   267
    |newMenu|
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   268
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   269
    newMenu := self onSameDeviceAs:aView. 
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   270
    newMenu menu:(MenuView
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   271
		    labels:labels
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   272
		    selectors:selectors
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   273
		    args:args
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   274
		    receiver:anObject
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   275
		    in:newMenu).
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   276
    ^ newMenu
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   277
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   278
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   279
labels:labels selector:aSelector args:args receiver:anObject
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   280
    ^ self labels:labels 
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   281
	 selector:aSelector 
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   282
	     args:args 
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   283
	 receiver:anObject 
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   284
	      for:nil
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   285
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   286
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   287
labels:labels selectors:selectors receiver:anObject
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   288
    ^ self labels:labels selectors:selectors receiver:anObject for:nil
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   289
!
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
labels:labels selector:aSelector args:args receiver:anObject for:aView
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   292
    |newMenu|
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   293
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   294
    newMenu := self onSameDeviceAs:aView. 
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   295
    newMenu menu:(MenuView
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   296
		    labels:labels
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   297
		    selector:aSelector
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   298
		    args:args
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   299
		    receiver:anObject
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   300
		    in:newMenu).
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   301
    ^ newMenu
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   302
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   303
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   304
!PopUpMenu class methodsFor:'ST-80 instance creation'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   305
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   306
labels:labels 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   307
    ^ self labels:labels lines:nil values:nil 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   308
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   309
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   310
labels:labels values:values 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   311
    ^ self labels:labels lines:nil values:values 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   312
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   313
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   314
labels:labels lines:lines 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   315
    ^ self labels:labels lines:lines values:nil
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   316
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   317
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   318
labels:labels lines:lines values:values 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   319
    ^ (self new) labels:labels lines:lines values:values 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   320
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   321
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   322
labelList:labels values:values 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   323
    ^ self labels:labels lines:nil values:values 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   324
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   325
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   326
labelList:labels lines:lines values:values 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   327
    ^ (self new) labels:labels lines:lines values:values 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   328
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   329
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   330
!PopUpMenu methodsFor:'initialization'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   331
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   332
initialize
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   333
    super initialize.
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   334
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   335
    "dont need any fancy colors"
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   336
"/    viewBackground := White on:device.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   337
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   338
    memorize := true.
21
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   339
    hideOnLeave := false.
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   340
    style == #iris ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   341
	borderWidth := 1
21
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   342
    ].
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   343
    (style == #st80) ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   344
"/        viewBackground := White.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   345
	borderWidth := 1.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   346
	level := 0.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   347
	margin := 0.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   348
	shadowView := nil
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   349
    ].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   350
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   351
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   352
initEvents
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   353
    super initEvents.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   354
    self enableEnterLeaveEvents.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   355
    self enableButtonMotionEvents.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   356
    self enableMotionEvents.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   357
    self enableButtonEvents
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   358
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   359
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   360
!PopUpMenu methodsFor:'realization'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   361
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   362
fixSize
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   363
    "adjust my size to the size of the actual menu"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   364
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   365
    |extra newWidth newHeight|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   366
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   367
    extra := margin * 2.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   368
    newWidth := menuView width + extra.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   369
    newHeight := menuView height + extra.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   370
    ((newWidth ~~ width) or:[newHeight ~~ height]) ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   371
	self extent:(menuView width + extra) @ (menuView height + extra)
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   372
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   373
    super fixSize
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   374
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   375
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   376
realize
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   377
"/    windowGroup notNil ifTrue:[
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   378
"/        windowGroup sensor compressMotionEvents:true
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   379
"/    ].
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   380
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   381
    menuView deselectWithoutRedraw.
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   382
"/    self enableEnterLeaveEvents.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   383
    super realize.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   384
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   385
"/    menuView disableButtonMotionEvents.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   386
"/    menuView disableMotionEvents.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   387
"/    menuView disableButtonEvents.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   388
"/    menuView disableEnterLeaveEvents
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   389
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   390
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   391
!PopUpMenu methodsFor:'private accessing'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   392
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   393
menu:aMenu
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   394
    "set the actual menu"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   395
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   396
    menuView := aMenu.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   397
    menuView origin:(margin @ margin).
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   398
    menuView borderWidth:0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   399
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   400
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   401
menuView
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   402
    "return the actual menu"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   403
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   404
    ^ menuView
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   405
!
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   406
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   407
superMenu:aMenu
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   408
    "return the superMenu"
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   409
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   410
    menuView superMenu:aMenu
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   411
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   412
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   413
!PopUpMenu methodsFor:'menuview messages'!
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   414
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   415
doesNotUnderstand:aMessage
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   416
    "forward all menu-view messages"
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   417
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   418
    (menuView respondsTo:(aMessage selector)) ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   419
	^ aMessage sendTo:menuView
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   420
    ].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   421
    ^ super doesNotUnderstand:aMessage
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   422
! !
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   423
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   424
!PopUpMenu methodsFor:'accessing'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   425
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   426
viewBackground:aColor
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   427
    "this is a kludge and will vanish ..."
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   428
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   429
    super viewBackground:aColor.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   430
    menuView viewBackground:aColor
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   431
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   432
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   433
hideOnLeave:aBoolean
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   434
    "set/clear the hideOnLeave attribute, which controls
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   435
     if the menu should be hidden when the pointer leaves
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   436
     the view (used with multiple-menus)"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   437
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   438
    hideOnLeave := aBoolean
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   439
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   440
21
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   441
font:aFont
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   442
    menuView font:aFont
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   443
!
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   444
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   445
labels
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   446
    "return the list of labels"
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   447
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   448
    actionLabels notNil ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   449
	^ actionLabels asText
21
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   450
    ].
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   451
    ^ menuView list
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   452
!
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   453
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   454
indexOf:indexOrName
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   455
    "return the index of a submenu - or 0 if there is none"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   456
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   457
    ^ menuView indexOf:indexOrName
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   458
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   459
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   460
remove:indexOrName
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   461
    "remove a menu entry"
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   462
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   463
    menuView remove:indexOrName
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   464
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   465
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   466
subMenuAt:indexOrName put:aMenu
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   467
    "define a submenu to be shown for entry indexOrName"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   468
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   469
"
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   470
    aMenu hideOnLeave:true.
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   471
"
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   472
    menuView subMenuAt:indexOrName put:aMenu.
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   473
    "tell the submenu to notify me when action is performed"
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   474
    aMenu superMenu:self.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   475
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   476
    "|v m|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   477
     v := View new.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   478
     m := PopUpMenu labels:#('1' '2' '3')
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   479
		 selectors:#(one two nil)
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   480
		  receiver:v
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   481
		       for:nil.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   482
     m subMenuAt:3 put:(PopUpMenu
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   483
			     labels:#('a' 'b' 'c')
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   484
			  selectors:#(a b c)
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   485
			   receiver:v
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   486
				for:nil).
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   487
     v middleButtonMenu:m.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   488
     v realize"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   489
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   490
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   491
numberOfItems
21
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   492
    "return the number of items in the menu"
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   493
21
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   494
    actionLabels notNil ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   495
	^ actionLabels asText size
21
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   496
    ].
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   497
    ^ menuView list size
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   498
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   499
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   500
values
21
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   501
    "st-80 compatibility"
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   502
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   503
    ^ actionValues
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   504
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   505
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   506
lines
21
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   507
    "st-80 compatibility"
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   508
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   509
    ^ actionLines
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   510
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   511
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   512
labels:labelString lines:lineArray values:valueArray
21
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   513
    "define the menu the ST-80 way (with labels and lines defined separately)"
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   514
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   515
    |labelArray argArray convertedLabels 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   516
     offs dstOffs linePos|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   517
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   518
    actionLabels := labelString.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   519
    actionLines := lineArray.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   520
    actionValues := valueArray.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   521
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   522
    labelArray := labelString asText.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   523
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   524
    convertedLabels := Array new:(labelArray size + lineArray size).
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   525
    argArray := Array new:(labelArray size + lineArray size).
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   526
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   527
    offs := 1.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   528
    dstOffs := 1.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   529
    1 to:lineArray size do:[:lineIndex |
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   530
	linePos := lineArray at:lineIndex.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   531
	[offs <= linePos] whileTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   532
	    convertedLabels at:dstOffs put:(labelArray at:offs).
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   533
	    argArray at:dstOffs put:offs.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   534
	    offs := offs + 1.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   535
	    dstOffs := dstOffs + 1
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   536
	].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   537
	convertedLabels at:dstOffs put:'-'.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   538
	argArray at:dstOffs put:nil.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   539
	dstOffs := dstOffs + 1
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   540
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   541
    [offs <= labelArray size] whileTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   542
	convertedLabels at:dstOffs put:(labelArray at:offs).
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   543
	argArray at:dstOffs put:offs.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   544
	offs := offs + 1.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   545
	dstOffs := dstOffs + 1
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   546
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   547
    self menu:(MenuView
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   548
			labels:convertedLabels
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   549
		      selector:nil
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   550
			  args:argArray
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   551
		      receiver:nil 
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   552
			    in:self)
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   553
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   554
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   555
!PopUpMenu methodsFor:'activation'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   556
21
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   557
showAt:aPoint resizing:aBoolean
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   558
    "realize the menu at aPoint"
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   559
21
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   560
    aBoolean ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   561
	self fixSize.
21
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   562
    ].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   563
    self origin:aPoint.
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   564
    self makeFullyVisible.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   565
    self openModal:[true] "realize     "
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   566
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   567
21
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   568
showAt:aPoint
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   569
    "realize the menu at aPoint"
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   570
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   571
    self showAt:aPoint resizing:true 
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   572
!
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   573
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   574
showAtPointer
21
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   575
    "realize the menu at the current pointer position"
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   576
21
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   577
    self showAt:(device pointerPosition) resizing:true
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   578
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   579
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   580
show
21
9ef599238fea *** empty log message ***
claus
parents: 12
diff changeset
   581
    "realize the menu at its last position"
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   582
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   583
    self fixSize.
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   584
    self openModal:[true] "realize     "
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   585
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   586
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   587
hide
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   588
    "hide the menu - if there are any pop-up-submenus, hide them also"
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   589
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   590
    menuView hideSubmenu.
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   591
    windowGroup notNil ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   592
	windowGroup removeView:self.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   593
	windowGroup := nil.
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   594
    ].
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   595
    self unrealize.
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   596
!
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   597
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   598
XXregainControl
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   599
" "
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   600
    device ungrabPointer.
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   601
    device grabPointerIn:drawableId
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   602
" "
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   603
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   604
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   605
!PopUpMenu methodsFor:'ST-80 activation'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   606
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   607
startUp
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   608
    "start the menu modal - return the selected value,
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   609
     or - if no values where specified - return the index.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   610
     If nothing was selected, return 0.
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   611
     Modal - i.e. stay in the menu until finished.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   612
     This is the ST-80 way of launching a menu."
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   613
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   614
    menuView action:[:selected |
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   615
	|actionIndex value|
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   616
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   617
	menuView args isNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   618
	    menuView selectors isNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   619
		^ 0
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   620
	    ].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   621
	    ^ menuView receiver perform:(menuView selectors at:selected)
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   622
	].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   623
	actionIndex := menuView args at:selected.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   624
	actionIndex isNil ifTrue:[^ 0].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   625
	actionValues isNil ifTrue:[^ actionIndex].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   626
	value := actionValues at:actionIndex.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   627
	(value isKindOf:PopUpMenu) ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   628
	    ^ value startUp
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   629
	].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   630
	^ value
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   631
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   632
    self showAtPointer.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   633
    ^ 0
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   634
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   635
    "
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   636
     Transcript showCr:(PopUpMenu labels:#('foo' 'bar' 'baz')) startUp
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   637
     Transcript showCr:(PopUpMenu labels:#('foo' 'bar' 'baz')
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   638
				  values:#(foo bar baz)) startUp
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   639
    "
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   640
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   641
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   642
!PopUpMenu methodsFor:'events'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   643
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   644
buttonMotion:button x:x y:y
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   645
    |p|
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   646
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   647
    ((x >= 0) and:[x < width]) ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   648
	((y >= 0) and:[y < height]) ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   649
	    menuView buttonMotion:button x:x y:y.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   650
	    ^ self
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   651
	]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   652
    ].
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   653
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   654
    "outside of myself"
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   655
    menuView superMenu notNil ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   656
	p := device translatePoint:(x @ y)
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   657
			      from:drawableId
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   658
				to:(menuView superMenu id).
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   659
	menuView superMenu buttonMotion:button x:p x y:p y
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   660
    ].
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   661
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   662
    menuView subMenuShown isNil ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   663
	menuView pointerLeave:button.
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   664
    ].
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   665
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   666
    hideOnLeave ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   667
	self hide
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   668
    ].
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   669
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   670
"/    menuView superMenu notNil ifTrue:[
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   671
"/        menuView superMenu regainControl.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   672
"/    ].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   673
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   674
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   675
pointerEnter:state x:x y:y
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   676
    "catch quick release of button"
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   677
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   678
    state == 0 ifTrue:[^ self hide].
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   679
!
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   680
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   681
pointerLeave:state
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   682
"/    menuView pointerLeave:state.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   683
"/    hideOnLeave ifTrue:[
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   684
"/        self hide
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   685
"/    ].
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   686
"/    menuView superMenu notNil ifTrue:[
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   687
"/        menuView superMenu regainControl
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   688
"/    ]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   689
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   690
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   691
buttonRelease:button x:x y:y
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   692
    self hide.
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   693
"
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   694
    menuView buttonRelease:button x:x y:y.
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   695
"
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   696
    menuView superMenu notNil ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   697
	menuView superMenu submenuTriggered 
7
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   698
    ].
15a9291b9bd0 *** empty log message ***
claus
parents: 5
diff changeset
   699
    menuView buttonRelease:button x:x y:y.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   700
! !