Menu.st
changeset 900 aa93395cdb55
parent 801 0b87e3ba8eaf
child 938 dfa1b1666cfa
equal deleted inserted replaced
899:a2676b9f61ba 900:aa93395cdb55
    35     | nLabel valueArray menuItems groupLengths |
    35     | nLabel valueArray menuItems groupLengths |
    36 
    36 
    37     nLabel := arrayOfString size.
    37     nLabel := arrayOfString size.
    38 
    38 
    39     valueArrayOrNil isNil ifTrue:[
    39     valueArrayOrNil isNil ifTrue:[
    40 	(valueArray := arrayOfString isEmpty) ifTrue: [
    40         (valueArray := arrayOfString isEmpty) ifTrue: [
    41 	    valueArray := #()
    41             valueArray := #()
    42 	] ifFalse:[
    42         ] ifFalse:[
    43 	    valueArray := (1 to:nLabel)
    43             valueArray := (1 to:nLabel)
    44 	]
    44         ]
    45     ] ifFalse:[
    45     ] ifFalse:[
    46 	valueArray := valueArrayOrNil
    46         valueArray := valueArrayOrNil
    47     ].
    47     ].
    48 
    48 
    49     nLabel ~~ valueArray size ifTrue: [
    49     nLabel ~~ valueArray size ifTrue: [
    50 	^ self error: 'illegal menu combination'
    50         ^ self error: 'illegal menu combination'
    51     ].
    51     ].
    52 
    52 
    53     menuItems := Array new:nLabel.
    53     menuItems := Array new:nLabel.
    54     1 to:nLabel do:[:i |
    54     1 to:nLabel do:[:i |
    55 	|mi v|
    55         |mi v|
    56 
    56 
    57 	mi := MenuItem labeled: (arrayOfString at:i) asString.
    57         mi := MenuItem labeled: (arrayOfString at:i) asString.
    58 	v := valueArray at: i.
    58         v := valueArray at: i.
    59 	(v isKindOf: Menu) ifTrue: [mi submenu: v].
    59         (v isKindOf: Menu) ifTrue: [mi submenu: v].
    60 	menuItems at: i put: mi
    60         menuItems at: i put: mi
    61     ].
    61     ].
    62 
    62 
    63     (linesArray == nil or:[linesArray isEmpty]) ifTrue:[
    63     (linesArray == nil or:[linesArray isEmpty]) ifTrue:[
    64 	groupLengths := (menuItems isEmpty)
    64         groupLengths := (menuItems isEmpty)
    65 			    ifTrue: [Array new: 0]
    65                             ifTrue: [Array new: 0]
    66 			    ifFalse: [Array with: menuItems size]
    66                             ifFalse: [Array with: menuItems size]
    67     ] ifFalse:[
    67     ] ifFalse:[
    68 	groupLengths := Array new: linesArray size + 1.
    68         groupLengths := Array new: linesArray size + 1.
    69 	groupLengths at: 1 put: linesArray first.
    69         groupLengths at: 1 put: linesArray first.
    70 	2 to: linesArray size do: [:i | 
    70         2 to: linesArray size do: [:i | 
    71 		groupLengths at: i put: (linesArray at: i) - (linesArray at: i - 1)
    71                 groupLengths at: i put: (linesArray at: i) - (linesArray at: i - 1)
    72 	].
    72         ].
    73 	groupLengths at: groupLengths size put: menuItems size - linesArray last
    73         groupLengths at: groupLengths size put: menuItems size - linesArray last.
    74     ].
    74     ].
    75 
    75 
    76     ^ self new 
    76     ^ self new 
    77 	menuItems: menuItems 
    77         menuItems: menuItems 
    78 	menuItemGroups: groupLengths 
    78         menuItemGroups: groupLengths 
    79 	values: valueArray
    79         values: valueArray
    80 
    80 
    81     "Modified: / 31.10.1997 / 03:19:14 / cg"
    81     "Modified: / 19.4.1998 / 11:30:18 / cg"
    82 !
    82 !
    83 
    83 
    84 labelList:arrayOfGroupStrings values:valueArrayOrNil
    84 labelList:arrayOfGroupStrings values:valueArrayOrNil
    85     |labels lines|
    85     |labels lines|
    86 
    86 
   302 menuItems
   302 menuItems
   303     ^ items
   303     ^ items
   304 !
   304 !
   305 
   305 
   306 menuItems:aCollectionOfMenuItems menuItemGroups:sizes values:values
   306 menuItems:aCollectionOfMenuItems menuItemGroups:sizes values:values
       
   307     |n|
       
   308 
   307     items := aCollectionOfMenuItems.
   309     items := aCollectionOfMenuItems.
   308     groupSizes := sizes.
   310     groupSizes := sizes.
       
   311     sizes size > 0 ifTrue:[
       
   312         n := sizes inject:0 into:[:sumSoFar :this | sumSoFar + this].
       
   313         n = items size ifTrue:[
       
   314             groupSizes := sizes copyWithoutLast:1
       
   315         ]
       
   316     ].
   309 
   317 
   310     values notNil ifTrue:[
   318     values notNil ifTrue:[
   311 	items with:values do:[:anItem :aValue |anItem value:aValue]
   319         items with:values do:[:anItem :aValue |anItem value:aValue]
   312     ].
   320     ].
   313 
   321 
   314     "Modified: 20.6.1997 / 10:45:30 / cg"
   322     "Modified: / 19.4.1998 / 11:47:34 / cg"
   315 !
   323 !
   316 
   324 
   317 numberOfItems
   325 numberOfItems
   318     "return the number of items in this menu"
   326     "return the number of items in this menu"
   319 
   327 
   758 ! !
   766 ! !
   759 
   767 
   760 !Menu class methodsFor:'documentation'!
   768 !Menu class methodsFor:'documentation'!
   761 
   769 
   762 version
   770 version
   763     ^ '$Header: /cvs/stx/stx/libview2/Menu.st,v 1.26 1998-02-02 12:30:22 cg Exp $'
   771     ^ '$Header: /cvs/stx/stx/libview2/Menu.st,v 1.27 1998-04-19 15:17:35 cg Exp $'
   764 ! !
   772 ! !