Java/GWT/History

Материал из Java эксперт
Перейти к: навигация, поиск

Deal with browser history

   <source lang="java">

package com.jexp.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));
 }

}


      </source>