Subversion Repositories eFlore/Applications.coel

Rev

Rev 845 | Rev 1015 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
60 jpm 1
package org.tela_botanica.client.composants;
2
 
358 jp_milcent 3
import org.tela_botanica.client.ComposantId;
61 jpm 4
import org.tela_botanica.client.Mediateur;
5
import org.tela_botanica.client.RegistreId;
516 jp_milcent 6
import org.tela_botanica.client.images.Images;
358 jp_milcent 7
import org.tela_botanica.client.interfaces.Rafraichissable;
8
import org.tela_botanica.client.modeles.Information;
9
import org.tela_botanica.client.modeles.Utilisateur;
61 jpm 10
 
11
import com.extjs.gxt.ui.client.Registry;
517 jp_milcent 12
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
60 jpm 13
import com.extjs.gxt.ui.client.event.ButtonEvent;
14
import com.extjs.gxt.ui.client.event.ComponentEvent;
15
import com.extjs.gxt.ui.client.event.KeyListener;
16
import com.extjs.gxt.ui.client.event.SelectionListener;
358 jp_milcent 17
import com.extjs.gxt.ui.client.util.Format;
18
import com.extjs.gxt.ui.client.util.Params;
60 jpm 19
import com.extjs.gxt.ui.client.widget.Dialog;
358 jp_milcent 20
import com.extjs.gxt.ui.client.widget.HtmlContainer;
498 jp_milcent 21
import com.extjs.gxt.ui.client.widget.Status;
60 jpm 22
import com.extjs.gxt.ui.client.widget.button.Button;
23
import com.extjs.gxt.ui.client.widget.form.TextField;
24
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
498 jp_milcent 25
import com.extjs.gxt.ui.client.widget.toolbar.FillToolItem;
358 jp_milcent 26
import com.google.gwt.core.client.GWT;
60 jpm 27
 
358 jp_milcent 28
public class IdentificationFenetre extends Dialog implements Rafraichissable {
60 jpm 29
 
66 jpm 30
	protected TextField<String> login;
31
	protected TextField<String> motDePasse;
32
	protected Button reinitialiserBouton;
33
	protected Button validerBouton;
358 jp_milcent 34
	private Button annulerBouton;
498 jp_milcent 35
	protected Status status;
358 jp_milcent 36
	private String zoneInfoTpl;
37
	private HtmlContainer zoneInfoHtml;
60 jpm 38
 
61 jpm 39
	public IdentificationFenetre() {
40
		FormLayout layout = new FormLayout();
358 jp_milcent 41
		layout.setLabelWidth(110);
42
		layout.setDefaultWidth(220);
61 jpm 43
		setLayout(layout);
60 jpm 44
 
517 jp_milcent 45
		setButtonAlign(HorizontalAlignment.RIGHT);
46
	    setButtons("");
516 jp_milcent 47
		setIcon(Images.ICONES.utilisateur());
61 jpm 48
		setHeading("Collections en ligne - Identification");
49
		setModal(true);
50
		setBodyBorder(true);
51
		setBodyStyle("padding: 10px;background: none");
358 jp_milcent 52
		setWidth(450);
61 jpm 53
		setResizable(false);
64 jpm 54
		setAutoWidth(false);
55
 
61 jpm 56
		KeyListener keyListener = new KeyListener() {
57
			public void componentKeyUp(ComponentEvent event) {
58
				validate();
59
			}
60 jpm 60
 
61 jpm 61
		};
60 jpm 62
 
358 jp_milcent 63
		zoneInfoHtml = new HtmlContainer();
64
		zoneInfoTpl = "<div id='"+ComposantId.DIV_IDENTIFICATION_MSG+"'>{0}</div>";
65
		//zoneInfoHtml.setHtml(Format.substitute(zoneInfoTpl, (new Params()).add("")));
66
		zoneInfoHtml.hide();
67
		add(zoneInfoHtml);
68
 
66 jpm 69
		login = new TextField<String>();
70
		login.setMinLength(4);
71
		login.setFieldLabel("Courriel");
72
		login.addKeyListener(keyListener);
73
		add(login);
60 jpm 74
 
66 jpm 75
		motDePasse = new TextField<String>();
76
		motDePasse.setMinLength(4);
77
		motDePasse.setPassword(true);
78
		motDePasse.setFieldLabel("Mot de passe");
79
		motDePasse.addKeyListener(keyListener);
80
		add(motDePasse);
60 jpm 81
 
66 jpm 82
		setFocusWidget(login);
61 jpm 83
	}
277 jp_milcent 84
 
61 jpm 85
	@Override
86
	protected void createButtons() {
498 jp_milcent 87
		super.createButtons();
88
	    status = new Status();
89
	    status.setBusy("Vérification...");
90
	    status.hide();
91
	    status.setAutoWidth(true);
92
	    getButtonBar().add(status);
93
 
94
	    getButtonBar().add(new FillToolItem());
95
 
66 jpm 96
		reinitialiserBouton = new Button("Réinitialiser");
97
		reinitialiserBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
61 jpm 98
			public void componentSelected(ButtonEvent ce) {
66 jpm 99
				login.reset();
100
				motDePasse.reset();
61 jpm 101
				validate();
66 jpm 102
				login.focus();
61 jpm 103
			}
60 jpm 104
 
61 jpm 105
		});
60 jpm 106
 
66 jpm 107
		validerBouton = new Button("Valider");
358 jp_milcent 108
		validerBouton.disable(); // Par défaut : dois être en mode disable
66 jpm 109
		validerBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
61 jpm 110
			public void componentSelected(ButtonEvent ce) {
111
				onSubmit();
112
			}
113
		});
358 jp_milcent 114
 
115
		annulerBouton = new Button("Annuler");
116
		annulerBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
117
			public void componentSelected(ButtonEvent ce) {
498 jp_milcent 118
				hide();
358 jp_milcent 119
			}
120
		});
121
 
517 jp_milcent 122
		addButton(reinitialiserBouton);
123
		addButton(annulerBouton);
124
		addButton(validerBouton);
61 jpm 125
	}
60 jpm 126
 
61 jpm 127
	protected void onSubmit() {
498 jp_milcent 128
		status.show();
129
	    getButtonBar().disable();
358 jp_milcent 130
		//IdentificationFenetre.this.hide();
131
		((Mediateur) Registry.get(RegistreId.MEDIATEUR)).connecterUtilisateur(login.getValue(), motDePasse.getValue());
61 jpm 132
	}
60 jpm 133
 
61 jpm 134
	protected boolean hasValue(TextField<String> field) {
135
		return field.getValue() != null && field.getValue().length() > 0;
136
	}
60 jpm 137
 
61 jpm 138
	protected void validate() {
66 jpm 139
		validerBouton.setEnabled(hasValue(login) && hasValue(motDePasse) && motDePasse.getValue().length() > 3);
61 jpm 140
	}
277 jp_milcent 141
 
845 gduche 142
	public void rafraichir(Object nouvellesDonnees) {
143
		if (nouvellesDonnees instanceof Information) {
144
			Information info = (Information) nouvellesDonnees;
358 jp_milcent 145
			if (info.getType().equals("maj_utilisateur")) {
146
				Utilisateur utilisateurCourant = ((Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT));
147
				if (utilisateurCourant.isIdentifie() == false) {
895 gduche 148
						if (utilisateurCourant.getLicence().equals(""))	{
149
							afficherErreur("Mauvais login ou mot de passe");
150
						} else	if (utilisateurCourant.getLicence().equals("0")){
151
							afficherErreur("vous devez accepter licence");
152
							((Mediateur) Registry.get(RegistreId.MEDIATEUR)).afficherFenetreLicence(this);
153
						}	else	{
154
							hide();
155
						}
358 jp_milcent 156
				} else {
895 gduche 157
					if (utilisateurCourant.existeDansAnnuaire())	{
158
						((Mediateur) Registry.get(RegistreId.MEDIATEUR)).mettreAJourPersonneAnnuaire(utilisateurCourant);
159
					}
358 jp_milcent 160
					hide();
161
				}
895 gduche 162
			}
358 jp_milcent 163
		} else {
845 gduche 164
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
358 jp_milcent 165
		}
166
 
167
	}
895 gduche 168
 
169
	public void afficherErreur(String erreur)	{
170
		status.hide();
171
		getButtonBar().enable();
172
		validate();
173
		zoneInfoHtml.setHtml(Format.substitute(zoneInfoTpl, (new Params()).add(erreur)));
174
		zoneInfoHtml.show();
175
		layout();
176
	}
358 jp_milcent 177
 
60 jpm 178
}