Thanks Johan,  Can I create a wiki page with your answer?

On 7/21/05, Johan Compagner <[EMAIL PROTECTED]> wrote:
> 
> >> Is there some documentation somewhere describing how Wicket solves the
> >> Back button problem?  My co-worker using JSF has been running into
> >> lots of back-button problems, which makes me realize that I really
> >> don't understand how best to use Wicket to avoid some or all of them
> >> myself.
> >>
> >
> > No docs yet, sorry. Maybe one of my collegues would like to do a short
> > explaination? Gili is the one that came up with the idea btw.
> 
> Wicket back button support is based on the same principles of the
> Undo/Redo support in swing.
> 
> If you have page versioning enabled (thats default) then everything you
> do on the component level is recorded
> So setting the visibility flag is recorded as a Undoable Change for a
> specific version of that page, The same is for
> replacing components  in a page we record the Remove of the old
> component and the Add of a new component.
> When you do something like this then the version number of the page is
> bumped up one. As you can see that in the links
> that are generated to that page.
> 
> Then when a action comes in to that page with a smaller version number.
> Then everything that was in recorded
> from the largest version to the version you want are Undo ed.
> So for exampe a visibility Recorded on a component is stored in this class:
> 
> protected class VisibilityChange extends Change
> {
>         private final Component component;
> 
>         private final boolean isVisible;
> 
>         VisibilityChange(final Component component)
>         {
>             this.component = component;
>             this.isVisible = component.isVisible();
>         }
> 
>         /**
>          * @see wicket.version.undo.Change#undo()
>          */
>         public void undo()
>         {
>             component.setVisible(!isVisible);
>         }
>     }
> 
> 
> And that undo is called when an older version is encountered. and the
> undo method will invert the visibility...
> 
> Looking now at that code i think holding the visibility flag isn't needed..
> this should also work i believe:
> 
> component.setVisible(!component.isVisible());
> 
> But i am not sure.. Is it always the invert what a component is now. Or
> what it was then...
> 
> You as a developer must record the change if you want model changes to
> be recorded.. That is something
> we can't really do as a framework. (because models can be anything,
> implemented by everybody)
> See Component.modelChanging (should be called before the model is changed)
> and the Component.modelChanged (should be called after the model is changed)
> 
> For back button support the first (modelChanging) is the importand one.
> 
> But i hope this makes it a bit clearer how the Back button based on
> Undoable changes is working..
> 
> johan
> 
> 
> 
> 
> 
> -------------------------------------------------------
> SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
> from IBM. Find simple to follow Roadmaps, straightforward articles,
> informative Webcasts and more! Get everything you need to get up to
> speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
> _______________________________________________
> Wicket-user mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/wicket-user
> 


-- 
Jon Carlson
Reply to: [EMAIL PROTECTED]


-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_idt77&alloc_id492&op=click
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to