Subversion Repositories eFlore/Applications.coel

Rev

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

Rev 517 Rev 845
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.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.Registry;
11
import com.extjs.gxt.ui.client.Registry;
12
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
12
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
13
import com.extjs.gxt.ui.client.event.ButtonEvent;
13
import com.extjs.gxt.ui.client.event.ButtonEvent;
14
import com.extjs.gxt.ui.client.event.ComponentEvent;
14
import com.extjs.gxt.ui.client.event.ComponentEvent;
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
 
27
 
28
public class IdentificationFenetre extends Dialog implements Rafraichissable {
28
public class IdentificationFenetre extends Dialog implements Rafraichissable {
29
 
29
 
30
	protected TextField<String> login;
30
	protected TextField<String> login;
31
	protected TextField<String> motDePasse;
31
	protected TextField<String> motDePasse;
32
	protected Button reinitialiserBouton;
32
	protected Button reinitialiserBouton;
33
	protected Button validerBouton;
33
	protected Button validerBouton;
34
	private Button annulerBouton;
34
	private Button annulerBouton;
35
	protected Status status;
35
	protected Status status;
36
	private String zoneInfoTpl;
36
	private String zoneInfoTpl;
37
	private HtmlContainer zoneInfoHtml;
37
	private HtmlContainer zoneInfoHtml;
38
 
38
 
39
	public IdentificationFenetre() {
39
	public IdentificationFenetre() {
40
		FormLayout layout = new FormLayout();
40
		FormLayout layout = new FormLayout();
41
		layout.setLabelWidth(110);
41
		layout.setLabelWidth(110);
42
		layout.setDefaultWidth(220);
42
		layout.setDefaultWidth(220);
43
		setLayout(layout);
43
		setLayout(layout);
44
 
44
 
45
		setButtonAlign(HorizontalAlignment.RIGHT);
45
		setButtonAlign(HorizontalAlignment.RIGHT);
46
	    setButtons("");
46
	    setButtons("");
47
		setIcon(Images.ICONES.utilisateur());
47
		setIcon(Images.ICONES.utilisateur());
48
		setHeading("Collections en ligne - Identification");
48
		setHeading("Collections en ligne - Identification");
49
		setModal(true);
49
		setModal(true);
50
		setBodyBorder(true);
50
		setBodyBorder(true);
51
		setBodyStyle("padding: 10px;background: none");
51
		setBodyStyle("padding: 10px;background: none");
52
		setWidth(450);
52
		setWidth(450);
53
		setResizable(false);
53
		setResizable(false);
54
		setAutoWidth(false);
54
		setAutoWidth(false);
55
		
55
		
56
		KeyListener keyListener = new KeyListener() {
56
		KeyListener keyListener = new KeyListener() {
57
			public void componentKeyUp(ComponentEvent event) {
57
			public void componentKeyUp(ComponentEvent event) {
58
				validate();
58
				validate();
59
			}
59
			}
60
 
60
 
61
		};
61
		};
62
 
62
 
63
		zoneInfoHtml = new HtmlContainer();
63
		zoneInfoHtml = new HtmlContainer();
64
		zoneInfoTpl = "<div id='"+ComposantId.DIV_IDENTIFICATION_MSG+"'>{0}</div>";
64
		zoneInfoTpl = "<div id='"+ComposantId.DIV_IDENTIFICATION_MSG+"'>{0}</div>";
65
		//zoneInfoHtml.setHtml(Format.substitute(zoneInfoTpl, (new Params()).add("")));
65
		//zoneInfoHtml.setHtml(Format.substitute(zoneInfoTpl, (new Params()).add("")));
66
		zoneInfoHtml.hide();
66
		zoneInfoHtml.hide();
67
		add(zoneInfoHtml);
67
		add(zoneInfoHtml);
68
		
68
		
69
		login = new TextField<String>();
69
		login = new TextField<String>();
70
		login.setMinLength(4);
70
		login.setMinLength(4);
71
		login.setFieldLabel("Courriel");
71
		login.setFieldLabel("Courriel");
72
		login.addKeyListener(keyListener);
72
		login.addKeyListener(keyListener);
73
		add(login);
73
		add(login);
74
 
74
 
75
		motDePasse = new TextField<String>();
75
		motDePasse = new TextField<String>();
76
		motDePasse.setMinLength(4);
76
		motDePasse.setMinLength(4);
77
		motDePasse.setPassword(true);
77
		motDePasse.setPassword(true);
78
		motDePasse.setFieldLabel("Mot de passe");
78
		motDePasse.setFieldLabel("Mot de passe");
79
		motDePasse.addKeyListener(keyListener);
79
		motDePasse.addKeyListener(keyListener);
80
		add(motDePasse);
80
		add(motDePasse);
81
 
81
 
82
		setFocusWidget(login);
82
		setFocusWidget(login);
83
	}
83
	}
84
	
84
	
85
	@Override
85
	@Override
86
	protected void createButtons() {
86
	protected void createButtons() {
87
		super.createButtons();
87
		super.createButtons();
88
	    status = new Status();
88
	    status = new Status();
89
	    status.setBusy("Vérification...");
89
	    status.setBusy("Vérification...");
90
	    status.hide();
90
	    status.hide();
91
	    status.setAutoWidth(true);
91
	    status.setAutoWidth(true);
92
	    getButtonBar().add(status);
92
	    getButtonBar().add(status);
93
	    
93
	    
94
	    getButtonBar().add(new FillToolItem());
94
	    getButtonBar().add(new FillToolItem());
95
	    
95
	    
96
		reinitialiserBouton = new Button("Réinitialiser");
96
		reinitialiserBouton = new Button("Réinitialiser");
97
		reinitialiserBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
97
		reinitialiserBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
98
			public void componentSelected(ButtonEvent ce) {
98
			public void componentSelected(ButtonEvent ce) {
99
				login.reset();
99
				login.reset();
100
				motDePasse.reset();
100
				motDePasse.reset();
101
				validate();
101
				validate();
102
				login.focus();
102
				login.focus();
103
			}
103
			}
104
 
104
 
105
		});
105
		});
106
 
106
 
107
		validerBouton = new Button("Valider");
107
		validerBouton = new Button("Valider");
108
		validerBouton.disable(); // Par défaut : dois être en mode disable
108
		validerBouton.disable(); // Par défaut : dois être en mode disable
109
		validerBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
109
		validerBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
110
			public void componentSelected(ButtonEvent ce) {
110
			public void componentSelected(ButtonEvent ce) {
111
				onSubmit();
111
				onSubmit();
112
			}
112
			}
113
		});
113
		});
114
		
114
		
115
		annulerBouton = new Button("Annuler");
115
		annulerBouton = new Button("Annuler");
116
		annulerBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
116
		annulerBouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
117
			public void componentSelected(ButtonEvent ce) {
117
			public void componentSelected(ButtonEvent ce) {
118
				hide();
118
				hide();
119
			}
119
			}
120
		});
120
		});
121
 
121
 
122
		
122
		
123
		addButton(reinitialiserBouton);
123
		addButton(reinitialiserBouton);
124
		addButton(annulerBouton);
124
		addButton(annulerBouton);
125
		addButton(validerBouton);
125
		addButton(validerBouton);
126
	}
126
	}
127
 
127
 
128
	protected void onSubmit() {
128
	protected void onSubmit() {
129
		status.show();
129
		status.show();
130
	    getButtonBar().disable();
130
	    getButtonBar().disable();
131
		//IdentificationFenetre.this.hide();
131
		//IdentificationFenetre.this.hide();
132
		((Mediateur) Registry.get(RegistreId.MEDIATEUR)).connecterUtilisateur(login.getValue(), motDePasse.getValue());
132
		((Mediateur) Registry.get(RegistreId.MEDIATEUR)).connecterUtilisateur(login.getValue(), motDePasse.getValue());
133
	}
133
	}
134
 
134
 
135
	protected boolean hasValue(TextField<String> field) {
135
	protected boolean hasValue(TextField<String> field) {
136
		return field.getValue() != null && field.getValue().length() > 0;
136
		return field.getValue() != null && field.getValue().length() > 0;
137
	}
137
	}
138
 
138
 
139
	protected void validate() {
139
	protected void validate() {
140
		validerBouton.setEnabled(hasValue(login) && hasValue(motDePasse) && motDePasse.getValue().length() > 3);
140
		validerBouton.setEnabled(hasValue(login) && hasValue(motDePasse) && motDePasse.getValue().length() > 3);
141
	}
141
	}
142
 
142
 
143
	public void rafraichir(Object nouvelleDonnees) {
143
	public void rafraichir(Object nouvellesDonnees) {
144
		if (nouvelleDonnees instanceof Information) {
144
		if (nouvellesDonnees instanceof Information) {
145
			Information info = (Information) nouvelleDonnees;
145
			Information info = (Information) nouvellesDonnees;
146
			if (info.getType().equals("maj_utilisateur")) {
146
			if (info.getType().equals("maj_utilisateur")) {
147
				Utilisateur utilisateurCourant = ((Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT));
147
				Utilisateur utilisateurCourant = ((Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT));
148
				if (utilisateurCourant.isIdentifie() == false) {
148
				if (utilisateurCourant.isIdentifie() == false) {
149
					status.hide();
149
					status.hide();
150
				    getButtonBar().enable();
150
				    getButtonBar().enable();
151
					validate();
151
					validate();
152
					zoneInfoHtml.setHtml(Format.substitute(zoneInfoTpl, (new Params()).add("Mauvais login ou mot de passe")));
152
					zoneInfoHtml.setHtml(Format.substitute(zoneInfoTpl, (new Params()).add("Mauvais login ou mot de passe")));
153
					zoneInfoHtml.show();
153
					zoneInfoHtml.show();
154
					layout();
154
					layout();
155
				} else {
155
				} else {
156
					hide();
156
					hide();
157
				}
157
				}
158
			}
158
			}
159
		} else {
159
		} else {
160
			GWT.log("Ce type d'objet n'est pas pris en compte par la méthode rafraichir de la classe "+getClass(), null);
160
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
161
		}
161
		}
162
		
162
		
163
	}
163
	}
164
 
164
 
165
}
165
}