PDA

View Full Version : History mechanism



procuk
24 Mar 2009, 1:03 AM
Good day every one. I try to manage history tokens? But it seems I do some thing wrong.
In this example I am trying to create some TabPanel, then I add 3 TabItem. Then I add Listener to TabPanel to intercept Selection event. And then implement History listener.

Code:

public class Main implements EntryPoint {
private TabPanel tabPanel;
public void onModuleLoad() {
tabPanel = new TabPanel();
TabItem ti = new TabItem("Page 1");
ti.setId("page1");
tabPanel.add(ti);
ti = new TabItem("Page 2");
ti.setId("page2");
tabPanel.add(ti);
ti = new TabItem("Page 3");
tabPanel.add(ti);
ti.setId("page3");
tabPanel.addListener(Events.Select, new Listener<TabPanelEvent>() {
public void handleEvent(TabPanelEvent tabPanelEvent) {
History.newItem(tabPanel.getSelectedItem().getId());
}
});
History.addHistoryListener(new HistoryListener() {
public void onHistoryChanged(String historyToken) {
tabPanel.setSelection(tabPanel.getItemByItemId(historyToken));
}
});
RootPanel.get().add(tabPanel);
}

}

then I try to select tab items, for example page1->page2->page3. After that I press back button, for several times, but result is unexpected, in url I see
#page3->#page2->#page3->#page2->#page1->#page2->#page1
and I only in some times can move forward.

Please tell me, what did I do wrong, and how can I fix it?

Martin.Trummer
25 Mar 2009, 1:26 AM
I think you schould set breakpoints in the tab-selection listener to see when it is actually called and what the values of tabPanel.getSelectedItem() and tabPanelEvent.item are - this will show you the solution

Martin.Trummer
26 Mar 2009, 1:09 AM
upps, I mixed smth. up - thought you listen to BeforeSelected event
so please ignore my last comment