Menu.st
changeset 737 c8bdd9dd8906
parent 729 7e22cc23fd1f
child 738 f7e6b6cd3855
--- a/Menu.st	Sun Nov 02 19:54:27 1997 +0100
+++ b/Menu.st	Mon Nov 03 16:33:51 1997 +0100
@@ -27,38 +27,58 @@
 !Menu class methodsFor:'instance creation'!
 
 labelArray: arrayOfString lines: linesArray values: valueArrayOrNil
-        "Answer a menu with menu items with labels from arrayOfString (not Symbols).  The linesArray describes which menu items are the last menu item in their group.  The valueArray contains value objects for each menu item (or is nil if no value objects are specified)."
+    "return a menu with menu items built with labels from arrayOfString (not Symbols).  
+     The linesArray describes which menu items are the last menu item in their group. 
+     The valueArray contains value objects for each menu item 
+     (or is nil if no value objects are specified)."
+
+    | nLabel valueArray menuItems groupLengths |
+
+    nLabel := arrayOfString size.
 
-        | valueArray menuItems groupLengths |
-        valueArrayOrNil isNil
-                ifTrue: [valueArray := arrayOfString isEmpty
-                                                ifTrue: [#()]
-                                                ifFalse:        [1 to: arrayOfString size]]
-                ifFalse: [valueArray := valueArrayOrNil].
-        arrayOfString size ~= valueArray size
-                ifTrue: [^self error: 'illegal menu combination'].
+    valueArrayOrNil isNil ifTrue:[
+        valueArray := arrayOfString isEmpty ifTrue: [
+            valueArray := #()
+        ] ifFalse:[
+            valueArray := (1 to:nLabel)
+        ]
+    ] ifFalse:[
+        valueArray := valueArrayOrNil
+    ].
+
+    nLabel ~~ valueArray size ifTrue: [
+        ^ self error: 'illegal menu combination'
+    ].
 
-        menuItems := Array new: arrayOfString size.
-        1 to: arrayOfString size do:
-                [:i |
-                | mi v|
-                mi := MenuItem labeled: (arrayOfString at: i) asString.
-                v := valueArray at: i.
-                (v isKindOf: Menu)
-                        ifTrue: [mi submenu: v].
-                menuItems at: i put: mi].
-        (linesArray == nil or: [linesArray isEmpty])
-                ifTrue: [
-                        groupLengths := (menuItems isEmpty)
-                                ifTrue: [Array new: 0]
-                                ifFalse: [Array with: menuItems size]]
-                ifFalse: [groupLengths := Array new: linesArray size + 1.
-                                groupLengths at: 1 put: linesArray first.
-                                2 to: linesArray size do: [:i | groupLengths at: i put: (linesArray at: i) - (linesArray at: i - 1)].
-                                groupLengths at: groupLengths size put: menuItems size - linesArray last].
-        ^self new menuItems: menuItems menuItemGroups: groupLengths values: valueArray
+    menuItems := Array new:nLabel.
+    1 to:nLabel do:[:i |
+        |mi v|
+
+        mi := MenuItem labeled: (arrayOfString at:i) asString.
+        v := valueArray at: i.
+        (v isKindOf: Menu) ifTrue: [mi submenu: v].
+        menuItems at: i put: mi
+    ].
 
-    "Modified: 20.6.1997 / 10:46:45 / cg"
+    (linesArray == nil or:[linesArray isEmpty]) ifTrue:[
+        groupLengths := (menuItems isEmpty)
+                            ifTrue: [Array new: 0]
+                            ifFalse: [Array with: menuItems size]
+    ] ifFalse:[
+        groupLengths := Array new: linesArray size + 1.
+        groupLengths at: 1 put: linesArray first.
+        2 to: linesArray size do: [:i | 
+                groupLengths at: i put: (linesArray at: i) - (linesArray at: i - 1)
+        ].
+        groupLengths at: groupLengths size put: menuItems size - linesArray last
+    ].
+
+    ^ self new 
+        menuItems: menuItems 
+        menuItemGroups: groupLengths 
+        values: valueArray
+
+    "Modified: / 31.10.1997 / 03:19:14 / cg"
 !
 
 labelList:arrayOfGroupStrings values:valueArrayOrNil
@@ -71,6 +91,15 @@
 
     "Modified: 20.6.1997 / 10:46:45 / cg"
     "Created: 13.9.1997 / 10:35:46 / cg"
+!
+
+labels:arrayOfStrings lines:linesArray values:valueArrayOrNil
+    ^ self 
+        labelArray:arrayOfStrings
+        lines:linesArray
+        values:valueArrayOrNil
+
+    "Created: / 31.10.1997 / 03:12:20 / cg"
 ! !
 
 !Menu methodsFor:'ST-80 compatibility'!
@@ -213,9 +242,10 @@
 !
 
 lines
-    "Answer the indexes of the menu items that are the last menu item in their group (except the very last)."
+    "return the indexes of the menu items that are the last menu item in their group (except the very last)."
 
     | lines |
+
     groupSizes size <= 1 ifTrue: [^Array new].
     lines := Array new: groupSizes size - 1.
     lines at: 1 put: groupSizes first.
@@ -224,7 +254,7 @@
             lines at: i put: (lines at: i - 1) + (groupSizes at: i)].
     ^lines
 
-
+    "Modified: / 31.10.1997 / 03:19:51 / cg"
 !
 
 menuItemAt:index
@@ -678,5 +708,5 @@
 !Menu class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libview2/Menu.st,v 1.20 1997-11-01 12:24:36 ca Exp $'
+    ^ '$Header: /cvs/stx/stx/libview2/Menu.st,v 1.21 1997-11-03 15:33:51 cg Exp $'
 ! !