Package opus.gwt.management.console.client.deployer

Source Code of opus.gwt.management.console.client.deployer.ProjectOptionsPanel

/*############################################################################
# Copyright 2010 North Carolina State University                             #
#                                                                            #
#   Licensed under the Apache License, Version 2.0 (the "License");          #
#   you may not use this file except in compliance with the License.         #
#   You may obtain a copy of the License at                                  #
#                                                                            #
#       http://www.apache.org/licenses/LICENSE-2.0                           #
#                                                                            #
#   Unless required by applicable law or agreed to in writing, software      #
#   distributed under the License is distributed on an "AS IS" BASIS,        #
#   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
#   See the License for the specific language governing permissions and      #
#   limitations under the License.                                           #
############################################################################*/

package opus.gwt.management.console.client.deployer;

import opus.gwt.management.console.client.ClientFactory;
import opus.gwt.management.console.client.event.PanelTransitionEvent;
import opus.gwt.management.console.client.event.UpdateDBOptionsEvent;
import opus.gwt.management.console.client.event.UpdateDBOptionsEventHandler;
import opus.gwt.management.console.client.resources.ProjectDeployerCss.ProjectDeployerStyle;
import opus.gwt.management.console.client.tools.TooltipPanel;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.FocusEvent;
import com.google.gwt.event.dom.client.KeyUpEvent;
import com.google.gwt.event.shared.EventBus;
import com.google.gwt.http.client.URL;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.PasswordTextBox;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;

public class ProjectOptionsPanel extends Composite {

  private static BuildProjectPage2UiBinder uiBinder = GWT.create(BuildProjectPage2UiBinder.class);
  interface BuildProjectPage2UiBinder extends UiBinder<Widget, ProjectOptionsPanel> {}
 
  private EventBus eventBus;
 
  @UiField TextBox usernameTextBox;
  @UiField TextBox emailTextBox;
  @UiField PasswordTextBox passwordTextBox;
  @UiField PasswordTextBox passwordConfirmTextBox;
  @UiField Button nextButton;
  @UiField Button previousButton;
  @UiField HTMLPanel projectOptionsPanel;
  @UiField ListBox idProvider;
  @UiField TooltipPanel active;
  @UiField ProjectDeployerStyle deployer;
  @UiField Label passwordError;
  @UiField Label emailError;
 
  public ProjectOptionsPanel(ClientFactory clientFactory) {
    initWidget(uiBinder.createAndBindUi(this));
    this.eventBus = clientFactory.getEventBus();
    setTooltipInitialState();
    registerHandlers();
    passwordError.setText("");
    emailError.setText("");
  }
 
  private void registerHandlers(){
    eventBus.addHandler(UpdateDBOptionsEvent.TYPE,
        new UpdateDBOptionsEventHandler(){
          public void onUpdateDBOptions(UpdateDBOptionsEvent event){
            setAllowedAuthApps(event.getDBOptionsData().getAllowedAuthApps());
          }
    });
  }
 
  public void reset(){
    usernameTextBox.setText("");
    emailTextBox.setText("");
    passwordTextBox.setText("");
    passwordConfirmTextBox.setText("");
  }
 
  public void setAllowedAuthApps(String allowedAuthApps){
    int size = idProvider.getItemCount();
    for(int i=0; i < size; i++){
      idProvider.removeItem(0);
    }
    String[] options = allowedAuthApps.split(",");
    for(String option : options){
      idProvider.addItem(option, option);
    }
  }
 
  @UiHandler("usernameTextBox")
  void usernameTextBoxOnFocus(FocusEvent event) {
    active.setVisible(true);
   
    int x = getTooltipPosition(usernameTextBox)[0];
    int y = getTooltipPosition(usernameTextBox)[1];
     
    active.setGray();
    setTooltipPosition(x, y);
    setTooltipText("Optional Field. Enter username if you wish to create a superuser.");
  }
 
  @UiHandler("passwordTextBox")
  void passwordTextBoxOnFocus(FocusEvent event) {
    if(!passwordTextBox.getStyleName().equals(deployer.redBorder())) {
      active.setVisible(true);
     
      int x = getTooltipPosition(passwordTextBox)[0];
      int y = getTooltipPosition(passwordTextBox)[1];
     
      active.setGray();
      setTooltipPosition(x, y);
      setTooltipText("Must be entered if your wish to create a superuser.");
    }
  }
 
  @UiHandler("passwordConfirmTextBox")
  void passwordConfirmTextBoxOnFocus(FocusEvent event) {
    if(!passwordTextBox.getStyleName().equals(deployer.redBorder())) {
      active.setVisible(true);
 
      int x = getTooltipPosition(passwordConfirmTextBox)[0];
      int y = getTooltipPosition(passwordConfirmTextBox)[1];
     
      active.setGray();
      setTooltipPosition(x, y);
      setTooltipText("Confirm the previous password.");
    }
  }
 
  @UiHandler("emailTextBox")
  void emailTextBoxOnFocus(FocusEvent event) {
    if(!emailTextBox.getStyleName().equals(deployer.redBorder())) {
      active.setVisible(true);
     
      int x = getTooltipPosition(emailTextBox)[0];
      int y = getTooltipPosition(emailTextBox)[1];
     
      active.setGray();
      setTooltipPosition(x, y);
      setTooltipText("Enter your email address.");
    }
  }
 
  @UiHandler("usernameTextBox")
  void usernameTextBoxOnChange(KeyUpEvent event) {
    if(!usernameTextBox.getText().isEmpty() && !isEmailValid()
        && !isPasswordValid()) {
      setAllStyles();
      passwordError.setText("Passwords do not match");
      emailError.setText("Enter a valid email address");
    } else {
      removeAllStyles();
      passwordError.setText("");
      emailError.setText("");
    }
  }
 
  @UiHandler("passwordTextBox")
  void passwordTextBoxOnChange(KeyUpEvent event) {
    if(!usernameTextBox.getText().isEmpty()) {
      if(!isPasswordValid()) {
        active.hide();
        passwordError.setText("Passwords do not match");
        passwordTextBox.setStyleName(deployer.redBorder());
        passwordConfirmTextBox.setStyleName(deployer.redBorder());
      } else {
        passwordError.setText("");
        passwordTextBox.setStyleName(deployer.greyBorder());
        passwordConfirmTextBox.setStyleName(deployer.greyBorder());
      }
    } else {
     
    }
  }
 
  @UiHandler("passwordConfirmTextBox")
  void passwordConfirmTextBoxOnChange(KeyUpEvent event) {
    if(!usernameTextBox.getText().isEmpty()) {
      if(!isPasswordValid()) {
        active.hide();
        passwordError.setText("Passwords do not match");
        passwordTextBox.setStyleName(deployer.redBorder());
        passwordConfirmTextBox.setStyleName(deployer.redBorder());
      } else {
        passwordError.setText("");
        passwordTextBox.setStyleName(deployer.greyBorder());
        passwordConfirmTextBox.setStyleName(deployer.greyBorder());
      }
    } else {
     
    }
  }
 
  @UiHandler("emailTextBox")
  void emailTextBoxOnChange(KeyUpEvent event) {
    if(!usernameTextBox.getText().isEmpty()) {
      if(!isEmailValid()) {
        active.hide();
        emailError.setText("Enter a valid email address");
        emailTextBox.setStyleName(deployer.redBorder());
      } else {
        emailError.setText("");
        emailTextBox.setStyleName(deployer.greyBorder());
      }
    } else {
     
    }
  }
 
  @UiHandler("nextButton")
  void handleNextButton(ClickEvent event){
    if( validateFields() ){
      eventBus.fireEvent(new PanelTransitionEvent(PanelTransitionEvent.TransitionTypes.NEXT, this));
    } else {
      Window.alert("Validation error");
    }
  }
 
  @UiHandler("previousButton")
  void handlePreviousButton(ClickEvent event){
    eventBus.fireEvent(new PanelTransitionEvent(PanelTransitionEvent.TransitionTypes.PREVIOUS, this));
  }
 
  public void setFocus(){
    usernameTextBox.setFocus(true);
  }
 
  public String getPostData(){
    StringBuffer postData = new StringBuffer();
    postData.append("&superusername=");
    postData.append( URL.encodeQueryString(usernameTextBox.getValue()));
    postData.append("&superpassword=");
    postData.append( URL.encodeQueryString(passwordTextBox.getValue()));
    postData.append("&superpasswordconfirm=");
    postData.append( URL.encodeQueryString(passwordConfirmTextBox.getValue()));
    postData.append("&superemail=");
    postData.append( URL.encodeQueryString(emailTextBox.getValue()));
    postData.append("&idprovider=");
    postData.append( URL.encodeQueryString(idProvider.getValue(idProvider.getSelectedIndex())));
    return postData.toString();
  }
 
  public boolean validateFields(){
    if( !usernameTextBox.getText().isEmpty() ) {
      if( passwordTextBox.getText().isEmpty() ) {
        return false;
      } else if( !passwordTextBox.getText().equals(passwordConfirmTextBox.getText()) ) {
        return false;
      } else if( !isEmailValid() ) {
        return false;
      }
    }
    return true;
  }
 
  private void setAllStyles() {
    passwordTextBox.setStyleName(deployer.redBorder());
    passwordConfirmTextBox.setStyleName(deployer.redBorder());
    emailTextBox.setStyleName(deployer.redBorder());
  }
 
  private void removeAllStyles() {
    passwordTextBox.setStyleName(deployer.greyBorder());
    passwordConfirmTextBox.setStyleName(deployer.greyBorder());
    emailTextBox.setStyleName(deployer.greyBorder());
  }
 
  private boolean isEmailValid() {
    if(emailTextBox.getText().isEmpty()) {
      return false;
    } else if(!emailTextBox.getText().matches("[^@]+@[^@]+\\.\\w+")) {
      return false;
    }
   
    return true;
  }
 
  private boolean isPasswordValid() {
    if(passwordTextBox.getText().isEmpty()) {
      return false;
    } else if(!passwordTextBox.getText().equals(passwordConfirmTextBox.getText())) {
      return false;
    }
   
    return true;
  }
 
  /**
   * Set the tooltips initial state on page load
   */
  private void setTooltipInitialState() {
    active.setVisible(false);
  }
 
  /**
   * Set the position of a tooltip relative to the browser window
   * @param x the x coordinate
   * @param y the y coordinate
   */
  private void setTooltipPosition(int x, int y) {
    active.setPopupPosition(x, y);
  }
 
  /**
   * Set the text of a tooltip
   * @param text the text to set
   */
  private void setTooltipText(String text) {
    active.hide();
    active.setText(text);
    active.show();
  }
 
  /**
   * Return the tooltip position as an array in for them [x, y]
   * @param textbox the textbox to get the position of
   * @return tooltip position
   */
  private int[] getTooltipPosition(TextBox textbox) {
    int[] pos = new int[2];
   
    pos[0] = textbox.getAbsoluteLeft() + textbox.getOffsetWidth() + 5;
    pos[1] = textbox.getAbsoluteTop() + 2;
   
    return pos;
  }
 
  /**
   * Return the tooltip position as an array in for them [x, y]
   * @param textbox the textbox to get the position of
   * @return tooltip position
   */
  private int[] getTooltipPosition(PasswordTextBox textbox) {
    int[] pos = new int[2];
   
    pos[0] = textbox.getAbsoluteLeft() + textbox.getOffsetWidth() + 5;
    pos[1] = textbox.getAbsoluteTop() + 2;
 
    return pos;
  }
}
TOP

Related Classes of opus.gwt.management.console.client.deployer.ProjectOptionsPanel

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.