Subversion Repositories eFlore/Applications.del

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2212 arthur 1
package org.tela_botanica.del.client.composants.formulaires.identification;
2
 
3
import org.tela_botanica.del.client.cache.CacheClient;
4
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue;
5
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur;
6
import org.tela_botanica.del.client.composants.preferences.PreferencesPresenteur;
7
import org.tela_botanica.del.client.composants.preferences.PreferencesVue;
8
import org.tela_botanica.del.client.modeles.Utilisateur;
9
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
10
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.EvenementChangementEtatUtilisateur;
11
import org.tela_botanica.del.client.navigation.evenement.changementPreferences.EvenementChangementPreferences;
12
import org.tela_botanica.del.client.navigation.evenement.changementPreferences.GestionnaireEvenementChangementPreferences;
13
import org.tela_botanica.del.client.services.rest.PreferencesServiceConcret;
14
import org.tela_botanica.del.client.services.rest.UtilisateurService;
15
import org.tela_botanica.del.client.services.rest.async.UtilisateurCallback;
16
 
17
import com.google.gwt.event.dom.client.ClickEvent;
18
import com.google.gwt.event.dom.client.ClickHandler;
19
import com.google.gwt.event.dom.client.HasClickHandlers;
20
import com.google.gwt.event.dom.client.HasKeyPressHandlers;
21
import com.google.gwt.event.dom.client.KeyCodes;
22
import com.google.gwt.event.dom.client.KeyPressEvent;
23
import com.google.gwt.event.dom.client.KeyPressHandler;
24
import com.google.gwt.user.client.ui.HasText;
25
import com.google.gwt.user.client.ui.HasWidgets;
26
import com.google.gwt.user.client.ui.IsWidget;
27
 
28
public class FormulaireIdentificationPresenteur {
29
 
30
	FenetreOverlaySimplePresenteur fenetreModalePresenteur = null;
31
 
32
	public abstract interface Vue extends IsWidget {
33
		public void ajouterVue(HasWidgets composite);
34
 
35
		public HasClickHandlers getSeConnecter();
36
 
37
		public HasClickHandlers getSeDeconnecter();
38
 
39
		public void basculerAffichageFormulaire(boolean estConnecte);
40
 
41
		public void basculerModeConnecte(Utilisateur utilisateur);
42
 
43
		public HasClickHandlers getBoutonOK();
44
 
45
		public HasText getLogin();
46
 
47
		public HasText getMotdepasse();
48
 
49
		public void afficherErreur();
50
 
51
		public void masquerErreur();
52
 
53
		public void viderFormulaire();
54
 
55
		public void setErreur(String idTexte);
56
 
57
		public String getErreur();
58
 
59
		public HasKeyPressHandlers getLoginHasKeyPressHandler();
60
 
61
		public HasKeyPressHandlers getMotdepasseHasKeyPressHandler();
62
 
63
		HasClickHandlers getZonePreferencesClickHandler();
64
	}
65
 
66
	private Vue vue;
67
	private Utilisateur utilisateur;
68
	private UtilisateurService utilisateurService;
69
 
70
	public FormulaireIdentificationPresenteur(Vue vue, UtilisateurService utilisateurService) {
71
		this.vue = vue;
72
		this.utilisateurService = utilisateurService;
73
		utilisateurService.obtenirUtilisateur(new UtilisateurCallback() {
74
			@Override
75
			public void surRetour(Utilisateur objetRetour) {
76
 
77
				utilisateur = objetRetour;
78
				CacheClient.getInstance().setUtilisateur(utilisateur);
79
				rafraichir();
80
			}
81
		});
82
		gererEvenements();
83
	}
84
 
85
	public void rafraichir() {
86
		utilisateur = CacheClient.getInstance().getUtilisateur();
87
		vue.basculerModeConnecte(this.utilisateur);
88
		BusEvenementiel.getInstance().fireEvent(new EvenementChangementEtatUtilisateur(utilisateur));
89
	}
90
 
91
	public void gererEvenements() {
92
		vue.getBoutonOK().addClickHandler(new ClickHandler() {
93
			@Override
94
			public void onClick(ClickEvent event) {
95
				surTentativeLogin();
96
			}
97
		});
98
 
99
		vue.getSeDeconnecter().addClickHandler(new ClickHandler() {
100
			@Override
101
			public void onClick(ClickEvent event) {
102
				deconnecterUtilisateur();
103
			}
104
		});
105
 
106
		vue.getLoginHasKeyPressHandler().addKeyPressHandler(creerGestionnaireEvenementToucheEntree());
107
		vue.getMotdepasseHasKeyPressHandler().addKeyPressHandler(creerGestionnaireEvenementToucheEntree());
108
 
109
		vue.getZonePreferencesClickHandler().addClickHandler(new ClickHandler() {
110
			@Override
111
			public void onClick(ClickEvent event) {
112
				if(utilisateur.estIdentifie()) {
113
					PreferencesPresenteur preferencesPresenteur = new PreferencesPresenteur(new PreferencesVue(), new PreferencesServiceConcret());
114
					fenetreModalePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue());
115
					fenetreModalePresenteur.ouvrirFenetreModale(preferencesPresenteur);
116
				}
117
			}
118
		});
119
 
120
		BusEvenementiel.getInstance().addHandler(EvenementChangementPreferences.TYPE, new GestionnaireEvenementChangementPreferences() {
121
			@Override
122
			public void onChangementPreferences(EvenementChangementPreferences event) {
123
				if(fenetreModalePresenteur != null && fenetreModalePresenteur.fenetreModaleEstOuverte()) {
124
					fenetreModalePresenteur.fermerFenetreModale();
125
				}
126
			}
127
		});
128
	}
129
 
130
	private void surTentativeLogin() {
131
		String login = vue.getLogin().getText();
132
		String motdepasse = vue.getMotdepasse().getText();
133
 
134
		if (login.equals("") || motdepasse.equals("")) {
135
			gererErreur("saisirLogin");
136
		} else {
137
			connecterUtilisateur(login, motdepasse);
138
		}
139
	}
140
 
141
	public KeyPressHandler creerGestionnaireEvenementToucheEntree() {
142
		return new KeyPressHandler() {
143
			public void onKeyPress(KeyPressEvent event) {
144
				if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER) {
145
					surTentativeLogin();
146
				}
147
			}
148
		};
149
	}
150
 
151
	public void gererErreur(String erreur) {
152
		vue.setErreur(erreur);
153
		vue.afficherErreur();
154
	}
155
 
156
	public void connecterUtilisateur(String login, final String motdepasse) {
157
 
158
		utilisateurService.connecterUtilisateur(login, motdepasse, new UtilisateurCallback() {
159
 
160
			public void surErreur(String message) {
161
				vue.setErreur("identificationRefus");
162
				vue.afficherErreur();
163
			}
164
 
165
			@Override
166
			public void surRetour(Utilisateur objetRetour) {
167
				utilisateur = objetRetour;
168
				CacheClient.getInstance().setUtilisateur(utilisateur);
169
				if (utilisateur.estIdentifie()) {
170
					vue.masquerErreur();
171
					rafraichir();
172
					vue.viderFormulaire();
173
				}
174
			}
175
		});
176
	}
177
 
178
	public void deconnecterUtilisateur() {
179
		utilisateurService.deconnecterUtilisateur(new UtilisateurCallback() {
180
 
181
			public void surErreur(String message) {
182
				vue.setErreur("identificationRefus");
183
				vue.afficherErreur();
184
			}
185
 
186
			@Override
187
			public void surRetour(Utilisateur objetRetour) {
188
				utilisateur = objetRetour;
189
				CacheClient.getInstance().setUtilisateur(utilisateur);
190
				rafraichir();
191
			}
192
		});
193
	}
194
 
195
	public void go(HasWidgets composite) {
196
		vue.ajouterVue(composite);
197
	}
198
}