This is an automated email from the ASF dual-hosted git repository. aharui pushed a commit to branch feature/MXRoyale in repository https://gitbox.apache.org/repos/asf/royale-asjs.git
commit f9d557d45ec10b4ede8bd3a1a1c4d9a77f9ffe97 Author: Alex Harui <[email protected]> AuthorDate: Tue Jul 3 13:44:47 2018 -0700 fix MXRoyale DateField/DateChooser --- .../MXRoyale/src/main/resources/defaults.css | 8 +++ .../MXRoyale/src/main/royale/MXRoyaleClasses.as | 2 + .../src/main/royale/mx/controls/DateChooser.as | 59 +++++++++++--------- .../src/main/royale/mx/controls/DateField.as | 63 +++++++++------------- .../main/royale/mx/controls/beads/DateFieldView.as | 50 +++++++++++++++++ .../dateFieldClasses/DateFieldDateChooser.as | 37 +++++++++++++ 6 files changed, 155 insertions(+), 64 deletions(-) diff --git a/frameworks/projects/MXRoyale/src/main/resources/defaults.css b/frameworks/projects/MXRoyale/src/main/resources/defaults.css index 066c398..1cd1ae3 100644 --- a/frameworks/projects/MXRoyale/src/main/resources/defaults.css +++ b/frameworks/projects/MXRoyale/src/main/resources/defaults.css @@ -91,6 +91,14 @@ DateChooser height: 240px; } +DateField { + IBeadView: ClassReference("mx.controls.beads.DateFieldView"); + IBeadModel: ClassReference("org.apache.royale.html.beads.models.DateChooserModel"); + IBeadController: ClassReference("org.apache.royale.html.beads.controllers.DateFieldMouseController"); + IFormatBead: ClassReference("org.apache.royale.html.accessories.DateFormatYYYYMMDD"); + IPopUp: ClassReference("mx.controls.dateFieldClasses.DateFieldDateChooser"); +} + Image { IBeadModel: ClassReference("org.apache.royale.html.beads.models.ImageModel"); diff --git a/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as b/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as index cd5ebba..09a2b75 100644 --- a/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as +++ b/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as @@ -145,6 +145,8 @@ internal class MXRoyaleClasses import mx.controls.beads.RadioButtonView; RadioButtonView; } import mx.controls.beads.NumericStepperView; NumericStepperView; + import mx.controls.beads.DateFieldView; DateFieldView; + import mx.controls.dateFieldClasses.DateFieldDateChooser; DateFieldDateChooser; } } diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/DateChooser.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/DateChooser.as index 229c6e4..b88f023 100644 --- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/DateChooser.as +++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/DateChooser.as @@ -23,32 +23,17 @@ COMPILE::JS { import goog.DEBUG; } + import mx.core.UIComponent; + import mx.core.mx_internal; + import mx.events.CalendarLayoutChangeEvent; + + import org.apache.royale.core.IBeadLayout; + import org.apache.royale.core.ILayoutHost; + import org.apache.royale.core.ILayoutParent; + import org.apache.royale.core.ILayoutView; + import org.apache.royale.events.Event; import org.apache.royale.html.beads.models.DateChooserModel; - -/* -import flash.display.DisplayObject; -import flash.display.GradientType; -import flash.display.Graphics; -import flash.display.Sprite; -import flash.events.Event; -import flash.events.EventPhase; -import flash.events.KeyboardEvent; -import flash.geom.ColorTransform; -import flash.geom.Matrix; -import flash.text.TextFormat; -import flash.ui.Keyboard; -import flash.utils.getQualifiedClassName; - -import mx.core.FlexSprite; -import mx.core.FlexVersion; -import mx.core.IFlexModuleFactory; -import mx.core.IFontContextComponent; -import mx.core.IUITextField; -import mx.core.UITextField; -*/ -import mx.core.UIComponent; -import mx.core.mx_internal; -import mx.events.CalendarLayoutChangeEvent; + import org.apache.royale.utils.loadBeadFromValuesManager; /* import mx.events.DateChooserEvent; @@ -224,7 +209,7 @@ use namespace mx_internal; * @playerversion AIR 1.1 * @productversion Flex 3 */ -public class DateChooser extends UIComponent //implements IFocusManagerComponent, IFontContextComponent +public class DateChooser extends UIComponent implements ILayoutParent, ILayoutView//implements IFocusManagerComponent, IFontContextComponent { //-------------------------------------------------------------------------- @@ -1013,6 +998,28 @@ public class DateChooser extends UIComponent //implements IFocusManagerComponent //-------------------------------------------------------------------------- + override public function addedToParent():void + { + super.addedToParent(); + // Load the layout bead if it hasn't already been loaded. + loadBeadFromValuesManager(IBeadLayout, "iBeadLayout", this); + + dispatchEvent(new Event("initComplete")); + } + + /** + * Returns the ILayoutHost which is its view. From ILayoutParent. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.8 + * @royaleignorecoercion org.apache.royale.core.ILayoutHost + */ + public function getLayoutHost():ILayoutHost + { + return view as ILayoutHost; + } } } diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/DateField.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/DateField.as index aa633b0..46eefc5 100644 --- a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/DateField.as +++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/DateField.as @@ -31,35 +31,25 @@ import flash.geom.Rectangle; import flash.ui.Keyboard; */ //import mx.controls.dataGridClasses.DataGridListData; +import mx.controls.beads.DateFieldView; import mx.controls.listClasses.BaseListData; -//import mx.controls.listClasses.IDropInListItemRenderer; -//import mx.controls.listClasses.IListItemRenderer; -//import mx.controls.listClasses.ListData; import mx.core.ClassFactory; import mx.core.IDataRenderer; import mx.core.IFactory; -//import mx.core.LayoutDirection; import mx.core.mx_internal; -//import mx.core.UIComponentGlobals; import mx.events.CalendarLayoutChangeEvent; -//import mx.events.DateChooserEvent; -//import mx.events.DropdownEvent; import mx.events.FlexEvent; -//import mx.events.FlexMouseEvent; -//import mx.events.InterManagerRequest; import mx.events.SandboxMouseEvent; import mx.managers.IFocusManagerComponent; import mx.managers.ISystemManager; -//import mx.managers.PopUpManager; -//import mx.resources.Locale; -//import mx.resources.ResourceManager; import mx.styles.CSSStyleDeclaration; -//import mx.styles.StyleManager; import mx.styles.StyleProxy; -import mx.utils.ObjectUtil; +import mx.utils.ObjectUtil; use namespace mx_internal; +import org.apache.royale.core.IDateChooserModel; + //-------------------------------------- // Events //-------------------------------------- @@ -267,8 +257,8 @@ include "../styles/metadata/TextStyles.as" */ [RequiresDataBinding(true)] -[ResourceBundle("controls")] -[ResourceBundle("SharedResources")] +//[ResourceBundle("controls")] +//[ResourceBundle("SharedResources")] /** * The DateField control is a text field that shows the date @@ -745,8 +735,7 @@ public class DateField extends ComboBase * @productversion Flex 3 */ public function DateField() - { -x=2; + { super(); // addEventListener(Event.REMOVED_FROM_STAGE, removedFromStageHandler); } @@ -860,6 +849,7 @@ x=2; // invalidateProperties(); } + //-------------------------------------------------------------------------- // // Properties @@ -1239,12 +1229,6 @@ x=2; //---------------------------------- /** - * @private - * Storage for the dropdown property. - */ - private var _dropdown:DateChooser; - - /** * Contains a reference to the DateChooser control * contained by the DateField control. The class used * can be set with <code>dropdownFactory</code> as long as @@ -1257,7 +1241,7 @@ x=2; */ public function get dropdown():DateChooser { - return _dropdown; + return (view as DateFieldView).popUp as DateChooser; } //---------------------------------- @@ -1873,17 +1857,6 @@ x=2; // selectedDate //---------------------------------- - /** - * @private - * Storage for the selectedDate property. - */ - private var _selectedDate:Date = null; - - /** - * @private - */ - private var selectedDateChanged:Boolean = false; - [Bindable("change")] [Bindable("valueCommit")] [Bindable("selectedDateChanged")] @@ -1908,7 +1881,7 @@ x=2; */ public function get selectedDate():Date { - return _selectedDate; + return (model as IDateChooserModel).selectedDate; } /** @@ -1916,6 +1889,7 @@ x=2; */ public function set selectedDate(value:Date):void { + (model as IDateChooserModel).selectedDate = value; /* if (ObjectUtil.dateCompare(_selectedDate, value) == 0) return; @@ -2889,7 +2863,20 @@ x=2; return showingDropdown; } */ - + /** + * @private + */ + override public function get text():String + { + var s:String = (view as DateFieldView).textInput.text; + return s == null ? "" : s; + } + + override public function setFocus():void + { + return (view as DateFieldView).setFocus(); + + } } } diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DateFieldView.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DateFieldView.as new file mode 100644 index 0000000..2568bff --- /dev/null +++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/beads/DateFieldView.as @@ -0,0 +1,50 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// 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.beads +{ + COMPILE::SWF + { + import flash.display.Sprite; + } + import org.apache.royale.core.IStrand; + import org.apache.royale.html.beads.DateFieldView; + + /** + * The NumericStepperView class overrides the Basic + * NumericStepperView and sets default sizes to better + * emulate Flex. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.0 + */ + public class DateFieldView extends org.apache.royale.html.beads.DateFieldView + { + public function setFocus():void + { + COMPILE::SWF + { + var host:Sprite = getHost() as Sprite; + host.stage.focus = host; + } + } + + } +} diff --git a/frameworks/projects/MXRoyale/src/main/royale/mx/controls/dateFieldClasses/DateFieldDateChooser.as b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/dateFieldClasses/DateFieldDateChooser.as new file mode 100644 index 0000000..51db776 --- /dev/null +++ b/frameworks/projects/MXRoyale/src/main/royale/mx/controls/dateFieldClasses/DateFieldDateChooser.as @@ -0,0 +1,37 @@ +//////////////////////////////////////////////////////////////////////////////// +// +// 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.dateFieldClasses +{ + import mx.controls.DateChooser; + import org.apache.royale.core.IStrand; + import org.apache.royale.html.supportClasses.IDateChooser; + + /** + * The DateFieldDateChooser is the DateChooser dropdown + * for a DateField. + * + * @langversion 3.0 + * @playerversion Flash 10.2 + * @playerversion AIR 2.6 + * @productversion Royale 0.0 + */ + public class DateFieldDateChooser extends DateChooser implements IDateChooser + { + } +}
