This is an automated email from the ASF dual-hosted git repository.

yishayw pushed a commit to branch cascading
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git

commit 106225a4a8e731177a62950dbbd90cdbc9ca69de
Author: DESKTOP-RH4S838\Yishay <[email protected]>
AuthorDate: Fri Jul 5 16:28:56 2019 +0300

    Starting Fix for mx cascade bug
---
 examples/mxroyale/HelloWorld/.build.xml.swp        |   0
 examples/mxroyale/HelloWorld/.build.xml.un~        | Bin 0 -> 2949 bytes
 examples/mxroyale/HelloWorld/build.xml~            |  55 ++++++++++
 .../src/main/royale/.HelloWorld.mxml.swp           | Bin 0 -> 12288 bytes
 .../src/main/royale/.HelloWorld.mxml.un~           | Bin 0 -> 9905 bytes
 .../HelloWorld/src/main/royale/HelloWorld.mxml     | 113 ++++++++++++++-------
 .../royale/{HelloWorld.mxml => HelloWorld.mxml~}   |   2 +-
 .../src/mx/controls/.MenuBarExample.mxml.swp       | Bin 0 -> 12288 bytes
 .../projects/Basic/src/main/royale/BasicClasses.as |   1 +
 .../CascadingMenuSelectionMouseController.as       |  17 +++-
 .../supportClasses/CascadingMenuItemRenderer.as    |  28 +++--
 .../MXRoyale/src/main/resources/defaults.css       |   5 +-
 .../MXRoyale/src/main/royale/MXRoyaleClasses.as    |   3 +-
 .../CascadingMenuSelectionMouseController.as}      |  54 +++++-----
 .../menuClasses/.MenuBarItemRenderer.as.un~        | Bin 0 -> 6333 bytes
 .../mx/controls/menuClasses/MenuBarItemRenderer.as |  58 ++++++++---
 .../src/main/royale/mx/managers/SystemManager.as   |   9 +-
 17 files changed, 248 insertions(+), 97 deletions(-)

diff --git a/examples/mxroyale/HelloWorld/.build.xml.swp 
b/examples/mxroyale/HelloWorld/.build.xml.swp
new file mode 100644
index 0000000..e69de29
diff --git a/examples/mxroyale/HelloWorld/.build.xml.un~ 
b/examples/mxroyale/HelloWorld/.build.xml.un~
new file mode 100644
index 0000000..591065e
Binary files /dev/null and b/examples/mxroyale/HelloWorld/.build.xml.un~ differ
diff --git a/examples/mxroyale/HelloWorld/build.xml~ 
b/examples/mxroyale/HelloWorld/build.xml~
new file mode 100644
index 0000000..62250e0
--- /dev/null
+++ b/examples/mxroyale/HelloWorld/build.xml~
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<!--
+
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+-->
+
+
+<project name="helloworld" default="main" basedir=".">
+    <property name="ROYALE_HOME" location="../../.."/>
+    <property name="example" value="HelloWorld" />
+    
+    <property file="${ROYALE_HOME}/env.properties"/>
+    <property environment="env"/>
+    <property file="${ROYALE_HOME}/build.properties"/>
+    <property name="ROYALE_HOME" value="${ROYALE_HOME}"/>
+    <property name="config_arg" value="flex"/>
+
+    <include file="${basedir}/../../build_example.xml" />
+    
+    <target name="main" depends="clean,build_example.compile" 
description="Clean build of ${example}">
+    </target>
+    
+    <target name="clean">
+        <delete dir="${basedir}/bin" failonerror="false" />
+        <delete dir="${basedir}/bin-debug" failonerror="false" />
+        <delete dir="${basedir}/bin-release" failonerror="false" />
+        <delete dir="${basedir}/target" failonerror="false" />
+    </target>
+
+    <target name="examine" depends="build_example.get.browser">
+        <property name="which" value="debug" />
+        <echo message="Make sure label appears."/>
+        <exec executable="${browser}" dir="${basedir}/bin-${which}" 
failonerror="true">
+            <arg value="${basedir}/bin-${which}/${example}.html"/>
+        </exec>
+        <exec executable="${browser}" dir="${basedir}/bin/js-${which}" 
failonerror="true">
+            <arg value="${basedir}/bin/js-${which}/index.html"/>
+        </exec>
+    </target>
+
+</project>
diff --git a/examples/mxroyale/HelloWorld/src/main/royale/.HelloWorld.mxml.swp 
b/examples/mxroyale/HelloWorld/src/main/royale/.HelloWorld.mxml.swp
new file mode 100644
index 0000000..246985e
Binary files /dev/null and 
b/examples/mxroyale/HelloWorld/src/main/royale/.HelloWorld.mxml.swp differ
diff --git a/examples/mxroyale/HelloWorld/src/main/royale/.HelloWorld.mxml.un~ 
b/examples/mxroyale/HelloWorld/src/main/royale/.HelloWorld.mxml.un~
new file mode 100644
index 0000000..f533fbb
Binary files /dev/null and 
b/examples/mxroyale/HelloWorld/src/main/royale/.HelloWorld.mxml.un~ differ
diff --git a/examples/mxroyale/HelloWorld/src/main/royale/HelloWorld.mxml 
b/examples/mxroyale/HelloWorld/src/main/royale/HelloWorld.mxml
index 2a75c9b..ee61b0d 100644
--- a/examples/mxroyale/HelloWorld/src/main/royale/HelloWorld.mxml
+++ b/examples/mxroyale/HelloWorld/src/main/royale/HelloWorld.mxml
@@ -1,36 +1,81 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0"?>
 <!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+      contributor license agreements.  See the NOTICE file distributed with
+      this work for additional information regarding copyright ownership.
+      The ASF licenses this file to You under the Apache License, Version 2.0
+      (the "License"); you may not use this file except in compliance with
+      the License.  You may obtain a copy of the License at
 
-Licensed to the Apache Software Foundation (ASF) under one or more
-contributor license agreements.  See the NOTICE file distributed with
-this work for additional information regarding copyright ownership.
-The ASF licenses this file to You under the Apache License, Version 2.0
-(the "License"); you may not use this file except in compliance with
-the License.  You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
--->
-<mx:Application xmlns:fx="http://ns.adobe.com/mxml/2009";
-                   xmlns:mx="library://ns.apache.org/royale/mx"
-                   width="600" height="400" >
-       <!-- to do: layout="absolute" minWidth="955" minHeight="600" -->
-       <fx:Style>
-               @namespace mx "library://ns.apache.org/royale/mx";
-               
-               /* set position:absolute to make the (x,y) properties work */
-               mx|Label {
-                       position: absolute;
-               }
-               
-       </fx:Style>
-
-       <mx:Label text="Hello World" x="20" y="20" />
-        
-</mx:Application>
\ No newline at end of file
+          http://www.apache.org/licenses/LICENSE-2.0
+
+      Unless required by applicable law or agreed to in writing, software
+      distributed under the License is distributed on an "AS IS" BASIS,
+      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+      See the License for the specific language governing permissions and
+      limitations under the License.
+  -->
+
+<!-- Simple example to demonstrate the MenuBar control. -->
+<mx:Application xmlns:fx="http://ns.adobe.com/mxml/2009"; 
xmlns:mx="library://ns.apache.org/royale/mx"
+                               paddingBottom="0" paddingTop="0" 
paddingLeft="0" paddingRight="0"
+                               height="100%" width="100%"
+                               creationComplete="initCollections()">
+
+     <fx:Script>
+        <![CDATA[
+
+            import mx.events.MenuEvent;
+            import mx.controls.Alert;
+            import mx.collections.*;
+
+            [Bindable]
+            public var menuBarCollection:XMLListCollection;
+    
+            private var menubarXML:XMLList =
+                <>
+                    <menuitem label="Menu1" data="top">
+                        <menuitem label="MenuItem 1-A" data="1A"/>
+                        <menuitem label="MenuItem 1-B" data="1B"/>
+                    </menuitem>
+                    <menuitem label="Menu2" data="top">
+                        <menuitem label="MenuItem 2-A" type="check"  
data="2A"/>
+                        <menuitem type="separator"/>
+                        <menuitem label="MenuItem 2-B" >
+                            <menuitem label="SubMenuItem 3-A" type="radio"
+                                groupName="one" data="3A"/>
+                            <menuitem label="SubMenuItem 3-B" type="radio"
+                                groupName="one" data="3B"/>
+                        </menuitem>
+                    </menuitem>
+                </>;
+
+            // Event handler to initialize the MenuBar control.
+            private function initCollections():void {
+                menuBarCollection = new XMLListCollection(menubarXML);
+            }
+
+            // Event handler for the MenuBar control's itemClick event.
+            private function menuHandler(event:MenuEvent):void  {
+                // Don't open the Alert for a menu bar item that 
+                // opens a popup submenu.
+                if (event.item.@data != "top") {
+                    Alert.show("Label: " + event.item.@label + "\n" + 
+                        "Data: " + event.item.@data, "Clicked menu item");
+                }        
+            }
+         ]]>
+    </fx:Script>
+
+    <mx:Panel title="MenuBar Control Example"
+                               paddingBottom="10" paddingTop="10" 
paddingLeft="10" paddingRight="10"
+                               height="100%" width="100%">
+
+        <mx:Label width="100%"
+           text="Select a menu item."/>
+
+        <mx:MenuBar labelField="@label" itemClick="menuHandler(event)" 
+            dataProvider="{menuBarCollection}" />
+            
+    </mx:Panel>
+</mx:Application>
diff --git a/examples/mxroyale/HelloWorld/src/main/royale/HelloWorld.mxml 
b/examples/mxroyale/HelloWorld/src/main/royale/HelloWorld.mxml~
similarity index 98%
copy from examples/mxroyale/HelloWorld/src/main/royale/HelloWorld.mxml
copy to examples/mxroyale/HelloWorld/src/main/royale/HelloWorld.mxml~
index 2a75c9b..294ad81 100644
--- a/examples/mxroyale/HelloWorld/src/main/royale/HelloWorld.mxml
+++ b/examples/mxroyale/HelloWorld/src/main/royale/HelloWorld.mxml~
@@ -33,4 +33,4 @@ limitations under the License.
 
        <mx:Label text="Hello World" x="20" y="20" />
         
-</mx:Application>
\ No newline at end of file
+</mx:Application>
diff --git 
a/examples/mxroyale/tourdeflexmodules/src/mx/controls/.MenuBarExample.mxml.swp 
b/examples/mxroyale/tourdeflexmodules/src/mx/controls/.MenuBarExample.mxml.swp
new file mode 100644
index 0000000..b671c07
Binary files /dev/null and 
b/examples/mxroyale/tourdeflexmodules/src/mx/controls/.MenuBarExample.mxml.swp 
differ
diff --git a/frameworks/projects/Basic/src/main/royale/BasicClasses.as 
b/frameworks/projects/Basic/src/main/royale/BasicClasses.as
index 0ab59ed..4ecc2de 100644
--- a/frameworks/projects/Basic/src/main/royale/BasicClasses.as
+++ b/frameworks/projects/Basic/src/main/royale/BasicClasses.as
@@ -66,6 +66,7 @@ internal class BasicClasses
        import org.apache.royale.html.beads.MenuFactory; MenuFactory;
        import 
org.apache.royale.html.beads.controllers.MenuSelectionMouseController; 
MenuSelectionMouseController;
        import org.apache.royale.html.supportClasses.MenuItemRenderer; 
MenuItemRenderer;
+       import org.apache.royale.html.supportClasses.CascadingMenuItemRenderer; 
CascadingMenuItemRenderer;
        import org.apache.royale.html.CascadingMenu; CascadingMenu;
        import org.apache.royale.html.beads.CascadingMenuFactory; 
CascadingMenuFactory;
        import org.apache.royale.html.beads.models.CascadingMenuModel; 
CascadingMenuModel;
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/CascadingMenuSelectionMouseController.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/CascadingMenuSelectionMouseController.as
index 77c8514..bcb8e2d 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/CascadingMenuSelectionMouseController.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/CascadingMenuSelectionMouseController.as
@@ -82,7 +82,7 @@ package org.apache.royale.html.beads.controllers
                 *  @langversion 3.0
                 *  @playerversion Flash 10.2
                 *  @playerversion AIR 2.6
-                *  @productversion Royale 0.9
+                *  @productversion Royale 0.9.6
                 */
                override protected function 
selectedHandler(event:ItemClickedEvent):void
                {
@@ -90,10 +90,10 @@ package org.apache.royale.html.beads.controllers
                        
                        var model:CascadingMenuModel = 
_strand.getBeadByType(IBeadModel) as CascadingMenuModel;
                        
-                       if (node.hasOwnProperty(model.submenuField)) {
+                       if (getHasMenu(node, model)) {
                                var component:IUIBase = event.target as IUIBase;
                                var menu:IMenu = new CascadingMenu();
-                               menu.dataProvider = node[model.submenuField];
+                               menu.dataProvider = 
getSubMenuDataProvider(node, model);
                                menu.labelField = model.labelField;
                                menu.parentMenuBar = (_strand as 
IMenu).parentMenuBar;
                                menu.show(component, component.width, 0);
@@ -103,5 +103,16 @@ package org.apache.royale.html.beads.controllers
                                hideOpenMenus();
                        }
                }
+               
+               protected function getSubMenuDataProvider(node:Object, 
model:CascadingMenuModel):Object
+               {
+                       return node[model.submenuField];
+               }
+               
+               protected function getHasMenu(node:Object, 
model:CascadingMenuModel):Boolean
+               {
+                       return node.hasOwnProperty(model.submenuField);
+               }
+               
        }
 }
\ No newline at end of file
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/CascadingMenuItemRenderer.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/CascadingMenuItemRenderer.as
index 4af2631..501e240 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/CascadingMenuItemRenderer.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/CascadingMenuItemRenderer.as
@@ -21,9 +21,9 @@ package org.apache.royale.html.supportClasses
        import org.apache.royale.graphics.SolidColor;
        import org.apache.royale.html.Label;
        import org.apache.royale.html.beads.ITextItemRenderer;
-       import org.apache.royale.svg.Rect;
        import org.apache.royale.html.supportClasses.DataItemRenderer;
        import org.apache.royale.html.util.getLabelFromData;
+       import org.apache.royale.svg.Rect;
 
        /**
         * The CascadingMenuItemRenderer is the itemRenderer class for the 
elements of a CascadingMenu.
@@ -81,12 +81,7 @@ package org.apache.royale.html.supportClasses
                override public function set data(value:Object):void
                {
                        super.data = value;
-                       
-                       var isSeparator:Boolean = false;
-                       
-                       if (data.hasOwnProperty("type")) {
-                               if (data["type"] == "separator") isSeparator = 
true;
-                       }
+                       var isSeparator:Boolean = getType() == "separator";
                        
                        if (isSeparator) {
                                if (separator == null) {
@@ -102,9 +97,9 @@ package org.apache.royale.html.supportClasses
                                        addElement(label);
                                }
                                
-                               label.text = getLabelFromData(this,value);
+                               label.text = getLabel();
                                
-                               if (value.hasOwnProperty("menu")) {
+                               if (getHasMenu()) {
                                        if (submenuIndicator == null) {
                                                submenuIndicator = new Label();
                                                submenuIndicator.text = "▶";
@@ -117,6 +112,21 @@ package org.apache.royale.html.supportClasses
                        }
                }
                
+               protected function getHasMenu():Boolean
+               {
+                       return data.hasOwnProperty("menu");
+               }
+               
+               protected function getLabel():String
+               {
+                       return getLabelFromData(this,data);
+               }
+               
+               protected function getType():String
+               {
+                       return data.hasOwnProperty("type") ? data["type"] : 
null; 
+               }
+               
                /**
                 * The label of the itemRenderer, if any.
                 *
diff --git a/frameworks/projects/MXRoyale/src/main/resources/defaults.css 
b/frameworks/projects/MXRoyale/src/main/resources/defaults.css
index e244508..6237249 100644
--- a/frameworks/projects/MXRoyale/src/main/resources/defaults.css
+++ b/frameworks/projects/MXRoyale/src/main/resources/defaults.css
@@ -52,10 +52,11 @@ global {
  * -------------------------------------------------------
  */
 
-Basic|Menu
+Basic|CascadingMenu
 {
        IItemRenderer: 
ClassReference("mx.controls.menuClasses.MenuBarItemRenderer");
        IDataProviderItemRendererMapper: 
ClassReference("mx.controls.listClasses.DataItemRendererFactoryForICollectionViewData");
+       IBeadController: 
ClassReference("mx.controls.beads.controllers.CascadingMenuSelectionMouseController");
 }
 
 Basic|ComboBoxList
@@ -218,7 +219,7 @@ MenuBar {
        IContentView: 
ClassReference("org.apache.royale.html.supportClasses.DataGroup");
        IItemRenderer: 
ClassReference("mx.controls.menuClasses.MenuBarItemRenderer");                  
 
        IBeadController: 
ClassReference("mx.controls.beads.controllers.MenuBarMouseController");
-       IMenuFactory: 
ClassReference("org.apache.royale.html.beads.MenuFactory");
+       IMenuFactory: 
ClassReference("org.apache.royale.html.beads.CascadingMenuFactory");
        IDataProviderItemRendererMapper: 
ClassReference("mx.controls.listClasses.DataItemRendererFactoryForICollectionViewData");
        IItemRendererClassFactory: 
ClassReference("org.apache.royale.core.ItemRendererClassFactory");
        IViewport: 
ClassReference("org.apache.royale.html.supportClasses.Viewport");
diff --git a/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as 
b/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as
index 98b6683..c2eed63 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as
@@ -223,7 +223,8 @@ internal class MXRoyaleClasses
     import mx.controls.beads.NumericStepperView; NumericStepperView;
     import mx.controls.beads.DateFieldView; DateFieldView;
     import mx.controls.dateFieldClasses.DateFieldDateChooser; 
DateFieldDateChooser;
-    import mx.controls.beads.controllers.MenuBarMouseController;
+    import mx.controls.beads.controllers.MenuBarMouseController; 
MenuBarMouseController;
+    import 
mx.controls.beads.controllers.CascadingMenuSelectionMouseController; 
CascadingMenuSelectionMouseController;
     
     import mx.containers.PanelTitleBar; PanelTitleBar;
     import mx.containers.beads.PanelView; PanelView;
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/menuClasses/MenuBarItemRenderer.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/controllers/CascadingMenuSelectionMouseController.as
similarity index 50%
copy from 
frameworks/projects/MXRoyale/src/main/royale/mx/controls/menuClasses/MenuBarItemRenderer.as
copy to 
frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/controllers/CascadingMenuSelectionMouseController.as
index 734db75..7289342 100644
--- 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/menuClasses/MenuBarItemRenderer.as
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/controllers/CascadingMenuSelectionMouseController.as
@@ -17,15 +17,13 @@
 //
 
////////////////////////////////////////////////////////////////////////////////
 
-package mx.controls.menuClasses
+package mx.controls.beads.controllers
 {
-import org.apache.royale.core.IBorderPaddingMarginValuesImpl;
-import org.apache.royale.core.ValuesManager;
-import org.apache.royale.core.layout.EdgeData;
-import org.apache.royale.html.supportClasses.StringItemRenderer;
+       import 
org.apache.royale.html.beads.controllers.CascadingMenuSelectionMouseController;
+       import org.apache.royale.html.beads.models.CascadingMenuModel;
 
 /**
- *  The ListItemRenderer is the default renderer for mx.controls.List
+ *  The CascadingMenuSelectionMouseController is the default controller for 
emulation cascading menu
  *
  *  @langversion 3.0
  *  @playerversion Flash 9
@@ -33,30 +31,26 @@ import 
org.apache.royale.html.supportClasses.StringItemRenderer;
  *  @productversion Flex 3
  */
 
-public class MenuBarItemRenderer extends StringItemRenderer
-{
-    override public function set text(value:String):void
-    {
-        super.text = value;
-        COMPILE::SWF
-        {
-            var edge:EdgeData = (ValuesManager.valuesImpl as 
IBorderPaddingMarginValuesImpl).getPaddingMetrics(this);
-            var h:Number = textField.textHeight + edge.top + edge.bottom;
-            textField.autoSize = "none";
-            textField.height = h;
-        }
-    }
-    
-    override protected function dataToString(value:Object):String
-    {
-        if (value is XML)
-        {
-            var xml:XML = value as XML;
-            return xml.attribute(labelField).toString();
-        }
-        return super.dataToString(value);
-    }
+       public class CascadingMenuSelectionMouseController extends 
org.apache.royale.html.beads.controllers.CascadingMenuSelectionMouseController
+       {
 
-}
+               override protected function getSubMenuDataProvider(node:Object, 
model:CascadingMenuModel):Object
+               {
+                       if (!(node is XML))
+                       {
+                               return super.getSubMenuDataProvider(node, model)
+                       }
+                       return (node as XML).children();
+               }
+               
+               override protected function getHasMenu(node:Object, 
model:CascadingMenuModel):Boolean
+               {
+                       if (!(node is XML))
+                       {
+                               return super.getHasMenu(node, model)
+                       }
+                       return (node as XML).children().length() > 0;
+               }
+       }
 
 }
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/menuClasses/.MenuBarItemRenderer.as.un~
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/menuClasses/.MenuBarItemRenderer.as.un~
new file mode 100644
index 0000000..1ac3f39
Binary files /dev/null and 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/menuClasses/.MenuBarItemRenderer.as.un~
 differ
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/menuClasses/MenuBarItemRenderer.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/menuClasses/MenuBarItemRenderer.as
index 734db75..4f74fc0 100644
--- 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/menuClasses/MenuBarItemRenderer.as
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/menuClasses/MenuBarItemRenderer.as
@@ -22,7 +22,7 @@ package mx.controls.menuClasses
 import org.apache.royale.core.IBorderPaddingMarginValuesImpl;
 import org.apache.royale.core.ValuesManager;
 import org.apache.royale.core.layout.EdgeData;
-import org.apache.royale.html.supportClasses.StringItemRenderer;
+import org.apache.royale.html.supportClasses.CascadingMenuItemRenderer;
 
 /**
  *  The ListItemRenderer is the default renderer for mx.controls.List
@@ -33,30 +33,56 @@ import 
org.apache.royale.html.supportClasses.StringItemRenderer;
  *  @productversion Flex 3
  */
 
-public class MenuBarItemRenderer extends StringItemRenderer
+public class MenuBarItemRenderer extends CascadingMenuItemRenderer
 {
-    override public function set text(value:String):void
+    override public function set data(value:Object):void
     {
-        super.text = value;
-        COMPILE::SWF
+        super.data = value;
+/*        COMPILE::SWF
         {
             var edge:EdgeData = (ValuesManager.valuesImpl as 
IBorderPaddingMarginValuesImpl).getPaddingMetrics(this);
             var h:Number = textField.textHeight + edge.top + edge.bottom;
             textField.autoSize = "none";
             textField.height = h;
         }
-    }
+*/    }
     
-    override protected function dataToString(value:Object):String
-    {
-        if (value is XML)
-        {
-            var xml:XML = value as XML;
-            return xml.attribute(labelField).toString();
-        }
-        return super.dataToString(value);
-    }
-
+       override protected function getHasMenu():Boolean
+       {
+               if (!(data is XML))
+               {
+                       return super.getHasMenu();
+               }
+               return (data as XML).children().length() > 0;
+       }
+       
+       override protected function getLabel():String
+       {
+               if (!(data is XML))
+               {
+                       return super.getLabel();
+               }
+               var xml:XML = data as XML;
+               if (labelField)
+               {
+                       return xml.attribute(labelField).toString();
+               }
+               if (dataField)
+               {
+                       return xml.attribute(dataField).toString();
+               }
+        return xml.attribute("label").toString();
+       }
+       
+       override protected function getType():String
+       {
+               if (!(data is XML))
+               {
+                       return super.getType();
+               }
+               var type:String = (data as XML).attribute("type").toString();
+               return type ? type : null;
+       }
 }
 
 }
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/managers/SystemManager.as 
b/frameworks/projects/MXRoyale/src/main/royale/mx/managers/SystemManager.as
index 8fa473a..5339328 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/managers/SystemManager.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/managers/SystemManager.as
@@ -191,7 +191,7 @@ import org.apache.royale.geom.Rectangle;
  *  @playerversion AIR 1.1
  *  @productversion Royale 0.9.4
  */
-public class SystemManager extends SystemManagerBase implements 
ISystemManager, IFlexModuleFactory, IEventDispatcher, IPopUpHostParent, 
IChildList
+public class SystemManager extends SystemManagerBase implements 
ISystemManager, IFlexModuleFactory, IEventDispatcher, IPopUpHostParent, 
IPopUpHost, IChildList
 { //extends MovieClip implements IFlexDisplayObject,IFlexModuleFactory, 
ISystemManager
    // include "../core/Version.as";
 
@@ -3727,6 +3727,13 @@ public class SystemManager extends SystemManagerBase 
implements ISystemManager,
     {
         return component as IPopUpHost;
     }
+       
+       // TODO is this right? Otherwise UIUtils.findPopUpHost() won't stop 
here.
+       public function get popUpParent():IPopUpHostParent
+       {
+               return this;
+       }
+
 
 }
 

Reply via email to