Subversion Repositories eFlore/Applications.del

Rev

Rev 1496 | 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;
1314 aurelien 10
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.EvenementChangementEtatUtilisateur;
1175 aurelien 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;
549 gduche 14
import org.tela_botanica.del.client.services.rest.UtilisateurService;
536 gduche 15
import org.tela_botanica.del.client.services.rest.async.UtilisateurCallback;
939 benjamin 16
 
536 gduche 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;
597 aurelien 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;
549 gduche 24
import com.google.gwt.user.client.ui.HasText;
536 gduche 25
import com.google.gwt.user.client.ui.HasWidgets;
26
import com.google.gwt.user.client.ui.IsWidget;
27
 
28
public class FormulaireIdentificationPresenteur {
1175 aurelien 29
 
30
	FenetreOverlaySimplePresenteur fenetreModalePresenteur = null;
939 benjamin 31
 
536 gduche 32
	public abstract interface Vue extends IsWidget {
33
		public void ajouterVue(HasWidgets composite);
939 benjamin 34
 
536 gduche 35
		public HasClickHandlers getSeConnecter();
939 benjamin 36
 
536 gduche 37
		public HasClickHandlers getSeDeconnecter();
939 benjamin 38
 
1183 gduche 39
		public void basculerAffichageFormulaire(boolean estConnecte);
939 benjamin 40
 
536 gduche 41
		public void basculerModeConnecte(Utilisateur utilisateur);
939 benjamin 42
 
536 gduche 43
		public HasClickHandlers getBoutonOK();
939 benjamin 44
 
549 gduche 45
		public HasText getLogin();
939 benjamin 46
 
549 gduche 47
		public HasText getMotdepasse();
939 benjamin 48
 
536 gduche 49
		public void afficherErreur();
939 benjamin 50
 
536 gduche 51
		public void masquerErreur();
939 benjamin 52
 
536 gduche 53
		public void viderFormulaire();
939 benjamin 54
 
549 gduche 55
		public void setErreur(String idTexte);
939 benjamin 56
 
549 gduche 57
		public String getErreur();
939 benjamin 58
 
597 aurelien 59
		public HasKeyPressHandlers getLoginHasKeyPressHandler();
939 benjamin 60
 
597 aurelien 61
		public HasKeyPressHandlers getMotdepasseHasKeyPressHandler();
1175 aurelien 62
 
63
		HasClickHandlers getZonePreferencesClickHandler();
536 gduche 64
	}
939 benjamin 65
 
536 gduche 66
	private Vue vue;
67
	private Utilisateur utilisateur;
549 gduche 68
	private UtilisateurService utilisateurService;
939 benjamin 69
 
549 gduche 70
	public FormulaireIdentificationPresenteur(Vue vue, UtilisateurService utilisateurService) {
536 gduche 71
		this.vue = vue;
549 gduche 72
		this.utilisateurService = utilisateurService;
1496 aurelien 73
		utilisateurService.obtenirUtilisateur(new UtilisateurCallback() {
939 benjamin 74
 
536 gduche 75
			@Override
939 benjamin 76
			public void surRetour(Utilisateur objetRetour) {
948 aurelien 77
				utilisateur = objetRetour;
536 gduche 78
				CacheClient.getInstance().setUtilisateur(utilisateur);
79
				rafraichir();
80
			}
1496 aurelien 81
		});
536 gduche 82
		gererEvenements();
83
	}
939 benjamin 84
 
536 gduche 85
	public void rafraichir() {
939 benjamin 86
		utilisateur = CacheClient.getInstance().getUtilisateur();
536 gduche 87
		vue.basculerModeConnecte(this.utilisateur);
1314 aurelien 88
		BusEvenementiel.getInstance().fireEvent(new EvenementChangementEtatUtilisateur(utilisateur));
536 gduche 89
	}
939 benjamin 90
 
536 gduche 91
	public void gererEvenements() {
92
		vue.getBoutonOK().addClickHandler(new ClickHandler() {
93
			@Override
94
			public void onClick(ClickEvent event) {
597 aurelien 95
				surTentativeLogin();
536 gduche 96
			}
97
		});
939 benjamin 98
 
536 gduche 99
		vue.getSeDeconnecter().addClickHandler(new ClickHandler() {
100
			@Override
101
			public void onClick(ClickEvent event) {
939 benjamin 102
				deconnecterUtilisateur();
536 gduche 103
			}
104
		});
939 benjamin 105
 
597 aurelien 106
		vue.getLoginHasKeyPressHandler().addKeyPressHandler(creerGestionnaireEvenementToucheEntree());
107
		vue.getMotdepasseHasKeyPressHandler().addKeyPressHandler(creerGestionnaireEvenementToucheEntree());
1175 aurelien 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
		});
536 gduche 128
	}
939 benjamin 129
 
597 aurelien 130
	private void surTentativeLogin() {
939 benjamin 131
		String login = vue.getLogin().getText();
597 aurelien 132
		String motdepasse = vue.getMotdepasse().getText();
939 benjamin 133
 
597 aurelien 134
		if (login.equals("") || motdepasse.equals("")) {
135
			gererErreur("saisirLogin");
136
		} else {
137
			connecterUtilisateur(login, motdepasse);
138
		}
139
	}
939 benjamin 140
 
597 aurelien 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
	}
939 benjamin 150
 
549 gduche 151
	public void gererErreur(String erreur) {
152
		vue.setErreur(erreur);
153
		vue.afficherErreur();
154
	}
939 benjamin 155
 
1496 aurelien 156
	public void connecterUtilisateur(String login, final String motdepasse) {
549 gduche 157
 
158
		utilisateurService.connecterUtilisateur(login, motdepasse, new UtilisateurCallback() {
939 benjamin 159
 
160
			public void surErreur(String message) {
161
				vue.setErreur("identificationRefus");
162
				vue.afficherErreur();
163
			}
164
 
549 gduche 165
			@Override
939 benjamin 166
			public void surRetour(Utilisateur objetRetour) {
948 aurelien 167
				utilisateur = objetRetour;
946 benjamin 168
				CacheClient.getInstance().setUtilisateur(utilisateur);
597 aurelien 169
				if (utilisateur.estIdentifie()) {
549 gduche 170
					vue.masquerErreur();
171
					rafraichir();
172
					vue.viderFormulaire();
939 benjamin 173
				}
549 gduche 174
			}
175
		});
176
	}
939 benjamin 177
 
804 gduche 178
	public void deconnecterUtilisateur() {
1496 aurelien 179
		utilisateurService.deconnecterUtilisateur(new UtilisateurCallback() {
939 benjamin 180
 
1496 aurelien 181
			public void surErreur(String message) {
182
				vue.setErreur("identificationRefus");
183
				vue.afficherErreur();
184
			}
939 benjamin 185
 
1496 aurelien 186
			@Override
187
			public void surRetour(Utilisateur objetRetour) {
188
				utilisateur = objetRetour;
189
				CacheClient.getInstance().setUtilisateur(utilisateur);
190
				rafraichir();
191
			}
192
		});
549 gduche 193
	}
939 benjamin 194
 
536 gduche 195
	public void go(HasWidgets composite) {
196
		vue.ajouterVue(composite);
197
	}
198
}