intitial checkin
authorClaus Gittinger <cg@exept.de>
Tue, 25 Feb 1997 19:53:41 +0100
changeset 451 95064b26ded1
parent 450 2a6e2eb653f0
child 452 b708d60b96b4
intitial checkin
Menu.st
MenuItem.st
--- /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 $'
+! !
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MenuItem.st	Tue Feb 25 19:53:41 1997 +0100
@@ -0,0 +1,111 @@
+Object subclass:#MenuItem
+	instanceVariableNames:'enabled label value nameKey'
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Views-Support'
+!
+
+Object subclass:#MenuItemAdornment
+	instanceVariableNames:'color indication submenu'
+	classVariableNames:''
+	poolDictionaries:''
+	privateIn:MenuItem
+!
+
+!MenuItem class methodsFor:'documentation'!
+
+documentation
+"
+    not yet finished MenuItem 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
+"
+
+! !
+
+!MenuItem methodsFor:'accessing'!
+
+disable
+    enabled := false
+
+    "Created: 25.2.1997 / 19:39:09 / cg"
+!
+
+enable
+    enabled := true
+
+    "Created: 25.2.1997 / 19:39:00 / cg"
+!
+
+enabled:aBoolean
+    enabled := aBoolean
+
+    "Created: 25.2.1997 / 19:39:27 / cg"
+!
+
+isEnabled
+    ^ enabled ? true
+
+    "Created: 25.2.1997 / 19:39:17 / cg"
+!
+
+label
+    ^ label
+
+    "Created: 25.2.1997 / 19:48:16 / cg"
+!
+
+rawLabel:aString
+    label := aString
+
+    "Created: 25.2.1997 / 19:11:02 / cg"
+!
+
+value
+    ^ value
+
+    "Created: 25.2.1997 / 19:50:14 / cg"
+!
+
+value:something
+    value := something
+
+    "Created: 25.2.1997 / 19:11:13 / cg"
+! !
+
+!MenuItem methodsFor:'converting'!
+
+fromLiteralArrayEncoding:aLiteralEncodedArray
+    "read my contents from a aLiteralEncodedArray"
+
+    2 to:aLiteralEncodedArray size by:2 do:[:i |
+        |selector value|
+
+        selector := aLiteralEncodedArray at:i.
+        value := (aLiteralEncodedArray at:i+1) decodeAsLiteralArray.
+
+        self perform:selector with:value
+    ].
+
+    "
+     #( #MenuItem #rawLabel: 'left' #value: #left )
+         decodeAsLiteralArray
+    "
+
+    "Modified: 25.2.1997 / 19:24:22 / cg"
+! !
+
+!MenuItem class methodsFor:'documentation'!
+
+version
+    ^ '$Header: /cvs/stx/stx/libview2/MenuItem.st,v 1.1 1997-02-25 18:53:41 cg Exp $'
+! !