Subversion Repositories eFlore/Applications.coel

Rev

Rev 61 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package org.tela_botanica.client.composants;

/*
 * Ext GWT - Ext for GWT
 * Copyright(c) 2007, 2008, Ext JS, LLC.
 * licensing@extjs.com
 * 
 * http://extjs.com/license
 */
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.KeyListener;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.widget.Dialog;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.button.StatusButtonBar;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
import com.google.gwt.user.client.Timer;

public class IdentificationFenetre extends Dialog {

  protected StatusButtonBar buttonBar;
  protected TextField<String> userName;
  protected TextField<String> password;
  protected Button reset;
  protected Button login;

  public IdentificationFenetre() {
        FormLayout layout = new FormLayout();
    layout.setLabelWidth(90);
    layout.setDefaultWidth(155);
    setLayout(layout);

    setButtons("");
    setIconStyle("user");
    setHeading("Collections en ligne - Identification");
    setModal(true);
    setBodyBorder(true);
    setBodyStyle("padding: 10px;background: none");
    setWidth(300);
    setResizable(false);

    KeyListener keyListener = new KeyListener() {
      public void componentKeyUp(ComponentEvent event) {
        validate();
      }

    };

    userName = new TextField<String>();
    userName.setMinLength(4);
    userName.setFieldLabel("Courriel");
    userName.addKeyListener(keyListener);
    add(userName);

    password = new TextField<String>();
    password.setMinLength(4);
    password.setPassword(true);
    password.setFieldLabel("Mot de passe");
    password.addKeyListener(keyListener);
    add(password);

    setFocusWidget(userName);

    buttonBar = new StatusButtonBar();
    setButtonBar(buttonBar);

  }

  @Override
  protected void createButtons() {
    reset = new Button("Réinitialiser");
    reset.addSelectionListener(new SelectionListener<ButtonEvent>() {
      public void componentSelected(ButtonEvent ce) {
        userName.reset();
        password.reset();
        validate();
        userName.focus();
      }

    });

    login = new Button("Valider");
    //login.disable(); // Par défaut : dois être en mode disable
    login.addSelectionListener(new SelectionListener<ButtonEvent>() {
      public void componentSelected(ButtonEvent ce) {
        onSubmit();
      }
    });

    buttonBar.add(reset);
    buttonBar.add(login);
  }

  protected void onSubmit() {
    buttonBar.getStatusBar().showBusy("Chargement en cours ...");
    buttonBar.disable();
    Timer t = new Timer() {

      @Override
      public void run() {
        IdentificationFenetre.this.hide();
      }

    };
    t.schedule(2);// Par défaut : 2000
  }

  protected boolean hasValue(TextField<String> field) {
    return field.getValue() != null && field.getValue().length() > 0;
  }

  protected void validate() {
    login.setEnabled(hasValue(userName) && hasValue(password) && password.getValue().length() > 3);
  }

}