Subversion Repositories eFlore/Applications.coel

Rev

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

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