Subversion Repositories eFlore/Applications.del

Rev

Details | Last modification | View Log | RSS feed

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