Re: T5: a strategy for a multi-page/multi-form wizard

2007-08-18 Thread Chris Lewis
When thinking about such things like this, I tend to think in terms of 
'classic' OO strategies like inheritance and polymorphism. T5 is really 
big on services and annotations, which may actually provide a more 
flexible solution for this problem. At first the obvious two solutions 
occurred to me:


1) Have each page that is part of the process explicitly check for 
completion of the previous step, and redirect back if incomplete. This 
is easy to implement for a small case, but not at all scalable.
2) Have some base interfaces/classes that the pages composing the wizard 
implement/extend. This would be better than #1 but introduces dependencies.


Then I considered the way that T5 uses simple configuration (via 
annotations) to ascertain things like components and event handlers, and 
the somewhat unclear role (to me) services play. In looking through the 
IoC docs, it seems like one could contribute a a dispatcher to the 
MasterDispatcher service that could do some pre-processing of the 
requested page. If that's possible, then implementing a wizard could be 
done seamlessly with this service and a small set of annotations on the 
page classes composing the forms. So if I had page classes Page1 - Page3 
that made up a simple wizard, my code might be:


@WizardPage( id = registrationWiz, index = 1 )
public class Page1 { ... }

@WizardPage( id = registrationWiz, index = 2 )
public class Page2 { ... }

@WizardPage( id = registrationWiz, index = 3 )
public class Page3 { ... }

Any thoughts on this? I don't even know if its possible to intercept the 
page, but if it is then perhaps this could work.


chris

Nick Westgate (Work) wrote:

Read the docs for onActivate().

Cheers,
Nick.



Chris Lewis-5 wrote:
  

Hello,

I'm redeveloping an application in T5 that will have several wizard-like 
form sequences. Basically a few forms on a few pages that must be 
followed in order, with the ability to revisit/jump around in steps 
already completed. A wizard should prevent steps (pages) from being 
accessed out of sequence unless they have already completed that step. 
Ultimately the completion of a wizard will result in 1 ore more objects 
being created and most likely persisted.
The first one I'm implementing is fairly small - 2 forms on 2 pages. Its 
obviously easy to verify and handle the input from the first page, and 
then render the second page as needed. I simply have an 
onSuccessFromRegister handler return an instance of the second page. 
Before it returns this instance, it calls a setter on the second page to 
indicate the decision(s) made on the first (bucket brigade?). This is 
working, but what it doesn't do is prevent the 2nd page from being 
accessed out of sequence. So I thought implementing one of the early 
render methods in the page to check for the valid sequence would be 
good, but I don't know how to redirect the user if needed, since I can't 
just return a page instance (its not an action handler)!

If anyone has input on how to achieve this I'd appreciate input.

PS Form components must always trigger a method in that page class, as 
opposed to a different one, right?


thanks :)

chris

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]






  




Chris Lewis wrote:

Hello,

I'm redeveloping an application in T5 that will have several 
wizard-like form sequences. Basically a few forms on a few pages that 
must be followed in order, with the ability to revisit/jump around in 
steps already completed. A wizard should prevent steps (pages) from 
being accessed out of sequence unless they have already completed that 
step. Ultimately the completion of a wizard will result in 1 ore more 
objects being created and most likely persisted.
The first one I'm implementing is fairly small - 2 forms on 2 pages. 
Its obviously easy to verify and handle the input from the first page, 
and then render the second page as needed. I simply have an 
onSuccessFromRegister handler return an instance of the second page. 
Before it returns this instance, it calls a setter on the second page 
to indicate the decision(s) made on the first (bucket brigade?). This 
is working, but what it doesn't do is prevent the 2nd page from being 
accessed out of sequence. So I thought implementing one of the early 
render methods in the page to check for the valid sequence would be 
good, but I don't know how to redirect the user if needed, since I 
can't just return a page instance (its not an action handler)!

If anyone has input on how to achieve this I'd appreciate input.

PS Form components must always trigger a method in that page class, as 
opposed to a different one, right?


thanks :)

chris

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]





T5: a strategy for a multi-page/multi-form wizard

2007-08-17 Thread Chris Lewis

Hello,

I'm redeveloping an application in T5 that will have several wizard-like 
form sequences. Basically a few forms on a few pages that must be 
followed in order, with the ability to revisit/jump around in steps 
already completed. A wizard should prevent steps (pages) from being 
accessed out of sequence unless they have already completed that step. 
Ultimately the completion of a wizard will result in 1 ore more objects 
being created and most likely persisted.
The first one I'm implementing is fairly small - 2 forms on 2 pages. Its 
obviously easy to verify and handle the input from the first page, and 
then render the second page as needed. I simply have an 
onSuccessFromRegister handler return an instance of the second page. 
Before it returns this instance, it calls a setter on the second page to 
indicate the decision(s) made on the first (bucket brigade?). This is 
working, but what it doesn't do is prevent the 2nd page from being 
accessed out of sequence. So I thought implementing one of the early 
render methods in the page to check for the valid sequence would be 
good, but I don't know how to redirect the user if needed, since I can't 
just return a page instance (its not an action handler)!

If anyone has input on how to achieve this I'd appreciate input.

PS Form components must always trigger a method in that page class, as 
opposed to a different one, right?


thanks :)

chris

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: T5: a strategy for a multi-page/multi-form wizard

2007-08-17 Thread Nick Westgate (Work)

Read the docs for onActivate().

Cheers,
Nick.



Chris Lewis-5 wrote:
 
 Hello,
 
 I'm redeveloping an application in T5 that will have several wizard-like 
 form sequences. Basically a few forms on a few pages that must be 
 followed in order, with the ability to revisit/jump around in steps 
 already completed. A wizard should prevent steps (pages) from being 
 accessed out of sequence unless they have already completed that step. 
 Ultimately the completion of a wizard will result in 1 ore more objects 
 being created and most likely persisted.
 The first one I'm implementing is fairly small - 2 forms on 2 pages. Its 
 obviously easy to verify and handle the input from the first page, and 
 then render the second page as needed. I simply have an 
 onSuccessFromRegister handler return an instance of the second page. 
 Before it returns this instance, it calls a setter on the second page to 
 indicate the decision(s) made on the first (bucket brigade?). This is 
 working, but what it doesn't do is prevent the 2nd page from being 
 accessed out of sequence. So I thought implementing one of the early 
 render methods in the page to check for the valid sequence would be 
 good, but I don't know how to redirect the user if needed, since I can't 
 just return a page instance (its not an action handler)!
 If anyone has input on how to achieve this I'd appreciate input.
 
 PS Form components must always trigger a method in that page class, as 
 opposed to a different one, right?
 
 thanks :)
 
 chris
 
 -
 To unsubscribe, e-mail: [EMAIL PROTECTED]
 For additional commands, e-mail: [EMAIL PROTECTED]
 
 
 

-- 
View this message in context: 
http://www.nabble.com/T5%3A-a-strategy-for-a-multi-page-multi-form-wizard-tf4287243.html#a12210173
Sent from the Tapestry - User mailing list archive at Nabble.com.


-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: T5: a strategy for a multi-page/multi-form wizard

2007-08-17 Thread Chris Lewis
The activate event handler may also return a value, which is treated 
identically to a return value of an action request event trigger. This 
will typically be used in an access validation scenario.


Missed that little gem ;-). Thanks

Nick Westgate (Work) wrote:

Read the docs for onActivate().

Cheers,
Nick.



Chris Lewis-5 wrote:
  

Hello,

I'm redeveloping an application in T5 that will have several wizard-like 
form sequences. Basically a few forms on a few pages that must be 
followed in order, with the ability to revisit/jump around in steps 
already completed. A wizard should prevent steps (pages) from being 
accessed out of sequence unless they have already completed that step. 
Ultimately the completion of a wizard will result in 1 ore more objects 
being created and most likely persisted.
The first one I'm implementing is fairly small - 2 forms on 2 pages. Its 
obviously easy to verify and handle the input from the first page, and 
then render the second page as needed. I simply have an 
onSuccessFromRegister handler return an instance of the second page. 
Before it returns this instance, it calls a setter on the second page to 
indicate the decision(s) made on the first (bucket brigade?). This is 
working, but what it doesn't do is prevent the 2nd page from being 
accessed out of sequence. So I thought implementing one of the early 
render methods in the page to check for the valid sequence would be 
good, but I don't know how to redirect the user if needed, since I can't 
just return a page instance (its not an action handler)!

If anyone has input on how to achieve this I'd appreciate input.

PS Form components must always trigger a method in that page class, as 
opposed to a different one, right?


thanks :)

chris

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]