have you implemented the onHistoryChanged(String token) method?  In
have to rebuild the state yourself based on the token as it's not done
automatically.  I think you may also need to slightly refactor the
code to get history working as you want.  I would most likely have the
following:

In your class definition tell it your are implementing the GWT history
code:

public class MyClass implements EntryPoint, ValueChangeHandler<String>
{....}

In the onModuleLoad method, link into the History:

public void onModuleLoad(){
                .....
                // Add 'this' as the change handler
                History.addValueChangeHandler(this);
                // Run the handler for the first time in case user has
come in to application with a URL containing a history token
                History.fireCurrentHistoryState();
}

then you have the onHistoryChanged method you would handle the history
token in the URL - in this case I'm guessing you would have a token
for page 2 which indicates you want to display page 2 and if there's
no token, then display page 1:

public void onHistoryChanged(String token){
   if (token.equals(PAGE_TWO_TOKEN){
          rootpanel.get("foo").clear();
          rootpanel.get("foo").add(new page2());
   } else {
          rootpanel.get("foo").clear();
          rootpanel.get("foo").add(new page1());
   }
}

THen, in you button handler you would just set the token instead of
trying to create the page two, i.e.

onButtonClick(){
   // Add token and allow value change event to be fired - the change
is the picked up by the history subsystem in the onHistoryChange
method and new page shown
   History.newItem(PAGE_TWO_TOKEN, true);
}

(don't forget to keep the history iframe, created when you create an
application, in your html code fr history to work in some browsers)

Hope that helps in some way!

//Adam

On 25 Apr, 21:10, mrfreeze81 <[email protected]> wrote:
> Hi,
>   I'm implementing a code using GWT. I want to implement history using
> ValueChangeHandler. This is a feature in the new 1.6 version of GWT.
> This is how my application looks for now
>
> I have a new class for every page I want to create. i.e page1.java and
> page2.java each of which extents Composite.
> On module load, I assign page1 to rootpanel.
> When a button is clicked on page1 i navigate to page2 by
>
> onClickButton ( ) {
>     rootpanel.get("foo").clear();
>     rootpanel.get("foo").add(new page2());
>
> }
>
> I have added page1's state to the history History.nextItem
> (page1state);
>
> I have also added implements ValueChangeHandler to Page1.java class. I
> don't have a separate history handler and so I do
> History.addValueChangeHandler(this);
>
> What do I do to the unimplemented onValueChange() method in my page1
> class. And where do I fire the inital state?
> History.fireCurrentHistoryState(); ???
>
> Also, when I am in the second page (page2), and hit refresh, it loads
> back the first page and not the current state, even if my token reads
> the next state.
>
> Thanks in advance
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/Google-Web-Toolkit?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to