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

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

commit c93d44871459cec254c8a4d9db5df2fb7fb56221
Author: Yishay Weiss <[email protected]>
AuthorDate: Tue Apr 12 23:02:57 2022 +0300

    Make sure mx MenuBar creates mx menus
---
 .../CascadingMenuSelectionMouseController.as       |  7 ++-
 .../MXRoyale/src/main/resources/defaults.css       |  2 +-
 .../src/main/resources/mx-royale-manifest.xml      |  1 +
 .../MXRoyale/src/main/royale/mx/controls/Menu.as   | 21 ++------
 .../CascadingMenuSelectionMouseController.as       | 15 +++---
 .../beads/controllers/MenuBarMouseController.as    |  5 +-
 .../controls/menuClasses/CascadingMenuFactory.as   | 60 ++++++++++++++++++++++
 .../menuClasses/CascadingMenuItemRenderer.as       | 12 +----
 8 files changed, 86 insertions(+), 37 deletions(-)

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 e6d6f88073..b602c16908 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
@@ -104,7 +104,7 @@ package org.apache.royale.html.beads.controllers
                                        }
                                }
                                model.selectedItem = event.data;
-                               menu.show(component, component.width, 0);
+                               showSubMenu(menu, component);
                        }
                        else {
                                super.selectedHandler(event);
@@ -112,6 +112,11 @@ package org.apache.royale.html.beads.controllers
                        }
                }
 
+               protected function showSubMenu(menu:IMenu, 
component:IUIBase):void
+               {
+                       menu.show(component, component.width, 0);
+               }
+
                protected function getParentMenuBar():IEventDispatcher
                {
                        return (_strand as IMenu).parentMenuBar;
diff --git a/frameworks/projects/MXRoyale/src/main/resources/defaults.css 
b/frameworks/projects/MXRoyale/src/main/resources/defaults.css
index 4f87d079b3..e458bd2258 100644
--- a/frameworks/projects/MXRoyale/src/main/resources/defaults.css
+++ b/frameworks/projects/MXRoyale/src/main/resources/defaults.css
@@ -361,7 +361,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.CascadingMenuFactory");
+       IMenuFactory: 
ClassReference("mx.controls.menuClasses.CascadingMenuFactory");
        IDataProviderItemRendererMapper: 
ClassReference("mx.controls.listClasses.DataItemRendererFactoryForICollectionViewData");
        IItemRendererClassFactory: 
ClassReference("org.apache.royale.core.ItemRendererClassFactory");
        IItemRendererInitializer: 
ClassReference("org.apache.royale.html.beads.IndexedItemRendererInitializer");
diff --git 
a/frameworks/projects/MXRoyale/src/main/resources/mx-royale-manifest.xml 
b/frameworks/projects/MXRoyale/src/main/resources/mx-royale-manifest.xml
index 4cd28862fa..6d34800b56 100644
--- a/frameworks/projects/MXRoyale/src/main/resources/mx-royale-manifest.xml
+++ b/frameworks/projects/MXRoyale/src/main/resources/mx-royale-manifest.xml
@@ -238,5 +238,6 @@
     <component id="HTML" class="mx.controls.HTML"/>
     <component id="HeaderRendererFactoryForArrayData" 
class="mx.controls.dataGridClasses.HeaderRendererFactoryForArrayData"/>
     <component id="DataGridHeaderRenderer" 
class="mx.controls.dataGridClasses.DataGridHeaderRenderer"/>
+    <component id="CascadingMenuFactory" 
class="mx.controls.menuClasses.CascadingMenuFactory"/>
 
 </componentPackage>
diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/Menu.as 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/Menu.as
index aedc81c5c3..60a52efee2 100644
--- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/Menu.as
+++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/Menu.as
@@ -36,7 +36,6 @@ package mx.controls
        import org.apache.royale.core.IDataProviderItemRendererMapper;
        import org.apache.royale.core.IItemRendererClassFactory;
        import org.apache.royale.core.IItemRendererProvider;
-       import org.apache.royale.html.beads.models.CascadingMenuModel;
        import org.apache.royale.html.beads.models.MenuModel;
        import org.apache.royale.utils.loadBeadFromValuesManager;
        
@@ -99,8 +98,7 @@ package mx.controls
        import org.apache.royale.core.ILayoutView;
        import org.apache.royale.core.IHasLabelField;
        import org.apache.royale.html.util.getModelByType;
-       import org.apache.royale.core.IPopUpHostParent;
-       import org.apache.royale.core.IPopUpHost;
+       import org.apache.royale.core.ICascadingMenuModel;
        
        use namespace mx_internal;
        
@@ -595,7 +593,7 @@ package mx.controls
         *  @playerversion AIR 1.1
         *  @productversion Flex 3
         */
-       public class Menu extends UIComponent implements 
IFocusManagerContainer, IMenu, IItemRendererProvider, ILayoutParent, 
ILayoutView, IHasLabelField, IPopUpHostParent
+       public class Menu extends UIComponent implements 
IFocusManagerContainer, IMenu, IItemRendererProvider, ILayoutParent, 
ILayoutView, IHasLabelField
        {
                // include "../core/Version.as";
                
@@ -2983,12 +2981,12 @@ package mx.controls
                 */
                public function get submenuField():String
                {
-                       return (model as CascadingMenuModel).submenuField;
+                       return (model as ICascadingMenuModel).submenuField;
                }
                
                public function set submenuField(value:String):void
                {
-                       (model as CascadingMenuModel).submenuField = value;
+                       (model as ICascadingMenuModel).submenuField = value;
                }
                
                //labelFunction,iconField,iconFunction was in 
mx.controls.listClasses.ListBase in Flex because menu was extending list and 
then listBase,but in Royale Menu is direct extending UIComponent so i added 
that functions in Menu Class
@@ -3133,17 +3131,6 @@ package mx.controls
 
                        dispatchEvent(new Event("iconFunctionChanged"));
                    }
-
-                   private var _popUpHost:IPopUpHost;
-                   public function get popUpHost():IPopUpHost
-                   {
-                           return _popUpHost;
-                   }
-
-                   public function set popUpHost(value:IPopUpHost):void
-                   {
-                           _popUpHost = value;
-                   }
                        
        }
        
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/controllers/CascadingMenuSelectionMouseController.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/controllers/CascadingMenuSelectionMouseController.as
index 7dfecfd8af..e8f63577d6 100644
--- 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/controllers/CascadingMenuSelectionMouseController.as
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/controllers/CascadingMenuSelectionMouseController.as
@@ -31,11 +31,11 @@ package mx.controls.beads.controllers
        import org.apache.royale.core.UIBase;
        import org.apache.royale.events.IEventDispatcher;
        import mx.supportClasses.IFoldable;
-       import mx.controls.Menu;
-       import org.apache.royale.core.IPopUpHost;
        import org.apache.royale.core.IStrand;
        import org.apache.royale.core.IUIBase;
        import org.apache.royale.html.beads.models.MenuModel;
+       import org.apache.royale.utils.PointUtils;
+       import org.apache.royale.geom.Point;
 
 /**
  *  The CascadingMenuSelectionMouseController is the default controller for 
emulation cascading menu
@@ -79,10 +79,6 @@ package mx.controls.beads.controllers
 
                override protected function 
selectedHandler(event:ItemClickedEvent):void
                {
-                       if (_strand is Menu && event.target is IPopUpHost)
-                       {
-                               (_strand as Menu).popUpHost = event.target as 
IPopUpHost;
-                       }
                        super.selectedHandler(event);
                        if (event.target is IFoldable && (event.target as 
IFoldable).canUnfold)
                        {
@@ -157,6 +153,13 @@ package mx.controls.beads.controllers
                        addClickOutHandler(event.target);
                }
 
+               override protected function showSubMenu(menu:IMenu, 
component:IUIBase):void
+               {
+                       var p:Point = PointUtils.localToGlobal(new Point(0, 0), 
component);
+                       menu.show(component, p.x + component.width, p.y);
+               }
+
+
        }
 
 }
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/controllers/MenuBarMouseController.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/controllers/MenuBarMouseController.as
index 4ed5305c0d..4efd8ef916 100644
--- 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/controllers/MenuBarMouseController.as
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/controllers/MenuBarMouseController.as
@@ -26,6 +26,8 @@ package mx.controls.beads.controllers
     import org.apache.royale.core.IStrandWithPresentationModel;
     import org.apache.royale.core.IUIBase;
     import org.apache.royale.html.beads.controllers.MenuBarMouseController;
+    import org.apache.royale.geom.Point;
+    import org.apache.royale.utils.PointUtils;
        
     /**
      *  MenuBar Mouse Controller
@@ -66,7 +68,8 @@ package mx.controls.beads.controllers
          */
                override protected function showMenu(menu:IMenu, 
component:IUIBase):void
                {
-            super.showMenu(menu, component);
+            var p:Point = PointUtils.localToGlobal(new Point(0, 
component.height), component);
+            menu.show(component, p.x, p.y);
             var swpm:IStrandWithPresentationModel = menu as 
IStrandWithPresentationModel;
             if (swpm)
             {
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/menuClasses/CascadingMenuFactory.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/menuClasses/CascadingMenuFactory.as
new file mode 100644
index 0000000000..3ee50d4aba
--- /dev/null
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/menuClasses/CascadingMenuFactory.as
@@ -0,0 +1,60 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.
+//
+////////////////////////////////////////////////////////////////////////////////
+package mx.controls.menuClasses
+{
+       import org.apache.royale.core.IFactory;
+       import org.apache.royale.core.Bead;
+       import mx.controls.Menu;
+       
+       /**
+        * This bead class generates instances of the CascadingMenu for use 
with MenuBar.
+        *  
+        *  @langversion 3.0
+        *  @playerversion Flash 10.2
+        *  @playerversion AIR 2.6
+        *  @productversion Royale 0.9.10
+        */
+       public class CascadingMenuFactory extends Bead implements IFactory
+       {
+               /**
+                * Constructor.
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.10
+                */
+               public function CascadingMenuFactory()
+               {
+               }
+               
+               /**
+                * Returns a new instance of CascadingMenu.
+                *  
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.10
+                */
+               public function newInstance():*
+               {
+                       return new Menu();
+               }
+       }
+}
\ No newline at end of file
diff --git 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/menuClasses/CascadingMenuItemRenderer.as
 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/menuClasses/CascadingMenuItemRenderer.as
index 40d0417841..20d5972d2f 100644
--- 
a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/menuClasses/CascadingMenuItemRenderer.as
+++ 
b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/menuClasses/CascadingMenuItemRenderer.as
@@ -39,7 +39,7 @@ package mx.controls.menuClasses
         *  @productversion Flex 3
         */
 
-       public class CascadingMenuItemRenderer extends 
org.apache.royale.html.supportClasses.CascadingMenuItemRenderer implements 
IFoldable, IPopUpHost, IPopUpHostParent
+       public class CascadingMenuItemRenderer extends 
org.apache.royale.html.supportClasses.CascadingMenuItemRenderer implements 
IFoldable
        {
                public function CascadingMenuItemRenderer()
                {
@@ -130,16 +130,6 @@ package mx.controls.menuClasses
                {
                        return getHasMenu();
                }
-
-               public function get popUpParent():IPopUpHostParent
-               {
-                       return this;
-               }
-
-               public function get popUpHost():IPopUpHost
-               {
-                       return this;
-               }
        }
 
 }

Reply via email to