You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ca...@apache.org on 2020/12/31 16:19:46 UTC

[royale-asjs] branch develop updated: jewel-DateFieldDateRangeRestriction: new bead to add date range restrictions to DateField

This is an automated email from the ASF dual-hosted git repository.

carlosrovira pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git


The following commit(s) were added to refs/heads/develop by this push:
     new e8476d9  jewel-DateFieldDateRangeRestriction: new bead to add date range restrictions to DateField
e8476d9 is described below

commit e8476d9b94324126ae28f58d311b0c8810bcfd75
Author: Carlos Rovira <ca...@apache.org>
AuthorDate: Thu Dec 31 17:19:34 2020 +0100

    jewel-DateFieldDateRangeRestriction: new bead to add date range restrictions to DateField
---
 .../Jewel/src/main/resources/jewel-manifest.xml    |   1 +
 .../datechooser/DateChooserDateRangeRestriction.as |   6 +-
 .../DateFieldDateRangeRestriction.as}              | 100 +++++++--------------
 3 files changed, 38 insertions(+), 69 deletions(-)

diff --git a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
index 9422b31..5ca4d25 100644
--- a/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
+++ b/frameworks/projects/Jewel/src/main/resources/jewel-manifest.xml
@@ -135,6 +135,7 @@
 
     <component id="DateChooserModel" class="org.apache.royale.jewel.beads.models.DateChooserModel"/>
     <component id="DateChooserDateRangeRestriction" class="org.apache.royale.jewel.beads.controls.datechooser.DateChooserDateRangeRestriction"/>
+    <component id="DateFieldDateRangeRestriction" class="org.apache.royale.jewel.beads.controls.datefield.DateFieldDateRangeRestriction"/>
 
     <component id="ResponsiveView" class="org.apache.royale.jewel.ResponsiveView"/>
 
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datechooser/DateChooserDateRangeRestriction.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datechooser/DateChooserDateRangeRestriction.as
index 6f2bd76..77150b4 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datechooser/DateChooserDateRangeRestriction.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datechooser/DateChooserDateRangeRestriction.as
@@ -123,7 +123,11 @@ package org.apache.royale.jewel.beads.controls.datechooser
 		private function handleDateChooserInitComplete(event:Event):void
 		{
 			(_strand as IEventDispatcher).removeEventListener("initComplete", handleDateChooserInitComplete);
-			
+			setUpBead();
+		}
+
+		public function setUpBead():void
+		{
 			view = _strand.getBeadByType(DateChooserView) as DateChooserView;
 			view.previousButton.addEventListener(MouseEvent.CLICK, refreshDateRange);
 			view.nextButton.addEventListener(MouseEvent.CLICK, refreshDateRange);
diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datechooser/DateChooserDateRangeRestriction.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datefield/DateFieldDateRangeRestriction.as
similarity index 53%
copy from frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datechooser/DateChooserDateRangeRestriction.as
copy to frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datefield/DateFieldDateRangeRestriction.as
index 6f2bd76..811c1a2 100644
--- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datechooser/DateChooserDateRangeRestriction.as
+++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controls/datefield/DateFieldDateRangeRestriction.as
@@ -16,31 +16,27 @@
 //  limitations under the License.
 //
 ////////////////////////////////////////////////////////////////////////////////
-package org.apache.royale.jewel.beads.controls.datechooser
+package org.apache.royale.jewel.beads.controls.datefield
 {
     import org.apache.royale.core.IBead;
     import org.apache.royale.core.IStrand;
     import org.apache.royale.events.Event;
     import org.apache.royale.events.IEventDispatcher;
-    import org.apache.royale.events.MouseEvent;
-    import org.apache.royale.jewel.beads.controls.Disabled;
     import org.apache.royale.jewel.beads.itemRenderers.ITextItemRenderer;
-    import org.apache.royale.jewel.beads.views.DateChooserView;
-    import org.apache.royale.jewel.supportClasses.datechooser.DateChooserTable;
-    import org.apache.royale.jewel.supportClasses.table.TBodyContentArea;
-    import org.apache.royale.jewel.supportClasses.table.TableCell;
-    import org.apache.royale.jewel.supportClasses.table.TableRow;
+    import org.apache.royale.jewel.beads.views.DateFieldView;
+    import org.apache.royale.jewel.DateChooser;
+    import org.apache.royale.jewel.beads.controls.datechooser.DateChooserDateRangeRestriction;
 													
 	/**
 	 *  Disable dates which are outside restriction provided by minDate and maxDate properties
-	 *  in DateChooser component
-	 *  
+	 *  in DateField component
+     * 
 	 *  @langversion 3.0
 	 *  @playerversion Flash 10.2
 	 *  @playerversion AIR 2.6
 	 *  @productversion Royale 0.9.8
 	 */
-	public class DateChooserDateRangeRestriction implements IBead
+	public class DateFieldDateRangeRestriction implements IBead
 	{
         /**
 		 *  constructor.
@@ -50,7 +46,7 @@ package org.apache.royale.jewel.beads.controls.datechooser
 		 *  @playerversion AIR 2.6
 		 *  @productversion Royale 0.9.8
 		 */
-		public function DateChooserDateRangeRestriction()
+		public function DateFieldDateRangeRestriction()
 		{
 		}
 		
@@ -73,7 +69,7 @@ package org.apache.royale.jewel.beads.controls.datechooser
 			if (_minDate != value)
 			{
 				_minDate = value;
-				refreshDateRange();
+				setUpDateRangeRestriction();
 			}
 		}
 		
@@ -96,7 +92,7 @@ package org.apache.royale.jewel.beads.controls.datechooser
 			if (_maxDate != value)
 			{
 				_maxDate = value;
-				refreshDateRange();
+				setUpDateRangeRestriction();
 			}
 		}
 		
@@ -113,71 +109,39 @@ package org.apache.royale.jewel.beads.controls.datechooser
 		public function set strand(value:IStrand):void
 		{
 			_strand = value;
-			(_strand as IEventDispatcher).addEventListener("initComplete", handleDateChooserInitComplete);
+			(_strand as IEventDispatcher).addEventListener("initComplete", handleDateFieldInitComplete);
 		}
 
-		private var view:DateChooserView;
-		private var table:DateChooserTable;
-		private var tableContent:TBodyContentArea;
-
-		private function handleDateChooserInitComplete(event:Event):void
+		private var view:DateFieldView;
+		private var dataRangeRestriction:DateChooserDateRangeRestriction;
+		
+		private function handleDateFieldInitComplete(event:Event):void
 		{
-			(_strand as IEventDispatcher).removeEventListener("initComplete", handleDateChooserInitComplete);
+			(_strand as IEventDispatcher).removeEventListener("initComplete", handleDateFieldInitComplete);
+            (_strand as IEventDispatcher).addEventListener('popUpOpened', popUpOpenedHandler, false);
 			
-			view = _strand.getBeadByType(DateChooserView) as DateChooserView;
-			view.previousButton.addEventListener(MouseEvent.CLICK, refreshDateRange);
-			view.nextButton.addEventListener(MouseEvent.CLICK, refreshDateRange);
-			view.viewSelector.addEventListener(MouseEvent.CLICK, refreshDateRange);
-            
-			table = view.table;
-			view.table.addEventListener(Event.CHANGE, refreshDateRange);
+			view = _strand.getBeadByType(DateFieldView) as DateFieldView;
+		}
 
-            tableContent = table.getBeadByType(TBodyContentArea) as TBodyContentArea;
-			
-			refreshDateRange();
+		private function setUpDateRangeRestriction():void 
+		{
+			if(!dataRangeRestriction)
+				dataRangeRestriction = new DateChooserDateRangeRestriction();
+
+			dataRangeRestriction.minDate = minDate;
+			dataRangeRestriction.maxDate = maxDate;
 		}
 		
-		public function refreshDateRange():void
+		protected function popUpOpenedHandler():void
 		{
             if (!minDate || !maxDate) return;
 			
-            var n:int = table.dataProvider.length;
-			for (var i:int = 0; i < tableContent.numElements; i++)
-			{
-				var row:TableRow = tableContent.getElementAt(i) as TableRow;
-			    for(var j:int = 0; j < row.numElements; j++)
-				{
-			        var tableCell:TableCell = row.getElementAt(j) as TableCell;
-			        var renderer:ITextItemRenderer  = tableCell.getElementAt(0) as ITextItemRenderer;
-                    disableRenderer(renderer);
-		        }
-		    }
-		}		
-		
-		private function disableRenderer(renderer:ITextItemRenderer):void
-		{
-			var rendererDate:Date = renderer.data[renderer.labelField];
-            if (!rendererDate) return;
-			
-			var minTime:Number = minDate.getTime();
-			var maxTime:Number = maxDate.getTime();
-			var itemTime:Number = rendererDate.getTime();
-			
-			var disabled:Disabled = (renderer as IStrand).getBeadByType(Disabled) as Disabled;
-			if (disabled == null)
-			{
-			    disabled = new Disabled();
-				(renderer as IStrand).addBead(disabled);
-			}
+            setUpDateRangeRestriction();
 
-			if ((itemTime > minTime) && (maxTime > itemTime))
-			{
-                disabled.disabled = false;
-			}
-			else
-			{
-                disabled.disabled = true;
-			}
+			var dateChooser:DateChooser = view.popUp as DateChooser;
+			dateChooser.addBead(dataRangeRestriction);
+
+			dataRangeRestriction.setUpBead();
 		}
     }
 }
\ No newline at end of file