Subversion Repositories eFlore/Archives.cel-v1

Rev

Rev 23 | Blame | Compare with Previous | Last modification | View Log | RSS feed

/**
 David Delon david.delon@clapas.net 2007
 
 
 */

/*
 * LoginDialog.java  (DialogBox)
 * 
 * Cas d'utilisation :
 * Dialogue de validation de l'identification utilisateur
 * 
 * 1 : L'utilisateur saisit son identifiant (e-mail) et son mot de passe
 * 2 : Le dialogue controle aupres du systeme distant la validite des informations saisies 
 * 3 : Le dialogue transmet au systeme local les informations d'identification
 *              3a : Le dialogue informe l'utilisateur que les elements d'identification ne sont pas valide : retour au point 1, ou passe au point 4.
 * 4 : Cloture du dialogue
 * 5 : Appel du dialogue d'importation
 */

package org.tela_botanica.client;


import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONBoolean;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONValue;
import com.google.gwt.user.client.HTTPRequest;
import com.google.gwt.user.client.ResponseTextHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.KeyboardListener;
import com.google.gwt.user.client.ui.PasswordTextBox;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;

public class LoginDialog extends DialogBox {


  private Mediator mediator=null;
  private TextBox login = new TextBox();
  private PasswordTextBox  password = new PasswordTextBox();
  private Grid inner = new Grid(4,2);
  
        
  public LoginDialog(final Mediator med) {
          
    setText("Connexion");

    mediator=med;

    VerticalPanel outer = new VerticalPanel();

/*
 *  E-Mail : Zone_saisie_email 
 *  Mot-de-passe : Zone_saisie_mot_de_passe
 *  Message d'information
 *  Bouton_Ok   Bouton_Annuler
 */ 
    
    
    
// Validation bouton
    
        HTML okButton=new HTML("Ok");
        okButton.setStyleName("html_button");
        okButton.addClickListener(
                new ClickListener() {
                        public void onClick(Widget sender) {
                                        loginFromService();
                        }
                }
        );              

        
// Annulation
        
        HTML cancelButton=new HTML("Annuler");
        cancelButton.setStyleName("html_button");
        cancelButton.addClickListener(
                new ClickListener() {
                        public void onClick(Widget sender) {
                                                hide();
                        }
                }
        );              

//Validation utilisateur sans utilisation des boutons : 

        
  login.addKeyboardListener( new KeyboardListener() {

                  public void onKeyDown(Widget arg0, char arg1, int arg2) {
                          if(arg1 == KEY_ENTER)
                            {
                                  loginFromService();
                            }
                  }
                  
                  public void onKeyUp(Widget arg0, char arg1, int arg2) { }
                  public void onKeyPress(Widget arg0, char arg1, int arg2) { }
                  
                  }
  );
        

// Validation utilisateur sans utilisation des boutons : 
  
  password.addKeyboardListener( new KeyboardListener() {

                  public void onKeyDown(Widget arg0, char arg1, int arg2) {
                          
                          if(arg1 == KEY_ENTER)
                            {
                                  loginFromService();
                            }
                  }
                  
                  public void onKeyUp(Widget arg0, char arg1, int arg2) { }
                  public void onKeyPress(Widget arg0, char arg1, int arg2) { }
                  
                  }
  );

          
     inner.setHTML(0,0,"E-mail:");
         inner.setWidget(0,1,login);
         inner.setHTML(1,0,"Mot de passe:           ");
         inner.setWidget(1,1,password);
         inner.setWidget(3,0,okButton);
         inner.setWidget(3,1,cancelButton);
         
         inner.setCellPadding(10);
     outer.add(inner);
         setWidget(outer);
            
  }
  
  

  /**
   * Appel du service d'identification et positionnement de l'etat de connection en fonction du resultat.
   * 
   * @param login : identifiant saisi
   * @param password : mot de passe saisi
   * 
   */
  
        private void loginFromService() {
                
                final String login=this.login.getText();
                String password=this.password.getText();

                HTTPRequest.asyncGet(mediator.getServiceBaseUrl() + "/User/" + login + "/" + password ,
                                new ResponseTextHandler() {

                                        public void onCompletion(String str) {
                        
                                                JSONValue jsonValue = JSONParser.parse(str);
                                                JSONArray jsonArray;
                                                if ((jsonArray = jsonValue.isArray()) != null) {
                                                                mediator.setConnected(((JSONBoolean) jsonArray.get(1)).booleanValue());
                                                }
                                                 
                                                if (mediator.getConnected()) {
                                                        mediator.setUser(login);
                                                        hide();
                                                        ImportDialog importDialog = new ImportDialog(mediator);

                                                // Position it roughly in the middle of the screen.
                                                int left = (Window.getClientWidth() - 512) / 2;
                                                int top = (Window.getClientHeight() - 256) / 2;
                                                importDialog.setPopupPosition(left, top);
                                                importDialog.show();
                                                }
                                                else {
                                                        inner.setHTML(2,0,"Identification incorrecte !");
                                                }
                                        }
                                });

        }
  
  
          
        
        
  public boolean onKeyDownPreview(char key, int modifiers) {
            // Use the popup's key preview hooks to close the dialog when either
            //  escape is pressed.
            switch (key) {
              case KeyboardListener.KEY_ESCAPE:
                hide();
                break;
            }

            return true;
  }

  

}

/* +--Fin du code ---------------------------------------------------------------------------------------+
* $Log$
* Revision 1.9  2007-05-21 21:03:44  ddelon
* nettoyage de code
*
* Revision 1.8  2007-05-21 18:14:06  ddelon
* Gestion importation releve locaux
*
* Revision 1.7  2007-05-21 11:47:30  ddelon
* meta cvs
*
* Revision 1.6  2007-05-21 11:39:48  ddelon
* meta cvs
*
* Revision 1.5  2007-05-21 11:39:12  ddelon
* meta cvs
*
* Revision 1.4  2007-05-21 11:37:35  ddelon
* meta cvs
*
* Revision 1.3  2007-05-21 11:36:51  ddelon
* meta cvs
* 
*/