Subversion Repositories eFlore/Applications.coel

Rev

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

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