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 37b0dbeae43c25c07baef0597f9f58d01756d0c3
Author: Alex Harui <[email protected]>
AuthorDate: Tue Jul 3 13:44:10 2018 -0700

    fix abstractions around DateField/DateChooser so dropdown can be replaced
---
 .../Basic/src/main/resources/basic-manifest.xml    |  1 +
 .../projects/Basic/src/main/resources/defaults.css | 11 +++++
 .../org/apache/royale/html/beads/DateFieldView.as  | 15 ++++---
 .../beads/controllers/DateFieldMouseController.as  |  2 +-
 .../html/supportClasses/DateFieldDateChooser.as    | 48 ++++++++++++++++++++++
 .../royale/html/supportClasses/IDateChooser.as     | 36 ++++++++++++++++
 6 files changed, 104 insertions(+), 9 deletions(-)

diff --git a/frameworks/projects/Basic/src/main/resources/basic-manifest.xml 
b/frameworks/projects/Basic/src/main/resources/basic-manifest.xml
index 6d00cc9..f7da4ce 100644
--- a/frameworks/projects/Basic/src/main/resources/basic-manifest.xml
+++ b/frameworks/projects/Basic/src/main/resources/basic-manifest.xml
@@ -186,6 +186,7 @@
     <component id="DateChooserList" 
class="org.apache.royale.html.supportClasses.DateChooserList" />
     <component id="DateChooserHeader" 
class="org.apache.royale.html.supportClasses.DateChooserHeader" />
     <component id="DateField" class="org.apache.royale.html.DateField"/>
+    <component id="DateFieldDateChooser" 
class="org.apache.royale.html.supportClasses.DateFieldDateChooser"/>
     <component id="VerticalColumnLayout" 
class="org.apache.royale.html.beads.layouts.VerticalColumnLayout" />
 
     <component id="ToolTipBead" 
class="org.apache.royale.html.accessories.ToolTipBead" />
diff --git a/frameworks/projects/Basic/src/main/resources/defaults.css 
b/frameworks/projects/Basic/src/main/resources/defaults.css
index 901f1f0..d60a26e 100644
--- a/frameworks/projects/Basic/src/main/resources/defaults.css
+++ b/frameworks/projects/Basic/src/main/resources/defaults.css
@@ -221,6 +221,16 @@ DateChooser {
        height: 240px;
 }
 
+DateFieldDateChooser {
+       IBeadView:   
ClassReference("org.apache.royale.html.beads.DateChooserView");
+       IBeadModel:  
ClassReference("org.apache.royale.html.beads.models.DateChooserModel");         
           
+       IBeadLayout: 
ClassReference("org.apache.royale.html.beads.layouts.VerticalFlexLayout"); 
+       IBeadController: 
ClassReference("org.apache.royale.html.beads.controllers.DateChooserMouseController");
+       width:  210px;
+       height: 230px;
+}
+
+
 DateChooserList {
        IDataProviderItemRendererMapper: 
ClassReference("org.apache.royale.html.beads.DataItemRendererFactoryForArrayData");
        IItemRendererClassFactory: 
ClassReference("org.apache.royale.core.ItemRendererClassFactory");
@@ -272,6 +282,7 @@ DateField {
        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("org.apache.royale.html.supportClasses.DateFieldDateChooser");
 }
 
 /** DividedContainer */
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DateFieldView.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DateFieldView.as
index 7148dbf..069df0c 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DateFieldView.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/DateFieldView.as
@@ -32,8 +32,9 @@ package org.apache.royale.html.beads
        import org.apache.royale.events.IEventDispatcher;
        import org.apache.royale.utils.UIUtils;
        import org.apache.royale.utils.PointUtils;
+    import org.apache.royale.utils.loadBeadFromValuesManager;
        import org.apache.royale.geom.Point;
-       import org.apache.royale.html.DateChooser;
+       import org.apache.royale.html.supportClasses.IDateChooser;
        import org.apache.royale.html.TextButton;
        import org.apache.royale.html.TextInput;
        COMPILE::SWF
@@ -157,7 +158,7 @@ package org.apache.royale.html.beads
                        _textInput.text = formatter.formattedString;
                }
 
-               private var _popUp:DateChooser;
+               private var _popUp:IDateChooser;
 
                /**
                 *  The pop-up component that holds the selection list.
@@ -167,7 +168,7 @@ package org.apache.royale.html.beads
                 *  @playerversion AIR 2.6
                 *  @productversion Royale 0.0
                 */
-               public function get popUp():DateChooser
+               public function get popUp():IDateChooser
                {
                        return _popUp;
                }
@@ -194,11 +195,9 @@ package org.apache.royale.html.beads
                                if (value)
                                {
                                        if (!_popUp)
-                                       {
-                                               _popUp = new DateChooser();
-                                               _popUp.width = 210;
-                                               _popUp.height = 230;
-                                       }
+                    {
+                        _popUp = ValuesManager.valuesImpl.newInstance(_strand, 
"iPopUp") as IDateChooser;
+                    }
 
                                        var model:IDateChooserModel = 
_strand.getBeadByType(IDateChooserModel) as IDateChooserModel;
                                        _popUp.selectedDate = 
model.selectedDate;
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DateFieldMouseController.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DateFieldMouseController.as
index 810dd3a..e9967f8 100644
--- 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DateFieldMouseController.as
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/beads/controllers/DateFieldMouseController.as
@@ -69,7 +69,7 @@ package org.apache.royale.html.beads.controllers
                        _strand = value;
                        
                        var viewBead:DateFieldView = 
_strand.getBeadByType(DateFieldView) as DateFieldView;                     
-                       
IEventDispatcher(viewBead.menuButton).addEventListener("click", clickHandler);
+                       IEventDispatcher(_strand).addEventListener("click", 
clickHandler);
                }
                
                /**
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/DateFieldDateChooser.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/DateFieldDateChooser.as
new file mode 100644
index 0000000..b8e2bc5
--- /dev/null
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/DateFieldDateChooser.as
@@ -0,0 +1,48 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.royale.html.supportClasses
+{
+    import org.apache.royale.core.IPopUp;
+    import org.apache.royale.html.DateChooser;
+    
+    /**
+     *  The DateFieldDateChooser class is the DateChooser class used internally
+     *  by DateField as the dropdown/popup.
+     *  
+     *  @langversion 3.0
+     *  @playerversion Flash 10.2
+     *  @playerversion AIR 2.6
+     *  @productversion Royale 0.0
+     */
+       public class DateFieldDateChooser extends DateChooser implements 
IPopUp, IDateChooser
+       {
+        /**
+         *  Constructor.
+         *  
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion Royale 0.0
+         */
+               public function DateFieldDateChooser()
+               {
+                       super();
+               }
+       }
+}
diff --git 
a/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/IDateChooser.as
 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/IDateChooser.as
new file mode 100644
index 0000000..25cc614
--- /dev/null
+++ 
b/frameworks/projects/Basic/src/main/royale/org/apache/royale/html/supportClasses/IDateChooser.as
@@ -0,0 +1,36 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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 org.apache.royale.html.supportClasses
+{
+       import org.apache.royale.core.IUIBase;
+
+       public interface IDateChooser extends IUIBase
+       {       
+               /**
+                * The selectedDate
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9
+                */
+               function get selectedDate():Date;
+        function set selectedDate(value:Date):void;
+       }
+}
\ No newline at end of file

Reply via email to