Deal with browser history
package com.java2s.gwt.client; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.core.client.GWT; import com.google.gwt.user.client.Window; import com.google.gwt.user.client.ui.Button; import com.google.gwt.user.client.ui.ClickListener; import com.google.gwt.user.client.ui.Grid; import com.google.gwt.user.client.ui.Label; import com.google.gwt.user.client.ui.PasswordTextBox; import com.google.gwt.user.client.ui.RootPanel; import com.google.gwt.user.client.ui.TextBox; import com.google.gwt.user.client.ui.Widget; import com.google.gwt.user.client.ui.Hyperlink; import com.google.gwt.user.client.History; import com.google.gwt.user.client.HistoryListener; public class GWTClient implements EntryPoint,HistoryListener { private static final String LOGIN_STATE = "login"; private static final String WELCOME_STATE = "welcome"; public void onModuleLoad() { setupHistory(); } private void setupHistory() { History.addHistoryListener(this); History.onHistoryChanged(LOGIN_STATE); } public void onHistoryChanged(String historyToken) { if (LOGIN_STATE.equals(historyToken)) { loadLoginView(); } else if (WELCOME_STATE.equals(historyToken)) { loadWelcomeView(); } } private void loadLoginView() { final Label loginPrompt = new Label("login"); final Grid grid = new Grid(3, 2); final Label namePrompt = new Label("name"); final TextBox nameTextbox = new TextBox(); final Label passwordPrompt = new Label("password"); final PasswordTextBox passwordTextbox = new PasswordTextBox(); final Button button = new Button("Login"); button.addClickListener(new ClickListener() { public void onClick(Widget sender) { History.newItem(WELCOME_STATE); } }); loginPrompt.addStyleName("loginPrompt"); nameTextbox.addStyleName("nameField"); passwordTextbox.addStyleName("passwordField"); grid.setWidget(0, 0, namePrompt); grid.setWidget(0, 1, nameTextbox); grid.setWidget(1, 0, passwordPrompt); grid.setWidget(1, 1, passwordTextbox); grid.setWidget(2, 1, button); RootPanel.get().clear(); RootPanel.get().add(loginPrompt); RootPanel.get().add(grid); } private void loadWelcomeView() { final Label welcomeMsg = new Label("welcome"); welcomeMsg.addStyleName("welcomeMsg"); RootPanel.get().clear(); RootPanel.get().add(welcomeMsg); RootPanel.get().add(new Hyperlink("logoutLink",LOGIN_STATE)); } }