You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by yi...@apache.org on 2022/04/12 20:04:17 UTC
[royale-asjs] 01/02: Make sure mx MenuBar creates mx menus
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 <yi...@hotmail.com>
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;
- }
}
}