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

carlosrovira pushed a commit to branch feature/jewel-datefield-year-month
in repository https://gitbox.apache.org/repos/asf/royale-asjs.git


The following commit(s) were added to 
refs/heads/feature/jewel-datefield-year-month by this push:
     new 9c02ac3  jewel-datechooser: almost finished new year and month 
capabilities
9c02ac3 is described below

commit 9c02ac3d54bda06f6a7c2badaf57190d23659e14
Author: Carlos Rovira <[email protected]>
AuthorDate: Sat Mar 23 16:38:05 2019 +0100

    jewel-datechooser: almost finished new year and month capabilities
---
 .../controllers/DateChooserMouseController.as      | 33 ++++++++++++++++------
 .../royale/jewel/beads/models/DateChooserModel.as  | 23 +++++++++++++--
 .../royale/jewel/beads/views/DateChooserView.as    |  2 ++
 3 files changed, 47 insertions(+), 11 deletions(-)

diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/DateChooserMouseController.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/DateChooserMouseController.as
index 18b636b..df9cdc0 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/DateChooserMouseController.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/DateChooserMouseController.as
@@ -52,6 +52,8 @@ package org.apache.royale.jewel.beads.controllers
                public function DateChooserMouseController()
                {
                }
+
+               private var model:DateChooserModel;
                
                private var _strand:IStrand;
                
@@ -77,15 +79,8 @@ package org.apache.royale.jewel.beads.controllers
             IEventDispatcher(view.table).addEventListener(Event.CHANGE, 
tableHandler);
                }
 
-               private var model:DateChooserModel;
-               
-        private function tableHandler(event:Event):void
-        {
-            var table:DateChooserTable = event.target as DateChooserTable;
-            model.selectedDate = table.selectedItemProperty as Date;
-        }
-
                /**
+                * 
                 * @private
                 */
                private function 
previousButtonClickHandler(event:MouseEvent):void
@@ -111,6 +106,7 @@ package org.apache.royale.jewel.beads.controllers
                }
                
                /**
+                * 
                 * @private
                 */
                private function nextButtonClickHandler(event:MouseEvent):void
@@ -136,6 +132,7 @@ package org.apache.royale.jewel.beads.controllers
                }
 
                /**
+                * 
                 * @private
                 */
                private function viewSelectorClickHandler(event:MouseEvent):void
@@ -144,5 +141,25 @@ package org.apache.royale.jewel.beads.controllers
                        
                        model.viewState = model.viewState == 0 ? 1 : 
model.viewState == 1 ? 2 : 0;
                }
+
+               /**
+                * 
+                * @private
+                */
+        private function tableHandler(event:Event):void
+        {
+            var table:DateChooserTable = event.target as DateChooserTable;
+                       var date:Date = table.selectedItemProperty as Date;
+
+                       if(model.viewState == 0)
+                       {
+                               model.selectedDate = date;
+                       } else 
+                       if(model.viewState == 1) {
+                               model.changeYear(date.getFullYear());
+                       } else {
+                               model.changeMonth(date.getMonth());
+                       }
+        }
        }
 }
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/DateChooserModel.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/DateChooserModel.as
index 6002281..bb461e7 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/DateChooserModel.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/DateChooserModel.as
@@ -265,7 +265,25 @@ package org.apache.royale.jewel.beads.models
         }
         
         // Utilities
+        public function changeYear(newYear:Number):void
+        {
+                       _displayedYear = newYear;
+                       _viewState = 2;
+                       if(_selectedDate)
+                               selectedDate.setFullYear(_displayedYear, 
selectedDate.getMonth(), selectedDate.getDate());
+                       updateCalendar();
+                       dispatchEvent( new Event("yearChanged") );
+               }
         
+               public function changeMonth(newMonth:Number):void
+        {
+                       _displayedMonth = newMonth;
+                       _viewState = 0;
+                       if(_selectedDate)
+                               selectedDate.setMonth(_displayedMonth, 
selectedDate.getDate());
+                       updateCalendar();
+                       dispatchEvent( new Event("monthChanged") );
+               }
         
         /**
          * @private
@@ -292,16 +310,15 @@ package org.apache.royale.jewel.beads.models
                                var yearNumber:int = displayedYear - 
NUM_YEARS_VIEW/2;
                                while(i < NUM_YEARS_VIEW) 
                                {
-                                       _years[i] = new Date(yearNumber + i++, 
0, 1);
+                                       _years[i] = new Date(yearNumber + i++, 
_selectedDate.getMonth(), _selectedDate.getDate());
                                }
                        } else
                        {
                                i = 0;
-                               var monthNumber:int = displayedMonth;
                                var numMonths:Number = 12;
                                while(i < numMonths) 
                                {
-                                       _months[i++] = new Date(displayedYear, 
monthNumber++, 1);
+                                       _months[i] = new Date(displayedYear, 
i++, _selectedDate.getDate());
                                }
                        }
         }
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DateChooserView.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DateChooserView.as
index 18ed775..ad7aa48 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DateChooserView.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/DateChooserView.as
@@ -75,6 +75,8 @@ package org.apache.royale.jewel.beads.views
                        model.addEventListener("dayNamesChanged", 
handleModelChange);
                        model.addEventListener("displayedMonthChanged", 
handleModelChange);
                        model.addEventListener("displayedYearChanged", 
handleModelChange);
+                       model.addEventListener("yearChanged", 
handleModelChange);
+                       model.addEventListener("monthChanged", 
handleModelChange);
                        
                        createChildren();
                        updateDisplay();

Reply via email to