Subversion Repositories eFlore/Applications.coel

Rev

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

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