4846 |
4846 |
4847 menu:aMenu labeled:aString |
4847 menu:aMenu labeled:aString |
4848 |expanded item menu| |
4848 |expanded item menu| |
4849 |
4849 |
4850 self criticalDo:[ |
4850 self criticalDo:[ |
4851 self isRootItem ifTrue:[ expanded := true ] |
4851 self isRootItem ifTrue:[ expanded := true ] |
4852 ifFalse:[ expanded := isExpanded ]. |
4852 ifFalse:[ expanded := isExpanded ]. |
4853 |
4853 |
4854 self removeAll. |
4854 self removeAll. |
4855 self rawLabel:aString. |
4855 self rawLabel:aString. |
4856 |
4856 |
4857 menu := aMenu value. |
4857 menu := aMenu value. |
4858 |
4858 |
4859 (menu isNil or:[menu isString]) ifTrue:[ |
4859 (menu isNil or:[menu isString]) ifTrue:[ |
4860 menu := nil |
4860 menu := nil |
4861 ] ifFalse:[ |
4861 ] ifFalse:[ |
4862 aMenu isCollection ifTrue:[ menu := Menu decodeFromLiteralArray:aMenu ] |
4862 aMenu isCollection ifTrue:[ menu := Menu decodeFromLiteralArray:aMenu ] |
4863 ifFalse:[ menu := aMenu ]. |
4863 ifFalse:[ menu := aMenu ]. |
4864 |
4864 |
4865 menu numberOfItems == 0 ifTrue:[ |
4865 menu hasItems ifFalse:[ |
4866 menu := nil |
4866 menu := nil |
4867 ]. |
4867 ]. |
4868 ]. |
4868 ]. |
4869 menu ifNotNil:[ |
4869 menu ifNotNil:[ |
4870 isExpanded := false. "/ discard change notifications |
4870 isExpanded := false. "/ discard change notifications |
4871 children := OrderedCollection new. |
4871 children := OrderedCollection new. |
4872 |
4872 |
4873 menu itemsDo:[:el| |
4873 menu itemsDo:[:el| |
4874 item := self class menuItem:el. |
4874 item := self class menuItem:el. |
4875 item parent:self. |
4875 item parent:self. |
4876 children add:item. |
4876 children add:item. |
4877 ]. |
4877 ]. |
4878 expanded ifTrue:[ self expand ]. |
4878 expanded ifTrue:[ self expand ]. |
4879 ]. |
4879 ]. |
4880 isExpanded := expanded. |
4880 isExpanded := expanded. |
4881 ]. |
4881 ]. |
4882 self changed |
4882 self changed |
4883 |
4883 |
4884 "Modified: / 27-03-2007 / 08:43:07 / cg" |
4884 "Modified: / 27-03-2007 / 08:43:07 / cg" |
4885 ! |
4885 ! |