Rev 1680 | 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.i18n.Constantes;import org.tela_botanica.client.images.Images;import org.tela_botanica.client.interfaces.Rafraichissable;import org.tela_botanica.client.modeles.Information;import org.tela_botanica.client.modeles.Utilisateur;import org.tela_botanica.client.util.Debug;import com.extjs.gxt.ui.client.Registry;import com.extjs.gxt.ui.client.Style.HorizontalAlignment;import com.extjs.gxt.ui.client.event.ButtonEvent;import com.extjs.gxt.ui.client.event.ComponentEvent;import com.extjs.gxt.ui.client.event.Events;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.Status;import com.extjs.gxt.ui.client.widget.button.Button;import com.extjs.gxt.ui.client.widget.form.TextField;import com.extjs.gxt.ui.client.widget.layout.FormLayout;import com.extjs.gxt.ui.client.widget.toolbar.FillToolItem;import com.google.gwt.event.dom.client.KeyCodes;public class IdentificationFenetre extends Dialog implements Rafraichissable {private Mediateur mediateur = null;private Constantes i18nC = null;protected TextField<String> login = null;protected TextField<String> motDePasse = null;protected Button validerBouton = null;private Button annulerBouton = null;protected Status status = null;private String zoneInfoTpl = null;private HtmlContainer zoneInfoHtml = null;public IdentificationFenetre(Mediateur mediateurCourrant) {mediateur = mediateurCourrant;i18nC = Mediateur.i18nC;initialiserSquelettes();FormLayout layout = new FormLayout();layout.setLabelWidth(110);layout.setDefaultWidth(220);setLayout(layout);setButtonAlign(HorizontalAlignment.RIGHT);setButtons("");setIcon(Images.ICONES.utilisateur());setHeadingHtml(Registry.get(RegistreId.APPLI_NOM)+" - "+i18nC.identificationTitre());setModal(true);setBodyBorder(true);setBodyStyle("padding: 10px;background: none");setWidth(450);setResizable(false);setAutoWidth(false);KeyListener keyListener = new KeyListener() {public void componentKeyUp(ComponentEvent event) {valider();}@SuppressWarnings("unchecked")public void componentKeyPress(ComponentEvent evenement) {if (evenement.getKeyCode() == KeyCodes.KEY_ENTER) {TextField<String> champ = (TextField<String>) evenement.getSource();if (champ.getFieldLabel().equals(i18nC.motDePasse())) {validerBouton.fireEvent(Events.Select);}}}};zoneInfoHtml = new HtmlContainer();zoneInfoHtml.hide();add(zoneInfoHtml);login = new TextField<String>();login.setMinLength(4);login.setFieldLabel(i18nC.login());login.addKeyListener(keyListener);add(login);motDePasse = new TextField<String>();motDePasse.setMinLength(4);motDePasse.setPassword(true);motDePasse.setFieldLabel(i18nC.motDePasse());motDePasse.addKeyListener(keyListener);add(motDePasse);setFocusWidget(login);}private void initialiserSquelettes() {zoneInfoTpl = "<div id='"+ComposantId.DIV_IDENTIFICATION_MSG+"'>{0}</div>";}@Overrideprotected void createButtons() {super.createButtons();// FIXME : l'instanciation dans le constructeur ne marche pas pour cette méthode...i18nC = Mediateur.i18nC;status = new Status();status.setBusy(i18nC.identificationVerification());status.hide();status.setAutoWidth(true);getButtonBar().add(status);getButtonBar().add(new FillToolItem());validerBouton = new Button(i18nC.valider());validerBouton.disable(); // Par défaut : dois être en mode disablevaliderBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {public void componentSelected(ButtonEvent ce) {onSubmit();}});annulerBouton = new Button(i18nC.annuler());annulerBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {public void componentSelected(ButtonEvent ce) {hide();}});addButton(annulerBouton);addButton(validerBouton);}protected void onSubmit() {status.show();getButtonBar().disable();mediateur.connecterUtilisateur(login.getValue(), motDePasse.getValue());}protected boolean avoirValeur(TextField<String> field) {return field.getValue() != null && field.getValue().length() > 0;}protected void valider() {validerBouton.setEnabled(avoirValeur(login) && avoirValeur(motDePasse) && motDePasse.getValue().length() > 3);}public void rafraichir(Object nouvellesDonnees) {if (nouvellesDonnees instanceof Information) {Information info = (Information) nouvellesDonnees;if (info.getType().equals("maj_utilisateur")) {Utilisateur utilisateurCourant = mediateur.getUtilisateur();if (!utilisateurCourant.isIdentifie() || !utilisateurCourant.avoirLicenceAcceptee()) {// Licence n'a jamais été acceptéeif (utilisateurCourant.getLicence().equals("")) {afficherErreur(i18nC.identificationMauvaise());// NON à la licence} else if (utilisateurCourant.getLicence().equals("0")){afficherErreur(i18nC.licenceAccepter());mediateur.afficherFenetreLicence(this);// Cas inconnu} else {hide();}} else {hide();}}} else {Debug.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()));}}public void afficherErreur(String erreur) {status.hide();getButtonBar().enable();valider();zoneInfoHtml.setHtml(Format.substitute(zoneInfoTpl, (new Params()).add(erreur)));zoneInfoHtml.show();layout();}}