Package net.sf.gilead.sample.client

Source Code of net.sf.gilead.sample.client.Sample

package net.sf.gilead.sample.client;

import java.util.Date;

import net.sf.gilead.sample.client.remote.UserRemote;
import net.sf.gilead.sample.domain.Message;
import net.sf.gilead.sample.domain.User;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;

/**
* Entry point classes define <code>onModuleLoad()</code>.
*/
public class Sample implements EntryPoint
{
  //----
  // Attributes
  //-----
  /**
   * The current user
   */
  private User user;
 
  /**
   * New message text box
   */
  private TextBox newMessageTextBox;

  /**
   * Post new message button
   */
  private Button addMessageButton;
 
  /**
   * Current user login
   */
  private TextBox loginTextBox;
 
  /**
   * Current user first name
   */
  private TextBox firstNameTextBox;
 
  /**
   * Current user last name
   */
  private TextBox lastNameTextBox;
 
  /**
   * Current user password
   */
  private TextBox passwordTextBox;
 
  /**
   * The user associated message list box
   */
  private ListBox messagesListBox;
 
  /**
   * Simple load user button
   */
  private Button loadUserButton;
 
  /**
   * Load user and messages button
   */
  private Button loadUserAndMessagesButton;
 
  /**
   * Save user button
   */
  private Button saveUserButton;
 
  //----
  // Properties
  //----
  public User getUser() {
    return user;
  }

  public void setUser(User user) {
    this.user = user;
  }

  //-------------------------------------------------------------------------
  //
  // Public interface
  //
  //-------------------------------------------------------------------------
  /**
   * Module entry point.
   * Used to make graphic initialization
   */
  public void onModuleLoad() {
    RootPanel rootPanel = RootPanel.get();

    final VerticalPanel verticalPanel = new VerticalPanel();
    rootPanel.add(verticalPanel, 0, 0);
    verticalPanel.setSize("100%", "100%");

    final Label gileadSampleApplicationLabel = new Label("Gilead sample application");
    gileadSampleApplicationLabel.setStyleName("title");
    verticalPanel.add(gileadSampleApplicationLabel);

    final Grid grid = new Grid();
    verticalPanel.add(grid);
    grid.resize(6, 3);

    final Label loginLabel = new Label("Login");
    grid.setWidget(0, 0, loginLabel);

    final Label firstNameLabel = new Label("First Name");
    grid.setWidget(1, 0, firstNameLabel);

    final Label lastNameLabel = new Label("Last Name");
    grid.setWidget(2, 0, lastNameLabel);

    final Label passwordLabel = new Label("Password");
    grid.setWidget(3, 0, passwordLabel);

    final Label messagesLabel = new Label("Messages");
    grid.setWidget(4, 0, messagesLabel);

    final Label newMessageLabel = new Label("New message");
    grid.setWidget(5, 0, newMessageLabel);

    loginTextBox = new TextBox();
    grid.setWidget(0, 1, loginTextBox);
    loginTextBox.setWidth("150px");
    loginTextBox.setTitle("This field will never get updated when back on server.");

    firstNameTextBox = new TextBox();
    grid.setWidget(1, 1, firstNameTextBox);
    firstNameTextBox.setWidth("100%");

    lastNameTextBox = new TextBox();
    grid.setWidget(2, 1, lastNameTextBox);
    lastNameTextBox.setWidth("100%");

    passwordTextBox = new TextBox();
    grid.setWidget(3, 1, passwordTextBox);
    passwordTextBox.setWidth("100%");
    passwordTextBox.setTitle("This field will never get filled.");

    newMessageTextBox = new TextBox();
    grid.setWidget(5, 1, newMessageTextBox);
    newMessageTextBox.setWidth("100%");

    addMessageButton = new Button();
    grid.setWidget(5, 2, addMessageButton);
    addMessageButton.setText("Add");
    addMessageButton.addClickHandler(new ClickHandler(){
      public void onClick(ClickEvent event)
      {
        addMessage();
      }
    });

    final Label serverOnlyLabel = new Label("@ServerOnly");
    serverOnlyLabel.setStyleName("comment");
    grid.setWidget(3, 2, serverOnlyLabel);

    final Label readOnlyLabel = new Label("@ReadOnly");
    readOnlyLabel.setStyleName("comment");
    grid.setWidget(0, 2, readOnlyLabel);

    messagesListBox = new ListBox();
    grid.setWidget(4, 1, messagesListBox);
    messagesListBox.setVisibleItemCount(5);
    messagesListBox.setWidth("100%");

    final HorizontalPanel horizontalPanel = new HorizontalPanel();
    verticalPanel.add(horizontalPanel);
    horizontalPanel.setWidth("100%");
    horizontalPanel.setSpacing(1);

    loadUserButton = new Button();
    horizontalPanel.add(loadUserButton);
    loadUserButton.setText("Load user without messages");
    loadUserButton.addClickHandler(new ClickHandler() {
      public void onClick(ClickEvent event) {
        loadUser();
      }
    });

    loadUserAndMessagesButton = new Button();
    horizontalPanel.add(loadUserAndMessagesButton);
    loadUserAndMessagesButton.setText("Load user and messages");
    loadUserAndMessagesButton.addClickHandler(new ClickHandler(){
      public void onClick(ClickEvent event) {
        loadUserWithMessages();
      }
    });
   

    saveUserButton = new Button();
    horizontalPanel.add(saveUserButton);
    saveUserButton.setText("Save User");
    saveUserButton.addClickHandler(new ClickHandler(){
      public void onClick(ClickEvent event) {
        saveUser();
      }
    });
  }
 
 
  //-------------------------------------------------------------------------
  //
  // Internal methods
  //
  //-------------------------------------------------------------------------
  /**
   * Load user without messages
   */
  private void loadUser()
  {
    UserRemote.Util.getInstance().loadUserByLogin("test", new AsyncCallback<User>(){

      @Override
      public void onFailure(Throwable caught)
      {
        Window.alert(caught.getMessage());
      }

      @Override
      public void onSuccess(User result)
      {
        setUser(result);
        updateDisplay();
      }
     
    });
  }
 
  /**
   * Load user with messages
   */
  private void loadUserWithMessages()
  {
    UserRemote.Util.getInstance().loadUserAndMessagesByLogin("test", new AsyncCallback<User>(){

      @Override
      public void onFailure(Throwable caught)
      {
        Window.alert(caught.getMessage());
      }

      @Override
      public void onSuccess(User result)
      {
        setUser(result);
        updateDisplay();
      }
    });
  }
 
  /**
   * Save user
   */
  private void saveUser()
  {
  //  Precondition checking
  //
    if (user == null)
    {
      return;
    }
  //  Update bean from text fields
  //
    updateUser();
   
    UserRemote.Util.getInstance().saveUser(user, new AsyncCallback<User>(){

      @Override
      public void onFailure(Throwable caught)
      {
        Window.alert(caught.getMessage());
      }

      @Override
      public void onSuccess(User result)
      {
        setUser(result);
        updateDisplay();
       
        Window.alert("User has been saved");
      }
     
    });
  }
 
  private void addMessage()
  {
  //  Precondition checking
  //
    if ((user == null) ||
      (newMessageTextBox.getText() == null))
    {
      return;
    }
   
  //  Create new message
  //
    Message message = new Message();
    message.setAuthor(user);
    message.setDate(new Date());
    message.setMessage(newMessageTextBox.getText());
    user.addMessage(message);
   
    newMessageTextBox.setText(null);
   
  //  Update display
  //
    updateDisplay();
  }
 
  /**
   * Update the underlying user from text fields values
   */
  private void updateUser()
  {
    user.setFirstName(firstNameTextBox.getText());
    user.setLastName(lastNameTextBox.getText());
    user.setLogin(loginTextBox.getText());
    user.setPassword(passwordTextBox.getText());
  }
 
  /**
   * Update display from the current associated user
   */
  private void updateDisplay()
  {
    firstNameTextBox.setText(user.getFirstName());
    lastNameTextBox.setText(user.getLastName());
    loginTextBox.setText(user.getLogin());
    passwordTextBox.setText(user.getPassword());
   
  //  Display messages
  //
    messagesListBox.clear();
    if (user.getMessageList() != null)
    {
      for(Message message : user.getMessageList())
      {
        messagesListBox.addItem(message.getMessage());
      }
    }
  }
}
TOP

Related Classes of net.sf.gilead.sample.client.Sample

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.