MenuEditor.st
changeset 1653 1798c7bcb787
parent 1645 714b89cb8ff7
child 1656 f5c0716efd78
equal deleted inserted replaced
1652:d6d40619e21a 1653:1798c7bcb787
  3093     |value|
  3093     |value|
  3094 
  3094 
  3095     menuItem := MenuItem labeled:(self rawLabel).
  3095     menuItem := MenuItem labeled:(self rawLabel).
  3096 
  3096 
  3097     MenuEditor aspects do:[:aKey|
  3097     MenuEditor aspects do:[:aKey|
  3098         value := aMenuItem perform:aKey.
  3098         value := self validateValue:(aMenuItem perform:aKey).
  3099         value ifNotNil:[ self aspectAt:aKey put:value ]
  3099 
       
  3100         value notNil ifTrue:[
       
  3101             self aspectAt:aKey put:value.
       
  3102         ].
  3100     ].
  3103     ].
  3101 !
  3104 !
  3102 
  3105 
  3103 rawLabel
  3106 rawLabel
  3104     "returns the label assigned to the item
  3107     "returns the label assigned to the item
  3210 !MenuEditor::Item methodsFor:'initialization'!
  3213 !MenuEditor::Item methodsFor:'initialization'!
  3211 
  3214 
  3212 initialize
  3215 initialize
  3213     super initialize.
  3216     super initialize.
  3214     menuItem := MenuItem label:(self class defaultLabel).
  3217     menuItem := MenuItem label:(self class defaultLabel).
       
  3218 ! !
       
  3219 
       
  3220 !MenuEditor::Item methodsFor:'private'!
       
  3221 
       
  3222 validateValue:aValue
       
  3223     "if we pick a menupanel, the values of an item can be
       
  3224      a block model, ....
       
  3225     "
       
  3226     aValue notNil ifTrue:[
       
  3227         aValue isBlock      ifTrue:[ ^ #block ].
       
  3228         aValue isValueModel ifTrue:[ ^ #valueModel ].
       
  3229     ].
       
  3230     ^ aValue
  3215 ! !
  3231 ! !
  3216 
  3232 
  3217 !MenuEditor::Item methodsFor:'queries'!
  3233 !MenuEditor::Item methodsFor:'queries'!
  3218 
  3234 
  3219 isAction
  3235 isAction
  3983     "
  3999     "
  3984     aKey == #submenuChannel ifTrue:[ ^ self submenuChannel:aValue ].
  4000     aKey == #submenuChannel ifTrue:[ ^ self submenuChannel:aValue ].
  3985     super aspectAt:aKey put:aValue.
  4001     super aspectAt:aKey put:aValue.
  3986 !
  4002 !
  3987 
  4003 
  3988 getDelayedAttributesFrom:aMenuItem
  4004 getDelayedAttributesFrom:anItem
       
  4005 
  3989     menuItem rawLabel:'Delayed'.
  4006     menuItem rawLabel:'Delayed'.
  3990 
  4007 
  3991     menuItem   submenuChannel:(aMenuItem submenuChannel).
  4008     menuItem   submenuChannel:(self validateValue:(anItem submenuChannel)).
  3992     menuItem horizontalLayout:(aMenuItem horizontalLayout).
  4009     menuItem horizontalLayout:(self validateValue:(anItem horizontalLayout)).
  3993     menuItem   keepLinkedMenu:(aMenuItem keepLinkedMenu).
  4010     menuItem horizontalLayout:(self validateValue:(anItem keepLinkedMenu)).
  3994 !
  4011 !
  3995 
  4012 
  3996 setDelayedAttributesTo:aMenuItem
  4013 setDelayedAttributesTo:aMenuItem
  3997     aMenuItem   submenuChannel:(self submenuChannel).
  4014     aMenuItem   submenuChannel:(self submenuChannel).
  3998     aMenuItem horizontalLayout:(menuItem horizontalLayout).
  4015     aMenuItem horizontalLayout:(menuItem horizontalLayout).
  4169 
  4186 
  4170 menu:aMenu labeled:aString
  4187 menu:aMenu labeled:aString
  4171     |expanded item menu|
  4188     |expanded item menu|
  4172 
  4189 
  4173     self criticalDo:[
  4190     self criticalDo:[
  4174 	self isRootItem ifTrue:[ expanded := true ]
  4191         self isRootItem ifTrue:[ expanded := true ]
  4175 		       ifFalse:[ expanded := isExpanded ].
  4192                        ifFalse:[ expanded := isExpanded ].
  4176 
  4193 
  4177 	self removeAll.
  4194         self removeAll.
  4178 	self rawLabel:aString.
  4195         self rawLabel:aString.
  4179 
  4196 
  4180 	aMenu ifNotNil:[
  4197         menu := aMenu value.
  4181 	    aMenu isCollection ifTrue:[ menu := Menu new fromLiteralArrayEncoding:aMenu ]
  4198 
  4182 			      ifFalse:[ menu := aMenu ].
  4199         (menu isNil or:[menu isString]) ifTrue:[
  4183 
  4200             menu := nil
  4184 	    menu numberOfItems == 0 ifTrue:[
  4201         ] ifFalse:[
  4185 		menu := nil
  4202             aMenu isCollection ifTrue:[ menu := Menu new fromLiteralArrayEncoding:aMenu ]
  4186 	    ].
  4203                               ifFalse:[ menu := aMenu ].
  4187 	].
  4204 
  4188 	menu ifNotNil:[
  4205             menu numberOfItems == 0 ifTrue:[
  4189 	    isExpanded := false.        "/ discard change notifications
  4206                 menu := nil
  4190 	    children   := OrderedCollection new.
  4207             ].
  4191 
  4208         ].
  4192 	    menu itemsDo:[:el|
  4209         menu ifNotNil:[
  4193 		item := self class menuItem:el.
  4210             isExpanded := false.        "/ discard change notifications
  4194 		item parent:self.
  4211             children   := OrderedCollection new.
  4195 		children add:item.
  4212 
  4196 	    ].
  4213             menu itemsDo:[:el|
  4197 	    expanded ifTrue:[ self expand ].
  4214                 item := self class menuItem:el.
  4198 	].
  4215                 item parent:self.
  4199 	isExpanded := expanded.
  4216                 children add:item.
       
  4217             ].
       
  4218             expanded ifTrue:[ self expand ].
       
  4219         ].
       
  4220         isExpanded := expanded.
  4200     ].        
  4221     ].        
  4201     self changed
  4222     self changed
  4202 !
  4223 !
  4203 
  4224 
  4204 menuItem
  4225 menuItem
  4245 
  4266 
  4246 !MenuEditor::RegularMenuItem methodsFor:'aspects'!
  4267 !MenuEditor::RegularMenuItem methodsFor:'aspects'!
  4247 
  4268 
  4248 getDelayedAttributesFrom:aMenuItem
  4269 getDelayedAttributesFrom:aMenuItem
  4249 
  4270 
  4250     self menu:(aMenuItem submenu) labeled:nil.
  4271     |menu|
       
  4272 
       
  4273     menu := self validateValue:(aMenuItem submenu value).
       
  4274 
       
  4275     self menu:menu labeled:nil.
  4251     menuItem horizontalLayout:(aMenuItem horizontalLayout).
  4276     menuItem horizontalLayout:(aMenuItem horizontalLayout).
  4252 !
  4277 !
  4253 
  4278 
  4254 setDelayedAttributesTo:aMenuItem
  4279 setDelayedAttributesTo:aMenuItem
  4255     aMenuItem          submenu:(self submenu).
  4280     aMenuItem          submenu:(self submenu).