--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Menu.st Tue Feb 25 19:53:41 1997 +0100
@@ -0,0 +1,138 @@
+Object subclass:#Menu
+ instanceVariableNames:'items'
+ classVariableNames:''
+ poolDictionaries:''
+ category:'Views-Support'
+!
+
+!Menu class methodsFor:'documentation'!
+
+documentation
+"
+ not yet finished Menu class - this will eventually replace
+ most of the MenuView and PopUpMenu stuff.
+ (and hopefully be ST-80 compatible ...)
+
+ For now, only a subset of the full protocol is implemented.
+
+ [author:]
+ Claus Gittinger
+
+ [see also:]
+ MenuItem
+ PopUpMenu
+"
+! !
+
+!Menu methodsFor:'accessing'!
+
+labels
+ "return a collection of labels from my items"
+
+ ^ items collect:[:anItem | anItem label]
+
+ "Created: 25.2.1997 / 19:47:53 / cg"
+!
+
+menuItems:aCollectionOfMenuItems groups:groups values:values
+ items := aCollectionOfMenuItems.
+ values notNil ifTrue:[
+ items with:values do:[:anItem :aValue |
+ anItem value:aValue
+ ]
+ ]
+
+ "Modified: 25.2.1997 / 19:36:28 / cg"
+!
+
+valueAt:index
+ "return a collection of values from my items"
+
+ ^ (items at:index) value
+
+ "Created: 25.2.1997 / 19:49:41 / cg"
+!
+
+values
+ "return a collection of values from my items"
+
+ ^ items collect:[:anItem | anItem value]
+
+ "Created: 25.2.1997 / 19:49:29 / cg"
+! !
+
+!Menu methodsFor:'converting'!
+
+fromLiteralArrayEncoding:aLiteralEncodedArray
+ "read my contents from a aLiteralEncodedArray"
+
+ |items groups values|
+
+ items := (aLiteralEncodedArray at:2) collect:[:item | item decodeAsLiteralArray].
+ groups := aLiteralEncodedArray at:3.
+ values := (aLiteralEncodedArray at:4) decodeAsLiteralArray.
+ self menuItems:items groups:groups values:values.
+
+ "extract from PD folder.st:
+ #(#Menu #(
+ #(#MenuItem
+ #rawLabel: 'left'
+ #value: #left )
+ #(#MenuItem
+ #rawLabel: 'center'
+ #value: #center )
+ #(#MenuItem
+ #rawLabel: 'right'
+ #value: #right )
+ )
+ #(3 )
+ nil
+ ) decodeAsLiteralArray
+ "
+
+ "Modified: 25.2.1997 / 19:35:20 / cg"
+! !
+
+!Menu methodsFor:'startup'!
+
+startUp
+ "display the menu as a popUp; return the value associated with the
+ selected item, 0 if none was selected"
+
+ |m index|
+
+ "/ for now, use PopUpMenu ....
+
+ m := PopUpMenu labels:self labels.
+ index := m startUp.
+ index ~~ 0 ifTrue:[
+ ^ self valueAt:index
+ ].
+ ^ 0
+
+ "
+ |m|
+ m := #(#Menu #(
+ #(#MenuItem
+ #rawLabel: 'left'
+ #value: #left )
+ #(#MenuItem
+ #rawLabel: 'center'
+ #value: #center )
+ #(#MenuItem
+ #rawLabel: 'right'
+ #value: #right ) )
+ #(3 )
+ nil
+ ) decodeAsLiteralArray.
+ m startUp
+ "
+
+ "Modified: 25.2.1997 / 19:49:08 / cg"
+! !
+
+!Menu class methodsFor:'documentation'!
+
+version
+ ^ '$Header: /cvs/stx/stx/libview2/Menu.st,v 1.1 1997-02-25 18:53:27 cg Exp $'
+! !