Subversion Repositories eFlore/Applications.coel

Rev

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

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