PullDMenu.st
author claus
Sat, 18 Mar 1995 06:16:33 +0100
changeset 104 ca75c90df7a9
parent 95 7535cfca9509
child 110 eb59f6e31e84
permissions -rw-r--r--
Initial revision
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
View subclass:#PullDownMenu
91
e8db16616e97 *** empty log message ***
claus
parents: 77
diff changeset
    14
       instanceVariableNames:'menus titles selectors activeMenuNumber
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    15
			      showSeparatingLines topMargin
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    16
			      fgColor bgColor activeFgColor activeBgColor
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
    17
			      onLevel offLevel edgeStyle
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    18
			      keepMenu'
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    19
       classVariableNames:'DefaultFont
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    20
			   DefaultViewBackground 
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    21
			   DefaultForegroundColor 
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    22
			   DefaultBackgroundColor
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    23
			   DefaultHilightForegroundColor 
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    24
			   DefaultHilightBackgroundColor
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    25
			   DefaultLevel DefaultHilightLevel
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
    26
			   DefaultShadowColor DefaultLightColor 
77
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
    27
			   DefaultEdgeStyle DefaultKeepMenu'
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    28
       poolDictionaries:''
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    29
       category:'Views-Menus'
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    30
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    31
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    32
PullDownMenu comment:'
5
claus
parents: 3
diff changeset
    33
COPYRIGHT (c) 1989 by Claus Gittinger
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    34
	     All Rights Reserved
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    35
95
7535cfca9509 *** empty log message ***
claus
parents: 91
diff changeset
    36
$Header: /cvs/stx/stx/libwidg/Attic/PullDMenu.st,v 1.12 1995-02-27 10:40:40 claus Exp $
3
claus
parents: 0
diff changeset
    37
'!
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    38
3
claus
parents: 0
diff changeset
    39
!PullDownMenu class methodsFor:'documentation'!
claus
parents: 0
diff changeset
    40
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    41
copyright
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
 COPYRIGHT (c) 1989 by Claus Gittinger
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    44
	      All Rights Reserved
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    45
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    46
 This software is furnished under a license and may be used
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    47
 only in accordance with the terms of that license and with the
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    48
 inclusion of the above copyright notice.   This software may not
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    49
 be provided or otherwise made available to, or used by, any
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    50
 other person.  No title to or ownership of the software is
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    51
 hereby transferred.
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
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    54
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    55
version
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    56
"
95
7535cfca9509 *** empty log message ***
claus
parents: 91
diff changeset
    57
$Header: /cvs/stx/stx/libwidg/Attic/PullDMenu.st,v 1.12 1995-02-27 10:40:40 claus Exp $
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    58
"
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
3
claus
parents: 0
diff changeset
    61
documentation
claus
parents: 0
diff changeset
    62
"
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    63
    PullDown menu provides the top (always visible) part of these menus. 
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    64
    It controls display of its menus, which become visible when one of the 
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    65
    PullDownMenus entries is pressed.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    66
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    67
    Instance variables:
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
    68
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    69
    menus                   <aCollection>   the sub menus
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    70
    titles                  <aCollection>   the strings in the menu
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    71
    activeMenuNumber        <Number>        the index of the currently active menu
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    72
    showSeparatingLines     <Boolean>       show separating lines between my menu-strings
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    73
    topMargin               <Number>        number of pixels at top
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    74
    fgColor                 <Color>         color to draw passive menu-titles
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    75
    bgColor                 <Color>         color to draw passive menu-titles
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    76
    activeFgColor           <Color>         color to draw activated menu-titles
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    77
    activeBgColor           <Color>         color to draw activated menu-titles
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    78
    onLevel                 <Integer>       level of entry-buttons when pressed
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    79
    offLevel                <Integer>       level of entry-buttons when released
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
    80
    keepmenu                <Boolean>       if on, pulled menu stays on click,
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
    81
					    till clicked again (motif & windows behavior)
77
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
    82
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
    83
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
    84
    StyleSheet values:
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
    85
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
    86
    pullDownMenuViewBackground              view background Color
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
    87
					    default: menuViewBackground
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
    88
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
    89
    pullDownMenuForegroundColor             foreground drawing color
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
    90
					    default: menuForegroundColor
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
    91
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
    92
    pullDownMenuBackgroundColor             background drawing color
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
    93
					    default: menuBackgroundColor
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
    94
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
    95
    pullDownMenuHilightForegroundColor      active foreground drawing color
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
    96
					    default: menuHilightForegroundColor
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
    97
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
    98
    pullDownMenuHilightBackgroundColor      active background drawing color
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
    99
					    default: menuHilightBackgroundColor
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   100
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   101
    pullDownMenuHilightLevel                level (3D only) when active
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   102
					    default: menuHilightLevel
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   103
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   104
    pullDownMenuEdgeStyle                   edge style (nil or #soft)
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   105
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   106
    pullDownMenuKeepMenu                    if true, menu stays open until button
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   107
					    is pressed again (motif behavior)
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   108
					    if false, menu closes on release (default)
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   109
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   110
    pullDownMenuLevel                       level (3D only)
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   111
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   112
    pullDownMenuFont                        font
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   113
					    default: menuFont
3
claus
parents: 0
diff changeset
   114
"
claus
parents: 0
diff changeset
   115
! !
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   116
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   117
!PullDownMenu class methodsFor:'defaults'!
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   118
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   119
updateStyleCache
60
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   120
    DefaultViewBackground := StyleSheet colorAt:'pullDownMenuViewBackground'.
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   121
    DefaultViewBackground isNil ifTrue:[
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   122
	DefaultViewBackground := StyleSheet colorAt:'menuViewBackground'.
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   123
    ].
60
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   124
    DefaultForegroundColor := StyleSheet colorAt:'pullDownMenuForegroundColor'.
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   125
    DefaultForegroundColor isNil ifTrue:[
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   126
	DefaultForegroundColor := StyleSheet colorAt:'menuForegroundColor'.
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   127
    ].
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   128
    DefaultBackgroundColor := StyleSheet colorAt:'pullDownMenuBackgroundColor'.
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   129
    DefaultBackgroundColor isNil ifTrue:[
77
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   130
	DefaultViewBackground notNil ifTrue:[
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   131
	    DefaultBackgroundColor := DefaultViewBackground
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   132
	] ifFalse:[
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   133
	    DefaultBackgroundColor := StyleSheet colorAt:'menuBackgroundColor'.
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   134
	]
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   135
    ].
60
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   136
    DefaultHilightForegroundColor := StyleSheet colorAt:'pullDownMenuHilightForegroundColor'.
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   137
    DefaultHilightForegroundColor isNil ifTrue:[
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   138
	DefaultHilightForegroundColor := StyleSheet colorAt:'menuHilightForegroundColor'.
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   139
    ].
60
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   140
    DefaultHilightBackgroundColor := StyleSheet colorAt:'pullDownMenuHilightBackgroundColor'.
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   141
    DefaultHilightBackgroundColor isNil ifTrue:[
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   142
	DefaultHilightBackgroundColor := StyleSheet colorAt:'menuHilightBackgroundColor'.
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   143
    ].
60
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   144
    DefaultHilightLevel := StyleSheet at:'pullDownMenuHilightLevel'.
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   145
    DefaultHilightLevel isNil ifTrue:[
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   146
	DefaultHilightLevel := StyleSheet at:'menuHilightLevel' default:0.
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   147
    ].
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   148
    DefaultEdgeStyle := StyleSheet at:'pullDownMenuEdgeStyle'.
77
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   149
    DefaultKeepMenu := StyleSheet at:'pullDownMenuKeepMenu' default:false.
60
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   150
    DefaultLevel := StyleSheet at:'pullDownMenuLevel' default:1.
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   151
    DefaultFont := StyleSheet fontAt:'pullDownMenuFont'.
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   152
    DefaultFont isNil ifTrue:[
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   153
	DefaultFont := StyleSheet fontAt:'menuFont'.
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   154
    ].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   155
! !
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   156
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   157
!PullDownMenu class methodsFor:'instance creation'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   158
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   159
labels:titleArray
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   160
    "create and return a new PullDownMenu"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   161
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   162
    ^ self new labels:titleArray
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   163
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   164
77
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   165
!PullDownMenu methodsFor:'initialize / release'!
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   166
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   167
initialize
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   168
    super initialize.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   169
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   170
    font := font on:device.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   171
    self origin:(0.0 @ 0.0)
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   172
	 extent:(1.0 @ (font height + (font descent * 2)  + topMargin)).
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   173
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   174
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   175
initStyle
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   176
    super initStyle.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   177
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   178
    showSeparatingLines := false.
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   179
    DefaultViewBackground notNil ifTrue:[
60
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   180
	viewBackground := DefaultViewBackground on:device
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   181
    ].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   182
60
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   183
    DefaultFont notNil ifTrue:[
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   184
	font := DefaultFont on:device
f3c738c24ce6 mostly style
claus
parents: 59
diff changeset
   185
    ].
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   186
    DefaultForegroundColor notNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   187
	fgColor := DefaultForegroundColor
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   188
    ] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   189
	fgColor := Black.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   190
    ].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   191
    DefaultBackgroundColor notNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   192
	bgColor := DefaultBackgroundColor
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   193
    ] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   194
	bgColor := viewBackground.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   195
    ].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   196
    onLevel := DefaultHilightLevel.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   197
    offLevel := DefaultLevel.
21
9ef599238fea *** empty log message ***
claus
parents: 5
diff changeset
   198
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   199
    self is3D ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   200
	device hasColors ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   201
	    activeFgColor := Color name:'yellow'
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   202
	] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   203
	    activeFgColor := White
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   204
	].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   205
	device hasGreyscales ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   206
	    activeBgColor := bgColor.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   207
	] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   208
	    activeBgColor := fgColor.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   209
	].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   210
	topMargin := 2.
21
9ef599238fea *** empty log message ***
claus
parents: 5
diff changeset
   211
77
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   212
	((StyleSheet name == #iris) or:[StyleSheet name == #motif]) ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   213
	    self level:2.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   214
	    onLevel := 2.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   215
	    offLevel := 0.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   216
	    activeFgColor := fgColor
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   217
	]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   218
    ] ifFalse:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   219
	activeFgColor := bgColor.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   220
	activeBgColor := fgColor.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   221
	topMargin := 0
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   222
    ].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   223
63
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   224
    edgeStyle := DefaultEdgeStyle.
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   225
    keepMenu := DefaultKeepMenu.
f4eaf04d1eaf *** empty log message ***
claus
parents: 60
diff changeset
   226
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   227
    DefaultHilightForegroundColor notNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   228
	activeFgColor := DefaultHilightForegroundColor
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   229
    ].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   230
    DefaultHilightBackgroundColor notNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   231
	activeBgColor := DefaultHilightBackgroundColor
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   232
    ].
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   233
    DefaultShadowColor notNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   234
	shadowColor := DefaultShadowColor on:device
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   235
    ].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   236
    DefaultLightColor notNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   237
	lightColor := DefaultLightColor on:device
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   238
    ].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   239
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   240
    bgColor := bgColor on:device.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   241
    fgColor := fgColor on:device.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   242
    activeBgColor := activeBgColor on:device.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   243
    activeFgColor := activeFgColor on:device.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   244
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   245
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   246
recreate
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   247
    super create.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   248
    self setMenuOrigins
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   249
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   250
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   251
create
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   252
    super create.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   253
    self setMenuOrigins
77
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   254
!
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   255
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   256
destroy
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   257
    super destroy.
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   258
    "
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   259
     have to destroy the menus manually here,
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   260
     since they are no real subviews of myself
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   261
    "
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   262
    menus notNil ifTrue:[
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   263
	menus do:[:m |
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   264
	    m notNil ifTrue:[m destroy]
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   265
	].
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   266
	menus := nil
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   267
    ]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   268
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   269
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   270
!PullDownMenu methodsFor:'accessing'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   271
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   272
showSeparatingLines:aBoolean
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   273
    "turn on/off drawing of separating lines"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   274
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   275
    showSeparatingLines := aBoolean.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   276
    shown ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   277
	self redraw
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   278
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   279
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   280
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   281
numberOfTitles:n
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   282
    "setup blank title-space to be filled in later"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   283
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   284
    menus := Array new:n.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   285
    titles := Array new:n
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   286
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   287
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   288
labels:titleArray
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   289
    "define the menu-titles (group-headers)"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   290
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   291
    |numberOfLabels|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   292
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   293
    numberOfLabels := titleArray size.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   294
    menus := Array new:numberOfLabels.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   295
    titles := Array new:numberOfLabels.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   296
    1 to:numberOfLabels do:[:index |
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   297
	titles at:index put:(titleArray at:index) printString
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   298
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   299
    shown ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   300
	self clear.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   301
	self redraw
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
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   305
labels
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   306
    "return the menu-titles (group-headers)"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   307
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   308
    ^ titles
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   309
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   310
91
e8db16616e97 *** empty log message ***
claus
parents: 77
diff changeset
   311
selectors:selectorArray
e8db16616e97 *** empty log message ***
claus
parents: 77
diff changeset
   312
    "define the menu-selectors. These are used as accesskey only
e8db16616e97 *** empty log message ***
claus
parents: 77
diff changeset
   313
     in menuAt: accesses. This makes PullDownMenu accesss
e8db16616e97 *** empty log message ***
claus
parents: 77
diff changeset
   314
     somewhat more compatible to PopUpMenus."
e8db16616e97 *** empty log message ***
claus
parents: 77
diff changeset
   315
e8db16616e97 *** empty log message ***
claus
parents: 77
diff changeset
   316
    selectors := selectorArray.
e8db16616e97 *** empty log message ***
claus
parents: 77
diff changeset
   317
!
e8db16616e97 *** empty log message ***
claus
parents: 77
diff changeset
   318
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   319
font:aFont
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   320
    "adjust menu-origins when font changes"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   321
3
claus
parents: 0
diff changeset
   322
    super font:(aFont on:device).
claus
parents: 0
diff changeset
   323
    self height:(font height + (font descent * 2)).
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   324
    self setMenuOrigins
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   325
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   326
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   327
menuAt:string
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   328
    "return the menu with the title; return nil if not found"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   329
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   330
    |index|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   331
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   332
    index := self indexOf:string.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   333
    (index == 0) ifTrue:[^ nil].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   334
    ^ menus at:index
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   335
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   336
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   337
at:aString putMenu:aMenu
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   338
    "set the menu under the title, aString"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   339
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   340
    |index|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   341
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   342
    index := self indexOf:aString.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   343
    (index == 0) ifTrue:[^ nil].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   344
    aMenu origin:((left + (self titleLenUpTo:index)) 
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   345
		  @
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   346
		  (height + aMenu borderWidth)).
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   347
    aMenu hidden:true.
77
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   348
    menus at:index put:aMenu.
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   349
    aMenu masterView:self.
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
at:aString putLabels:labels selectors:selectors args:args receiver:anObject
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   353
    "create and set the menu under the title, aString"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   354
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   355
    |menuView|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   356
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   357
    menuView := MenuView labels:labels
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   358
		      selectors:selectors
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   359
			   args:args
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   360
		       receiver:anObject
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   361
			    for:self.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   362
    self at:aString putMenu:menuView
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   363
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   364
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   365
at:aString putLabels:labels selector:selector args:args receiver:anObject
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   366
    "create and set the menu under the title, aString"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   367
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   368
    |menuView|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   369
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   370
    menuView := MenuView labels:labels
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   371
		       selector:selector
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   372
			   args:args
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   373
		       receiver:anObject
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   374
			    for:self.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   375
    self at:aString putMenu:menuView
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   376
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   377
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   378
at:aString putLabels:labels selectors:selectors receiver:anObject
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   379
    "create and set the menu under the title, aString"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   380
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   381
    |menuView|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   382
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   383
    menuView := MenuView labels:labels
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   384
		      selectors:selectors
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   385
		       receiver:anObject
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   386
			    for:self.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   387
    self at:aString putMenu:menuView
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   388
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   389
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   390
!PullDownMenu methodsFor:'private'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   391
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   392
titleLenUpTo:index
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   393
    "answer len of all title-strings up-to (but excluding) title-index"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   394
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   395
    |len "{ Class: SmallInteger }" |
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   396
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   397
    (index <= 1) ifTrue:[^ 0].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   398
    len := 0.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   399
    titles from:1 to:(index - 1) do:[:string |
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   400
	len := len + (font widthOf:(' ' , string , ' ')).
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   401
	showSeparatingLines ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   402
	    self is3D ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   403
		len := len + 2
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   404
	    ] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   405
		len := len + 1
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   406
	    ]
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   407
	]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   408
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   409
    ^ len
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   410
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   411
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   412
indexOf:stringOrNumber
91
e8db16616e97 *** empty log message ***
claus
parents: 77
diff changeset
   413
    "return the index of the menu with title; return 0 if not found.
e8db16616e97 *** empty log message ***
claus
parents: 77
diff changeset
   414
     stringOrNumber may be a number, a selector from the selectorArray
e8db16616e97 *** empty log message ***
claus
parents: 77
diff changeset
   415
     or a string from the title array."
e8db16616e97 *** empty log message ***
claus
parents: 77
diff changeset
   416
e8db16616e97 *** empty log message ***
claus
parents: 77
diff changeset
   417
    |idx|
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   418
91
e8db16616e97 *** empty log message ***
claus
parents: 77
diff changeset
   419
    stringOrNumber isNumber ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   420
	^ stringOrNumber
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   421
    ].
91
e8db16616e97 *** empty log message ***
claus
parents: 77
diff changeset
   422
    selectors notNil ifTrue:[
e8db16616e97 *** empty log message ***
claus
parents: 77
diff changeset
   423
	idx := selectors indexOf:stringOrNumber.
e8db16616e97 *** empty log message ***
claus
parents: 77
diff changeset
   424
	idx ~~ 0 ifTrue:[^ idx].
e8db16616e97 *** empty log message ***
claus
parents: 77
diff changeset
   425
    ].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   426
    ^ titles indexOf:stringOrNumber
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   427
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   428
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   429
setMenuOrigins
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   430
    "adjust origins of menus when font changes"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   431
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   432
    |index|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   433
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   434
    (font device == device) ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   435
	index := 1.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   436
	menus do:[:aMenu |
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   437
	    aMenu notNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   438
		aMenu origin:((left + (self titleLenUpTo:index)) 
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   439
			      @
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   440
			      (height + aMenu borderWidth))
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   441
	    ].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   442
	    index := index + 1
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   443
	]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   444
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   445
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   446
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   447
!PullDownMenu methodsFor:'hiding/showing menus'!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   448
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   449
drawTitle:string x:x selected:selected
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   450
    |yText w|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   451
3
claus
parents: 0
diff changeset
   452
    yText := ((height - (font height)) // 2) + (font ascent) "+ topMargin".
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   453
    w := font widthOf:string.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   454
    selected ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   455
	self paint:activeBgColor
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   456
    ] ifFalse:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   457
	self paint:bgColor
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   458
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   459
    self fillRectangleX:x y:0 width:w height:height.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   460
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   461
    self is3D ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   462
	self drawEdgesForX:x y:0
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   463
		     width:w
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   464
		    height:height
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   465
		     level:(selected ifTrue:[onLevel] ifFalse:[offLevel])
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   466
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   467
    selected ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   468
	self paint:activeFgColor
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   469
    ] ifFalse:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   470
	self paint:fgColor
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   471
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   472
    self displayString:string x:x y:yText
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   473
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   474
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   475
highlightActiveTitle
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   476
    |x string|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   477
    activeMenuNumber notNil ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   478
	x := self titleLenUpTo:activeMenuNumber.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   479
	string := ' ' , (titles at:activeMenuNumber) , ' '.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   480
	self drawTitle:string x:x selected:true
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   481
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   482
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   483
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   484
unHighlightActiveTitle
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   485
    |x string|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   486
    activeMenuNumber notNil ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   487
	x := self titleLenUpTo:activeMenuNumber.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   488
	string := ' ' , (titles at:activeMenuNumber) , ' '.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   489
	self drawTitle:string x:x selected:false
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   490
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   491
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   492
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   493
hideActiveMenuRelease:aBoolean
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   494
    activeMenuNumber notNil ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   495
	(menus at:activeMenuNumber) unrealize.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   496
	self unHighlightActiveTitle.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   497
	aBoolean ifTrue:[device ungrabPointer. self cursor:Cursor normal].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   498
	activeMenuNumber := nil
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   499
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   500
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   501
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   502
hideActiveMenu
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   503
    ^ self hideActiveMenuRelease:true
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   504
!
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   505
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   506
pullMenu:aNumber
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   507
    "activate a menu"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   508
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   509
    |subMenu|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   510
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   511
    activeMenuNumber notNil ifTrue:[self hideActiveMenuRelease:false].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   512
    subMenu := menus at:aNumber.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   513
    subMenu notNil ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   514
	activeMenuNumber := aNumber.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   515
	self highlightActiveTitle.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   516
	subMenu deselect.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   517
	subMenu create.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   518
	subMenu saveUnder:true.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   519
	subMenu raise show
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   520
    ]
77
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   521
!
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   522
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   523
regainControl
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   524
    keepMenu ifTrue:[
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   525
	device grabPointerInView:self.
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   526
	self cursor:Cursor upRightArrow
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   527
    ]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   528
! !
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   529
70
14443a9ea4ec *** empty log message ***
claus
parents: 63
diff changeset
   530
!PullDownMenu methodsFor:'event handling'!
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   531
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   532
redraw
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   533
    |string
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   534
     x     "{ Class: SmallInteger }"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   535
     y     "{ Class: SmallInteger }"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   536
     index "{ Class: SmallInteger }" |
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   537
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   538
    shown ifFalse: [ ^ self ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   539
    titles isNil ifTrue:[^ self].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   540
    x := 0.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   541
    y := height "- 1".
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   542
    index := 0.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   543
    titles do:[:title |
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   544
	string := ' ' , title , ' '.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   545
	self drawTitle:string x:x selected:(index == activeMenuNumber).
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   546
	x := x + (font widthOf:string).
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   547
	showSeparatingLines ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   548
	    self is3D ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   549
		self paint:shadowColor.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   550
		self displayLineFromX:x y:0 toX:x y:y.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   551
		x := x + 1.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   552
		self paint:lightColor.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   553
		self displayLineFromX:x y:0 toX:x y:y
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   554
	    ] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   555
		self paint:fgColor.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   556
		self displayLineFromX:x y:0 toX:x y:y
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   557
	    ].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   558
	    x := x + 1
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   559
	].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   560
	index := index + 1
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   561
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   562
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   563
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   564
titleIndexForX:x
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   565
    "given a click x-position, return index in title or nil"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   566
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   567
    |string 
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   568
     xstart "{ Class: SmallInteger }"
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   569
     xend   "{ Class: SmallInteger }" |
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   570
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   571
    xstart := 0.
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   572
    1 to:(titles size) do:[:index |
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   573
	string := ' ' , (titles at:index) , ' '.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   574
	xend := xstart + (font widthOf:string).
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   575
	showSeparatingLines ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   576
	    self is3D ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   577
		xend := xend + 2
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   578
	    ] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   579
		xend := xend + 1
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   580
	    ]
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   581
	].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   582
	(x between:xstart and:xend) ifTrue:[^ index].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   583
	xstart := xend
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   584
    ].
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   585
    ^ nil
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   586
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   587
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   588
buttonPress:button x:x y:y
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   589
    |titleIndex activeMenu activeLeft activeTop|
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   590
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   591
    (y between:0 and:height) ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   592
	titleIndex := self titleIndexForX:x.
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   593
    ].
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   594
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   595
    "
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   596
     now, titleIndex is non-nil if pressed within myself
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   597
    "
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   598
    (titleIndex notNil and:[titleIndex ~~ activeMenuNumber]) ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   599
	self pullMenu:titleIndex.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   600
	keepMenu ifTrue:[
77
565b052f5277 *** empty log message ***
claus
parents: 70
diff changeset
   601
	    device grabPointerInView:self.
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   602
	    self cursor:Cursor upRightArrow
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   603
	]
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   604
    ] ifFalse:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   605
	keepMenu ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   606
	    titleIndex == activeMenuNumber ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   607
		"same pressed again ... stay"
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   608
		^ self
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   609
	    ].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   610
	    "moving around below"
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   611
	    activeMenuNumber isNil ifTrue:[^self].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   612
	    activeMenu := menus at:activeMenuNumber.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   613
	    activeLeft := activeMenu left.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   614
	    (x between:activeLeft and:(activeMenu right)) ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   615
		activeTop := activeMenu top.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   616
		(y between:activeTop and:(activeMenu bottom)) ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   617
		    "moving around in menu"
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   618
		    activeMenu buttonPress:button
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   619
					 x:(x - activeLeft)
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   620
					 y:(y - activeTop).
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   621
		    ^ self
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   622
		]
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   623
	    ].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   624
	].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   625
	self hideActiveMenu
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   626
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   627
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   628
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   629
buttonMotion:button x:x y:y
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   630
    |titleIndex activeMenu activeLeft activeTop|
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   631
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   632
    (y < height) ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   633
	"moving around in title line"
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   634
	activeMenuNumber notNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   635
	    (menus at:activeMenuNumber) selection:nil
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   636
	].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   637
	titleIndex := self titleIndexForX:x.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   638
	titleIndex notNil ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   639
	    (titleIndex ~~ activeMenuNumber) ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   640
		self pullMenu:titleIndex
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   641
	    ]
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   642
	]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   643
    ] ifFalse:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   644
	"moving around below"
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   645
	activeMenuNumber isNil ifTrue:[^self].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   646
	activeMenu := menus at:activeMenuNumber.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   647
	activeLeft := activeMenu left.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   648
	(x between:activeLeft and:(activeMenu right)) ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   649
	    activeTop := activeMenu top.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   650
	    (y between:activeTop and:(activeMenu bottom)) ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   651
		"moving around in menu"
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   652
		activeMenu buttonMotion:button
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   653
				      x:(x - activeLeft)
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   654
				      y:(y - activeTop).
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   655
		^ self
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   656
	    ]
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   657
	].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   658
	"moved outside menu"
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   659
	activeMenu selection:nil
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   660
    ]
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   661
!
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   662
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   663
buttonRelease:button x:x y:y
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   664
    |activeMenu activeLeft activeTop hideMenu|
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   665
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   666
    hideMenu := false.
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   667
    (y >= height) ifTrue:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   668
	"release below title-line"
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   669
	activeMenuNumber isNil ifTrue:[^self].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   670
	activeMenu := menus at:activeMenuNumber.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   671
	activeLeft := activeMenu left.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   672
	"
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   673
	 released in a submenu ?
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   674
	"
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   675
	(x between:activeLeft and:(activeMenu right)) ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   676
	    activeTop := activeMenu top.
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   677
	    (y between:activeTop and:(activeMenu bottom)) ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   678
		"release in menu"
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   679
		self hideActiveMenu.   
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   680
		activeMenu buttonRelease:button
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   681
				       x:(x - activeLeft)
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   682
				       y:(y - activeTop).
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   683
		^ self
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   684
	    ]
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   685
	].
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   686
	hideMenu := true.
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   687
    ] ifFalse:[
59
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   688
	y < 0 ifTrue:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   689
	    hideMenu := true
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   690
	] ifFalse:[
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   691
	    keepMenu ifFalse:[   
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   692
		hideMenu := true
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   693
	    ]
450ce95a72a4 *** empty log message ***
claus
parents: 38
diff changeset
   694
	]
38
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   695
    ].                  
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   696
    hideMenu ifTrue:[
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   697
       self hideActiveMenu.
4b9b70b2cc87 2.10.3 pre-final version
claus
parents: 21
diff changeset
   698
    ]
0
e6a541c1c0eb Initial revision
claus
parents:
diff changeset
   699
! !