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). |