Subversion Repositories eFlore/Applications.del

Rev

Rev 804 | Rev 942 | 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;
4
import org.tela_botanica.del.client.modeles.Utilisateur;
549 gduche 5
import org.tela_botanica.del.client.services.rest.UtilisateurService;
536 gduche 6
import org.tela_botanica.del.client.services.rest.async.UtilisateurCallback;
939 benjamin 7
 
536 gduche 8
import com.google.gwt.event.dom.client.ClickEvent;
9
import com.google.gwt.event.dom.client.ClickHandler;
10
import com.google.gwt.event.dom.client.HasClickHandlers;
597 aurelien 11
import com.google.gwt.event.dom.client.HasKeyPressHandlers;
12
import com.google.gwt.event.dom.client.KeyCodes;
13
import com.google.gwt.event.dom.client.KeyPressEvent;
14
import com.google.gwt.event.dom.client.KeyPressHandler;
549 gduche 15
import com.google.gwt.user.client.ui.HasText;
536 gduche 16
import com.google.gwt.user.client.ui.HasWidgets;
17
import com.google.gwt.user.client.ui.IsWidget;
18
 
19
public class FormulaireIdentificationPresenteur {
939 benjamin 20
 
536 gduche 21
	public abstract interface Vue extends IsWidget {
22
		public void ajouterVue(HasWidgets composite);
939 benjamin 23
 
536 gduche 24
		public HasClickHandlers getSeConnecter();
939 benjamin 25
 
536 gduche 26
		public HasClickHandlers getSeDeconnecter();
939 benjamin 27
 
536 gduche 28
		public void basculerAffichageFormulaire();
939 benjamin 29
 
536 gduche 30
		public void basculerModeConnecte(Utilisateur utilisateur);
939 benjamin 31
 
536 gduche 32
		public HasClickHandlers getBoutonOK();
939 benjamin 33
 
549 gduche 34
		public HasText getLogin();
939 benjamin 35
 
549 gduche 36
		public HasText getMotdepasse();
939 benjamin 37
 
536 gduche 38
		public void afficherErreur();
939 benjamin 39
 
536 gduche 40
		public void masquerErreur();
939 benjamin 41
 
536 gduche 42
		public void viderFormulaire();
939 benjamin 43
 
549 gduche 44
		public void setErreur(String idTexte);
939 benjamin 45
 
549 gduche 46
		public String getErreur();
939 benjamin 47
 
597 aurelien 48
		public HasKeyPressHandlers getLoginHasKeyPressHandler();
939 benjamin 49
 
597 aurelien 50
		public HasKeyPressHandlers getMotdepasseHasKeyPressHandler();
536 gduche 51
	}
939 benjamin 52
 
536 gduche 53
	private Vue vue;
54
	private Utilisateur utilisateur;
549 gduche 55
	private UtilisateurService utilisateurService;
939 benjamin 56
 
549 gduche 57
	public FormulaireIdentificationPresenteur(Vue vue, UtilisateurService utilisateurService) {
536 gduche 58
		this.vue = vue;
549 gduche 59
		this.utilisateurService = utilisateurService;
536 gduche 60
		utilisateurService.obtenirUtilisateur(new UtilisateurCallback() {
939 benjamin 61
 
536 gduche 62
			@Override
939 benjamin 63
			public void surRetour(Utilisateur objetRetour) {
536 gduche 64
				CacheClient.getInstance().setUtilisateur(utilisateur);
65
				rafraichir();
66
			}
67
		});
68
		gererEvenements();
939 benjamin 69
 
536 gduche 70
	}
939 benjamin 71
 
536 gduche 72
	public void rafraichir() {
939 benjamin 73
		utilisateur = CacheClient.getInstance().getUtilisateur();
536 gduche 74
		vue.basculerModeConnecte(this.utilisateur);
75
	}
939 benjamin 76
 
536 gduche 77
	public void gererEvenements() {
78
		vue.getSeConnecter().addClickHandler(new ClickHandler() {
939 benjamin 79
 
536 gduche 80
			@Override
81
			public void onClick(ClickEvent event) {
82
				vue.basculerAffichageFormulaire();
83
			}
84
		});
939 benjamin 85
 
536 gduche 86
		vue.getBoutonOK().addClickHandler(new ClickHandler() {
87
			@Override
88
			public void onClick(ClickEvent event) {
597 aurelien 89
				surTentativeLogin();
536 gduche 90
			}
91
		});
939 benjamin 92
 
536 gduche 93
		vue.getSeDeconnecter().addClickHandler(new ClickHandler() {
94
			@Override
95
			public void onClick(ClickEvent event) {
939 benjamin 96
				deconnecterUtilisateur();
536 gduche 97
			}
98
		});
939 benjamin 99
 
597 aurelien 100
		vue.getLoginHasKeyPressHandler().addKeyPressHandler(creerGestionnaireEvenementToucheEntree());
101
		vue.getMotdepasseHasKeyPressHandler().addKeyPressHandler(creerGestionnaireEvenementToucheEntree());
536 gduche 102
	}
939 benjamin 103
 
597 aurelien 104
	private void surTentativeLogin() {
939 benjamin 105
		String login = vue.getLogin().getText();
597 aurelien 106
		String motdepasse = vue.getMotdepasse().getText();
939 benjamin 107
 
597 aurelien 108
		if (login.equals("") || motdepasse.equals("")) {
109
			gererErreur("saisirLogin");
110
		} else {
111
			connecterUtilisateur(login, motdepasse);
112
		}
113
	}
939 benjamin 114
 
597 aurelien 115
	public KeyPressHandler creerGestionnaireEvenementToucheEntree() {
116
		return new KeyPressHandler() {
117
			public void onKeyPress(KeyPressEvent event) {
118
				if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER) {
119
					surTentativeLogin();
120
				}
121
			}
122
		};
123
	}
939 benjamin 124
 
549 gduche 125
	public void gererErreur(String erreur) {
126
		vue.setErreur(erreur);
127
		vue.afficherErreur();
128
	}
939 benjamin 129
 
549 gduche 130
	public void connecterUtilisateur(String login, String motdepasse) {
131
 
132
		utilisateurService.connecterUtilisateur(login, motdepasse, new UtilisateurCallback() {
939 benjamin 133
 
134
			public void surErreur(String message) {
135
				vue.setErreur("identificationRefus");
136
				vue.afficherErreur();
137
			}
138
 
549 gduche 139
			@Override
939 benjamin 140
			public void surRetour(Utilisateur objetRetour) {
549 gduche 141
				CacheClient.getInstance().setUtilisateur(utilisateur);
597 aurelien 142
				if (utilisateur.estIdentifie()) {
549 gduche 143
					vue.masquerErreur();
144
					rafraichir();
145
					vue.basculerAffichageFormulaire();
146
					vue.viderFormulaire();
939 benjamin 147
				}
549 gduche 148
			}
149
		});
150
	}
939 benjamin 151
 
804 gduche 152
	public void deconnecterUtilisateur() {
153
		utilisateurService.deconnecterUtilisateur(new UtilisateurCallback() {
939 benjamin 154
 
155
			public void surErreur(String message) {
156
				vue.setErreur("identificationRefus");
157
				vue.afficherErreur();
158
			}
159
 
549 gduche 160
			@Override
939 benjamin 161
			public void surRetour(Utilisateur objetRetour) {
549 gduche 162
				CacheClient.getInstance().setUtilisateur(utilisateur);
163
				rafraichir();
164
			}
165
		});
166
	}
939 benjamin 167
 
536 gduche 168
	public void go(HasWidgets composite) {
169
		vue.ajouterVue(composite);
170
	}
171
}