Subversion Repositories eFlore/Applications.coel

Rev

Rev 895 | Rev 1021 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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