Subversion Repositories eFlore/Applications.del

Rev

Go to most recent revision | Details | 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
 
1183 gduche 40
		public void basculerAffichageFormulaire(boolean estConnecte);
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.getBoutonOK().addClickHandler(new ClickHandler() {
94
			@Override
95
			public void onClick(ClickEvent event) {
597 aurelien 96
				surTentativeLogin();
536 gduche 97
			}
98
		});
939 benjamin 99
 
536 gduche 100
		vue.getSeDeconnecter().addClickHandler(new ClickHandler() {
101
			@Override
102
			public void onClick(ClickEvent event) {
939 benjamin 103
				deconnecterUtilisateur();
536 gduche 104
			}
105
		});
939 benjamin 106
 
597 aurelien 107
		vue.getLoginHasKeyPressHandler().addKeyPressHandler(creerGestionnaireEvenementToucheEntree());
108
		vue.getMotdepasseHasKeyPressHandler().addKeyPressHandler(creerGestionnaireEvenementToucheEntree());
1175 aurelien 109
 
110
		vue.getZonePreferencesClickHandler().addClickHandler(new ClickHandler() {
111
			@Override
112
			public void onClick(ClickEvent event) {
113
				if(utilisateur.estIdentifie()) {
114
					PreferencesPresenteur preferencesPresenteur = new PreferencesPresenteur(new PreferencesVue(), new PreferencesServiceConcret());
115
					fenetreModalePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue());
116
					fenetreModalePresenteur.ouvrirFenetreModale(preferencesPresenteur);
117
				}
118
			}
119
		});
120
 
121
		BusEvenementiel.getInstance().addHandler(EvenementChangementPreferences.TYPE, new GestionnaireEvenementChangementPreferences() {
122
			@Override
123
			public void onChangementPreferences(EvenementChangementPreferences event) {
124
				if(fenetreModalePresenteur != null && fenetreModalePresenteur.fenetreModaleEstOuverte()) {
125
					fenetreModalePresenteur.fermerFenetreModale();
126
				}
127
			}
128
		});
536 gduche 129
	}
939 benjamin 130
 
597 aurelien 131
	private void surTentativeLogin() {
939 benjamin 132
		String login = vue.getLogin().getText();
597 aurelien 133
		String motdepasse = vue.getMotdepasse().getText();
939 benjamin 134
 
597 aurelien 135
		if (login.equals("") || motdepasse.equals("")) {
136
			gererErreur("saisirLogin");
137
		} else {
138
			connecterUtilisateur(login, motdepasse);
139
		}
140
	}
939 benjamin 141
 
597 aurelien 142
	public KeyPressHandler creerGestionnaireEvenementToucheEntree() {
143
		return new KeyPressHandler() {
144
			public void onKeyPress(KeyPressEvent event) {
145
				if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER) {
146
					surTentativeLogin();
147
				}
148
			}
149
		};
150
	}
939 benjamin 151
 
549 gduche 152
	public void gererErreur(String erreur) {
153
		vue.setErreur(erreur);
154
		vue.afficherErreur();
155
	}
939 benjamin 156
 
549 gduche 157
	public void connecterUtilisateur(String login, String motdepasse) {
158
 
159
		utilisateurService.connecterUtilisateur(login, motdepasse, new UtilisateurCallback() {
939 benjamin 160
 
161
			public void surErreur(String message) {
162
				vue.setErreur("identificationRefus");
163
				vue.afficherErreur();
164
			}
165
 
549 gduche 166
			@Override
939 benjamin 167
			public void surRetour(Utilisateur objetRetour) {
948 aurelien 168
				utilisateur = objetRetour;
946 benjamin 169
				CacheClient.getInstance().setUtilisateur(utilisateur);
597 aurelien 170
				if (utilisateur.estIdentifie()) {
549 gduche 171
					vue.masquerErreur();
172
					rafraichir();
173
					vue.viderFormulaire();
939 benjamin 174
				}
549 gduche 175
			}
176
		});
177
	}
939 benjamin 178
 
804 gduche 179
	public void deconnecterUtilisateur() {
180
		utilisateurService.deconnecterUtilisateur(new UtilisateurCallback() {
939 benjamin 181
 
182
			public void surErreur(String message) {
183
				vue.setErreur("identificationRefus");
184
				vue.afficherErreur();
185
			}
186
 
549 gduche 187
			@Override
939 benjamin 188
			public void surRetour(Utilisateur objetRetour) {
948 aurelien 189
				utilisateur = objetRetour;
549 gduche 190
				CacheClient.getInstance().setUtilisateur(utilisateur);
191
				rafraichir();
192
			}
193
		});
194
	}
939 benjamin 195
 
536 gduche 196
	public void go(HasWidgets composite) {
197
		vue.ajouterVue(composite);
198
	}
199
}