Rev 358 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client.composants;import org.tela_botanica.client.ComposantId;import org.tela_botanica.client.Mediateur;import org.tela_botanica.client.RegistreId;import org.tela_botanica.client.interfaces.Rafraichissable;import org.tela_botanica.client.modeles.Information;import org.tela_botanica.client.modeles.Utilisateur;import com.extjs.gxt.ui.client.Registry;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.util.Format;import com.extjs.gxt.ui.client.util.Params;import com.extjs.gxt.ui.client.widget.Dialog;import com.extjs.gxt.ui.client.widget.HtmlContainer;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.core.client.GWT;public class IdentificationFenetre extends Dialog implements Rafraichissable {protected StatusButtonBar barreDeBoutons;protected TextField<String> login;protected TextField<String> motDePasse;protected Button reinitialiserBouton;protected Button validerBouton;private Button annulerBouton;private String zoneInfoTpl;private HtmlContainer zoneInfoHtml;public IdentificationFenetre() {FormLayout layout = new FormLayout();layout.setLabelWidth(110);layout.setDefaultWidth(220);setLayout(layout);setButtons("");setIconStyle("icone-utilisateur");setHeading("Collections en ligne - Identification");setModal(true);setBodyBorder(true);setBodyStyle("padding: 10px;background: none");setWidth(450);setResizable(false);setAutoWidth(false);KeyListener keyListener = new KeyListener() {public void componentKeyUp(ComponentEvent event) {validate();}};zoneInfoHtml = new HtmlContainer();zoneInfoTpl = "<div id='"+ComposantId.DIV_IDENTIFICATION_MSG+"'>{0}</div>";//zoneInfoHtml.setHtml(Format.substitute(zoneInfoTpl, (new Params()).add("")));zoneInfoHtml.hide();add(zoneInfoHtml);login = new TextField<String>();login.setMinLength(4);login.setFieldLabel("Courriel");login.addKeyListener(keyListener);add(login);motDePasse = new TextField<String>();motDePasse.setMinLength(4);motDePasse.setPassword(true);motDePasse.setFieldLabel("Mot de passe");motDePasse.addKeyListener(keyListener);add(motDePasse);setFocusWidget(login);barreDeBoutons = new StatusButtonBar();setButtonBar(barreDeBoutons);}@Overrideprotected void createButtons() {reinitialiserBouton = new Button("Réinitialiser");reinitialiserBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {public void componentSelected(ButtonEvent ce) {login.reset();motDePasse.reset();validate();login.focus();}});validerBouton = new Button("Valider");validerBouton.disable(); // Par défaut : dois être en mode disablevaliderBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {public void componentSelected(ButtonEvent ce) {onSubmit();}});annulerBouton = new Button("Annuler");annulerBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {public void componentSelected(ButtonEvent ce) {close();}});barreDeBoutons.add(reinitialiserBouton);barreDeBoutons.add(annulerBouton);barreDeBoutons.add(validerBouton);}protected void onSubmit() {barreDeBoutons.getStatusBar().showBusy("Vérification...");barreDeBoutons.disable();//IdentificationFenetre.this.hide();((Mediateur) Registry.get(RegistreId.MEDIATEUR)).connecterUtilisateur(login.getValue(), motDePasse.getValue());}protected boolean hasValue(TextField<String> field) {return field.getValue() != null && field.getValue().length() > 0;}protected void validate() {validerBouton.setEnabled(hasValue(login) && hasValue(motDePasse) && motDePasse.getValue().length() > 3);}public void rafraichir(Object nouvelleDonnees) {if (nouvelleDonnees instanceof Information) {Information info = (Information) nouvelleDonnees;if (info.getType().equals("maj_utilisateur")) {Utilisateur utilisateurCourant = ((Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT));if (utilisateurCourant.isIdentifie() == false) {barreDeBoutons.getStatusBar().clear();barreDeBoutons.enable();validate();zoneInfoHtml.setHtml(Format.substitute(zoneInfoTpl, (new Params()).add("Mauvais login ou mot de passe")));zoneInfoHtml.show();layout();} else {hide();}}} else {GWT.log("Ce type d'objet n'est pas pris en compte par la méthode rafraichir de la classe "+getClass(), null);}}}