You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ah...@apache.org on 2018/07/03 20:45:22 UTC

[royale-asjs] 03/05: fix abstractions around DateField/DateChooser so dropdown can be replaced

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 <ah...@apache.org>
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