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();
