Subversion Repositories eFlore/Applications.del

Rev

Rev 948 | Rev 1183 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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