WICKET-6541 added isFinishAvailable()

Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/35822e3b
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/35822e3b
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/35822e3b

Branch: refs/heads/master
Commit: 35822e3bcbe9a3b8502630e8a0787e6a4ec4ce43
Parents: 8068357
Author: Sven Meier <[email protected]>
Authored: Fri Mar 2 11:17:21 2018 +0100
Committer: Sven Meier <[email protected]>
Committed: Tue Apr 10 22:00:54 2018 +0200

----------------------------------------------------------------------
 .../apache/wicket/extensions/wizard/FinishButton.java  |  4 +---
 .../apache/wicket/extensions/wizard/IWizardModel.java  | 13 +++++++++++++
 .../extensions/wizard/dynamic/DynamicWizardModel.java  |  6 ++++++
 .../extensions/wizard/dynamic/IDynamicWizardStep.java  | 11 +++++++++++
 .../wicket/extensions/wizard/WizardModelTest.java      |  6 ++++++
 .../wizard/dynamic/DynamicWizardModelTest.java         |  6 ++++++
 6 files changed, 43 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/35822e3b/wicket-extensions/src/main/java/org/apache/wicket/extensions/wizard/FinishButton.java
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/wizard/FinishButton.java
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/wizard/FinishButton.java
index be62df0..7cf29d1 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/wizard/FinishButton.java
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/wizard/FinishButton.java
@@ -45,9 +45,7 @@ public class FinishButton extends WizardButton
        @Override
        public boolean isEnabled()
        {
-               IWizardStep activeStep = getWizardModel().getActiveStep();
-               return (activeStep != null) && 
getWizardModel().isLastStep(activeStep) 
-                       && super.isEnabled();
+               return getWizardModel().isFinishAvailable() && 
super.isEnabled();
        }
 
        /**

http://git-wip-us.apache.org/repos/asf/wicket/blob/35822e3b/wicket-extensions/src/main/java/org/apache/wicket/extensions/wizard/IWizardModel.java
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/wizard/IWizardModel.java
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/wizard/IWizardModel.java
index 0177546..ca0bb68 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/wizard/IWizardModel.java
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/wizard/IWizardModel.java
@@ -125,6 +125,19 @@ public interface IWizardModel extends IClusterable
         * @return True if the previous button should be enabled, false 
otherwise.
         */
        boolean isPreviousAvailable();
+       
+       /**
+        * Gets whether the finish button should be enabled.
+        * <p>
+        * By default the finish button is available for the last step only.
+        * 
+        * @see #isLastStep(IWizardStep)
+        * 
+        * @return True if the finish button should be enabled, false otherwise.
+        */
+       default boolean isFinishAvailable() {
+               return isLastStep(getActiveStep());
+       }
 
        /**
         * Takes the model to the last step in the wizard. This method must 
only be called if

http://git-wip-us.apache.org/repos/asf/wicket/blob/35822e3b/wicket-extensions/src/main/java/org/apache/wicket/extensions/wizard/dynamic/DynamicWizardModel.java
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/wizard/dynamic/DynamicWizardModel.java
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/wizard/dynamic/DynamicWizardModel.java
index 61a671f..9693659 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/wizard/dynamic/DynamicWizardModel.java
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/wizard/dynamic/DynamicWizardModel.java
@@ -108,6 +108,12 @@ public class DynamicWizardModel extends AbstractWizardModel
                return activeStep.isPreviousAvailable();
        }
 
+       @Override
+       public boolean isFinishAvailable()
+       {
+               return activeStep.isFinishAvailable();
+       }
+       
        /**
         * @see org.apache.wicket.extensions.wizard.IWizardModel#last()
         */

http://git-wip-us.apache.org/repos/asf/wicket/blob/35822e3b/wicket-extensions/src/main/java/org/apache/wicket/extensions/wizard/dynamic/IDynamicWizardStep.java
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/wizard/dynamic/IDynamicWizardStep.java
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/wizard/dynamic/IDynamicWizardStep.java
index 057c42c..fa6d3e8 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/wizard/dynamic/IDynamicWizardStep.java
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/wizard/dynamic/IDynamicWizardStep.java
@@ -69,6 +69,17 @@ public interface IDynamicWizardStep extends IWizardStep
        boolean isPreviousAvailable();
 
        /**
+        * Gets whether the finish button should be enabled.
+        * 
+        * @return True if the finish button should be enabled, false otherwise.
+        * 
+        * @see IWizardModel#isFinishAvailable()
+        */
+       default boolean isFinishAvailable() {
+               return isLastStep();
+       }
+
+       /**
         * Gets the next wizard step from here. Can only be called when
         * {@link DynamicWizardModel#isLastAvailable()} returns true.
         * 

http://git-wip-us.apache.org/repos/asf/wicket/blob/35822e3b/wicket-extensions/src/test/java/org/apache/wicket/extensions/wizard/WizardModelTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/test/java/org/apache/wicket/extensions/wizard/WizardModelTest.java
 
b/wicket-extensions/src/test/java/org/apache/wicket/extensions/wizard/WizardModelTest.java
index a350031..38d502c 100644
--- 
a/wicket-extensions/src/test/java/org/apache/wicket/extensions/wizard/WizardModelTest.java
+++ 
b/wicket-extensions/src/test/java/org/apache/wicket/extensions/wizard/WizardModelTest.java
@@ -92,9 +92,15 @@ public class WizardModelTest extends WicketTestCase
 
                assertSame(step1, model.getActiveStep());
                assertTrue(model.isNextAvailable());
+               assertFalse(model.isLastStep(model.getActiveStep()));
+               assertFalse(model.isFinishAvailable());
+
                model.next();
                assertSame(step4, model.getActiveStep());
                assertFalse(model.isNextAvailable());
+               assertTrue(model.isLastStep(model.getActiveStep()));
+               assertTrue(model.isFinishAvailable());
+
                try {
                        model.next();
                        fail();

http://git-wip-us.apache.org/repos/asf/wicket/blob/35822e3b/wicket-extensions/src/test/java/org/apache/wicket/extensions/wizard/dynamic/DynamicWizardModelTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/test/java/org/apache/wicket/extensions/wizard/dynamic/DynamicWizardModelTest.java
 
b/wicket-extensions/src/test/java/org/apache/wicket/extensions/wizard/dynamic/DynamicWizardModelTest.java
index c5c15b4..0366b5a 100644
--- 
a/wicket-extensions/src/test/java/org/apache/wicket/extensions/wizard/dynamic/DynamicWizardModelTest.java
+++ 
b/wicket-extensions/src/test/java/org/apache/wicket/extensions/wizard/dynamic/DynamicWizardModelTest.java
@@ -66,9 +66,15 @@ public class DynamicWizardModelTest extends WicketTestCase
                
                assertSame(step1, model.getActiveStep());
                assertTrue(model.isNextAvailable());
+               assertFalse(model.isLastStep(model.getActiveStep()));
+               assertFalse(model.isFinishAvailable());
+               
                model.next();
                assertSame(step4, model.getActiveStep());
                assertFalse(model.isNextAvailable());
+               assertTrue(model.isLastStep(model.getActiveStep()));
+               assertTrue(model.isFinishAvailable());
+               
                try {
                        model.next();
                        fail();

Reply via email to