You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Patrick Davids <pa...@nubologic.com> on 2014/02/17 18:21:47 UTC

How to start Wizard with an active step? / Best practise?

Hi all,
what is the best way to start a Wizard in a particular step?

I tried:
- to override onInit of WizardStep and setting this to activeStep, when 
the state is the right one, but init() of WizardModel always determines 
the next step after me (the current active), so this seems not to be a 
good way. I could set the prevoius, but this is quite faked.

- to implement a condition; state is determined correct, but than all 
buttons are deactive, hmm...

- manually setting setActiveStep() after init of WizardModel, but this 
needs to unpack model object to construction time to evaluate my state 
on my own (but it worked as expected).

Did I miss something? Or is the third implementation the best trade-off?

kind regards
Patrick
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: How to start Wizard with an active step? / Best practise?

Posted by Patrick Davids <pa...@nubologic.com>.
Hi Paul,
thanx for your answer.

I will have a look at extending it. :-)

kind regards
Patrick

Am 17.02.2014 22:44, schrieb Paul Bors:
> We need to build the WizardModel in a dynamic way. Although I think there
> is a better more dynamic step too that can be used here.
>
> So one cheap solution is to keep an enum or some sort of a definition of
> your wizard steps:
> public static enum WizStep {
>          /** Step 1 of N */ STEP_ONE(1),
>          /** Step N of N */ STEP_N;
>          ...
>
>          private int stepNum;
>
>          WizStep(int stepNum) {
>              this.stepNum = stepNum;
>          }
>
>          public int getNum() {
>              return this.stepNum;
>          }
> }
>
> Then extend the wizard and build the model starting at the given step like
> so:
> private class MyWizard extends Wizard {
>          private static final long serialVersionUID = 1L;
>
>          public MyWizard(String id, WizStep startStep) {
>              super(id);
>              setDefaultModel(ediPojoModel);
>
>              WizardModel model = new WizardModel();
>              if(WizStep.STEP_ONE.getNum() >= startStep.getNum()) {
>                  model.add(new FirstWiwardStep()});
>              }
>              // Keep adding the rest of the steps
>              ...
>              if(WizStep.STEP_N.getNum() >= startStep.getNum()) {
>                  model.add(new NthStep());
>              }
>
>              init(model);
>          }
> }
>
> Maybe a better approach is to create your own parent intelligent wizard
> step that will skip itself in the init() or onInit() method till it get to
> the Active step then you could build your model as normal.
>
> Have fun.
>
>
>
>
> On Mon, Feb 17, 2014 at 12:21 PM, Patrick Davids <
> patrick.davids@nubologic.com> wrote:
>
>> Hi all,
>> what is the best way to start a Wizard in a particular step?
>>
>> I tried:
>> - to override onInit of WizardStep and setting this to activeStep, when
>> the state is the right one, but init() of WizardModel always determines
>> the next step after me (the current active), so this seems not to be a
>> good way. I could set the prevoius, but this is quite faked.
>>
>> - to implement a condition; state is determined correct, but than all
>> buttons are deactive, hmm...
>>
>> - manually setting setActiveStep() after init of WizardModel, but this
>> needs to unpack model object to construction time to evaluate my state
>> on my own (but it worked as expected).
>>
>> Did I miss something? Or is the third implementation the best trade-off?
>>
>> kind regards
>> Patrick
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
>> For additional commands, e-mail: users-help@wicket.apache.org
>>
>>
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
For additional commands, e-mail: users-help@wicket.apache.org


Re: How to start Wizard with an active step? / Best practise?

Posted by Paul Bors <pa...@bors.ws>.
We need to build the WizardModel in a dynamic way. Although I think there
is a better more dynamic step too that can be used here.

So one cheap solution is to keep an enum or some sort of a definition of
your wizard steps:
public static enum WizStep {
        /** Step 1 of N */ STEP_ONE(1),
        /** Step N of N */ STEP_N;
        ...

        private int stepNum;

        WizStep(int stepNum) {
            this.stepNum = stepNum;
        }

        public int getNum() {
            return this.stepNum;
        }
}

Then extend the wizard and build the model starting at the given step like
so:
private class MyWizard extends Wizard {
        private static final long serialVersionUID = 1L;

        public MyWizard(String id, WizStep startStep) {
            super(id);
            setDefaultModel(ediPojoModel);

            WizardModel model = new WizardModel();
            if(WizStep.STEP_ONE.getNum() >= startStep.getNum()) {
                model.add(new FirstWiwardStep()});
            }
            // Keep adding the rest of the steps
            ...
            if(WizStep.STEP_N.getNum() >= startStep.getNum()) {
                model.add(new NthStep());
            }

            init(model);
        }
}

Maybe a better approach is to create your own parent intelligent wizard
step that will skip itself in the init() or onInit() method till it get to
the Active step then you could build your model as normal.

Have fun.




On Mon, Feb 17, 2014 at 12:21 PM, Patrick Davids <
patrick.davids@nubologic.com> wrote:

> Hi all,
> what is the best way to start a Wizard in a particular step?
>
> I tried:
> - to override onInit of WizardStep and setting this to activeStep, when
> the state is the right one, but init() of WizardModel always determines
> the next step after me (the current active), so this seems not to be a
> good way. I could set the prevoius, but this is quite faked.
>
> - to implement a condition; state is determined correct, but than all
> buttons are deactive, hmm...
>
> - manually setting setActiveStep() after init of WizardModel, but this
> needs to unpack model object to construction time to evaluate my state
> on my own (but it worked as expected).
>
> Did I miss something? Or is the third implementation the best trade-off?
>
> kind regards
> Patrick
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@wicket.apache.org
> For additional commands, e-mail: users-help@wicket.apache.org
>
>