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 c3100fc  jewel-wizard: support transitions navigating from a step to 
any other one in the wizard, also add a example of requesting navigation steps 
from a page
c3100fc is described below

commit c3100fcc5f64222842819f991a94fbef8b99ba16
Author: Carlos Rovira <[email protected]>
AuthorDate: Mon Apr 8 17:45:41 2019 +0200

    jewel-wizard: support transitions navigating from a step to any other one 
in the wizard, also add a example of requesting navigation steps from a page
---
 .../src/main/royale/WizardPlayGround.mxml          | 29 +++++++++++++++++++--
 .../royale/org/apache/royale/jewel/WizardPage.as   | 30 ++++++----------------
 .../jewel/beads/controllers/WizardController.as    | 26 +++++++++++++++++++
 .../apache/royale/jewel/beads/views/WizardView.as  |  6 +----
 4 files changed, 62 insertions(+), 29 deletions(-)

diff --git a/examples/royale/TourDeJewel/src/main/royale/WizardPlayGround.mxml 
b/examples/royale/TourDeJewel/src/main/royale/WizardPlayGround.mxml
index 46dc0b7..7454c5c 100644
--- a/examples/royale/TourDeJewel/src/main/royale/WizardPlayGround.mxml
+++ b/examples/royale/TourDeJewel/src/main/royale/WizardPlayGround.mxml
@@ -27,11 +27,30 @@ limitations under the License.
                <![CDATA[
                        import org.apache.royale.events.Event;
                        import org.apache.royale.jewel.Button;
+                       import org.apache.royale.jewel.events.WizardEvent;
 
                        public function getStepLabel(step:WizardStep):String
                        {
                                return step.stepLabel;
                        }
+                       
+                       public function goToPage(num:int):void
+                       {
+                               var navEvent:WizardEvent = new 
WizardEvent(WizardEvent.REQUEST_NAVIGATE_TO_STEP, 'page' + num);
+                               page3.dispatchEvent(navEvent);
+                       }
+                       
+                       public function goToNextPage():void
+                       {
+                               var navEvent:WizardEvent = new 
WizardEvent(WizardEvent.REQUEST_NAVIGATE_NEXT_STEP);
+                               page3.dispatchEvent(navEvent);
+                       }
+                       
+                       public function goToPreviousPage():void
+                       {
+                               var navEvent:WizardEvent = new 
WizardEvent(WizardEvent.REQUEST_NAVIGATE_PREVIOUS_STEP);
+                               page3.dispatchEvent(navEvent);
+                       }
                ]]>
        </fx:Script>
 
@@ -40,7 +59,7 @@ limitations under the License.
        </j:beads>
 
        <j:Card width="600">
-               <j:Wizard id="wizard" width="100%" height="500" 
title="{getStepLabel(wizard.currentStep)}" activateEffect="false">
+               <j:Wizard id="wizard" width="100%" height="500" 
title="{getStepLabel(wizard.currentStep)}" activateEffect="true">
                        <j:previousButton>
                                <j:Group>
                                        <j:IconButton 
emphasis="{Button.SECONDARY}">
@@ -90,7 +109,7 @@ limitations under the License.
 
                        </j:WizardPage>
 
-                       <j:WizardPage name="page3">
+                       <j:WizardPage name="page3" localId="page3">
                                <views:step>
                                        <j:WizardStep name="page3" 
previousStep="page2" nextStep="page4" stepLabel="Page 3"/>
                                </views:step>
@@ -100,6 +119,12 @@ limitations under the License.
                                                <j:VerticalCenteredLayout 
gap="9"/>
                                        </j:beads>
                                        <html:H1 text="Page 3"/>
+                                       <j:Button text="Go To Page 1" 
emphasis="primary" click="goToPage(1);"/>
+                                       <j:Button text="Go To Page 6" 
emphasis="primary" click="goToPage(6);"/>
+                                       <j:HGroup gap="3">
+                                               <j:Button text="Go To Previous" 
emphasis="emphasized" click="goToPreviousPage();"/>
+                                               <j:Button text="Go To Next" 
emphasis="emphasized" click="goToNextPage();"/>
+                                       </j:HGroup>
                                </j:Group>
 
                        </j:WizardPage>
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/WizardPage.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/WizardPage.as
index 6e98b20..bec33b6 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/WizardPage.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/WizardPage.as
@@ -87,6 +87,9 @@ package org.apache.royale.jewel
         */
     public class WizardPage extends SectionContent
     {
+               public static const LEFT_EFFECT:String = "slideLeft";
+               public static const RIGHT_EFFECT:String = "slideRight";
+
         /**
                 *  constructor.
                 *
@@ -190,7 +193,6 @@ package org.apache.royale.jewel
                        {
                                dispatchEvent(new Event("exitPage"));
                                exitPage();
-                               moveEffect(model.activateEffect, "slideRight", 
true);
                        }
                        if(model.currentStep.previousStep == step.name)
                        {
@@ -198,22 +200,9 @@ package org.apache.royale.jewel
                                model.showNextButton = showNextButton;
                                dispatchEvent(new Event("enterPage"));
                                enterPage();
-                               moveEffect(model.activateEffect, "slideLeft", 
false);
-                       }
-               }
-
-               public function moveEffect(activate:Boolean, direction:String, 
addclass:Boolean = true):void
-               {
-                       if(activate)
-                       {
-                               // COMPILE::JS
-                               // {
-                               // element.addEventListener(transitionEvent, 
transitionendHandler);
-                               // }
-                               addclass ? addClass(direction) : 
removeClass(direction);
                        }
                }
-
+               
                // public function transitionendHandler(event:Event):void
                // {
                //      if(event["propertyName"] == "opacity")
@@ -243,7 +232,6 @@ package org.apache.royale.jewel
                        {
                                dispatchEvent(new Event("exitPage"));
                                exitPage();
-                               moveEffect(model.activateEffect, "slideLeft", 
true);
                        }
                        if(model.currentStep.nextStep == step.name)
                        {
@@ -251,7 +239,6 @@ package org.apache.royale.jewel
                                model.showNextButton = showNextButton;
                                dispatchEvent(new Event("enterPage"));
                                enterPage();
-                               moveEffect(model.activateEffect, "slideRight", 
false);
                        }
                }
 
@@ -302,17 +289,16 @@ package org.apache.royale.jewel
         {
             switch (event.type){
                 case WizardEvent.REQUEST_NAVIGATE_TO_STEP:
-                    wizard.showPage(event.stepName);
+                                       var step:WizardStep = 
wizard.findStepByName(event.stepName);
+                                       model.currentStep = step;
                     break;
                 case WizardEvent.REQUEST_NAVIGATE_PREVIOUS_STEP:
                     wizard.dispatchEvent(new Event("goToPreviousStep"));
-                    wizard.currentStep = 
wizard.findStepByName(wizard.currentStep.previousStep);
-                    // wizard.dispatchEvent(new Event("change"));
+                    model.currentStep = 
wizard.findStepByName(wizard.currentStep.previousStep);
                     break;
                 case WizardEvent.REQUEST_NAVIGATE_NEXT_STEP:
                     wizard.dispatchEvent(new Event("goToNextStep"));
-                    wizard.currentStep = 
wizard.findStepByName(wizard.currentStep.nextStep);
-                    // wizard.dispatchEvent(new Event("change"));
+                    model.currentStep = 
wizard.findStepByName(wizard.currentStep.nextStep);
                     break;
             }
         }
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/WizardController.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/WizardController.as
index f5c2b35..75c8deb 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/WizardController.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/WizardController.as
@@ -93,6 +93,7 @@ package org.apache.royale.jewel.beads.controllers
                 */
                protected function handleStepChange(event:Event):void
                {
+            setUpEffects();
             wizard.content.selectedContent = model.currentStep.name;
             wizard.title = model.currentStep.stepLabel;
                }
@@ -171,5 +172,30 @@ package org.apache.royale.jewel.beads.controllers
             
             return null;
         }
+
+        public function setUpEffects():void
+               {
+                       if(model.activateEffect)
+                       {
+                model.currentStep.page.removeClass(WizardPage.LEFT_EFFECT);
+                model.currentStep.page.removeClass(WizardPage.RIGHT_EFFECT);
+                
+                var previous:WizardStep = findStep(model.currentStep, true);
+                while(previous != null)
+                {
+                    previous.page.removeClass(WizardPage.RIGHT_EFFECT);
+                                   
previous.page.addClass(WizardPage.LEFT_EFFECT);
+                    previous = findStep(previous, true);
+                }
+                
+                var next:WizardStep = findStep(model.currentStep, false);
+                while(next != null)
+                {
+                    next.page.removeClass(WizardPage.LEFT_EFFECT);
+                               next.page.addClass(WizardPage.RIGHT_EFFECT);
+                    next = findStep(next, false);
+                }
+            }
+               }
     }
 }
\ No newline at end of file
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/WizardView.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/WizardView.as
index 9174ae4..47f8b7b 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/WizardView.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/WizardView.as
@@ -304,9 +304,6 @@ package org.apache.royale.jewel.beads.views
                 */
                protected function stepChangeAction():void
                {
-                       model.currentStep.page.removeClass("slideLeft");
-                       model.currentStep.page.removeClass("slideRight");
-
                        if(model.activateEffect) {
                                COMPILE::JS
                                {
@@ -317,9 +314,8 @@ package org.apache.royale.jewel.beads.views
                                previousButton.visible = 
model.showPreviousButton && model.currentStep && model.currentStep.previousStep 
!= null;
                                nextButton.visible = model.showNextButton && 
model.currentStep && model.currentStep.nextStep != null;
                        }
-
                }
-               
+
         protected function setupContentAreaLayout():void
         {
         

Reply via email to