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; - } } }
