Subversion Repositories eFlore/Applications.del

Rev

Rev 602 | Rev 939 | 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.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
			}
804 gduche 53
 
54
			public void surErreurUtilisateur(String message) {
55
				/*null*/
56
			}
536 gduche 57
		});
58
		gererEvenements();
59
 
60
	}
61
 
62
	public void rafraichir() {
63
		utilisateur = CacheClient.getInstance().getUtilisateur();
64
		vue.basculerModeConnecte(this.utilisateur);
65
	}
66
 
67
	public void gererEvenements() {
68
		vue.getSeConnecter().addClickHandler(new ClickHandler() {
69
 
70
			@Override
71
			public void onClick(ClickEvent event) {
72
				vue.basculerAffichageFormulaire();
73
			}
74
		});
75
 
76
		vue.getBoutonOK().addClickHandler(new ClickHandler() {
77
			@Override
78
			public void onClick(ClickEvent event) {
597 aurelien 79
				surTentativeLogin();
536 gduche 80
			}
81
		});
82
 
83
		vue.getSeDeconnecter().addClickHandler(new ClickHandler() {
84
			@Override
85
			public void onClick(ClickEvent event) {
804 gduche 86
				deconnecterUtilisateur();
536 gduche 87
			}
88
		});
597 aurelien 89
 
90
		vue.getLoginHasKeyPressHandler().addKeyPressHandler(creerGestionnaireEvenementToucheEntree());
91
		vue.getMotdepasseHasKeyPressHandler().addKeyPressHandler(creerGestionnaireEvenementToucheEntree());
536 gduche 92
	}
93
 
597 aurelien 94
	private void surTentativeLogin() {
95
		String login = vue.getLogin().getText();
96
		String motdepasse = vue.getMotdepasse().getText();
97
 
98
		if (login.equals("") || motdepasse.equals("")) {
99
			gererErreur("saisirLogin");
100
		} else {
101
			connecterUtilisateur(login, motdepasse);
102
		}
103
	}
104
 
105
	public KeyPressHandler creerGestionnaireEvenementToucheEntree() {
106
		return new KeyPressHandler() {
107
			public void onKeyPress(KeyPressEvent event) {
108
				if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER) {
109
					surTentativeLogin();
110
				}
111
			}
112
		};
113
	}
114
 
549 gduche 115
	public void gererErreur(String erreur) {
116
		vue.setErreur(erreur);
117
		vue.afficherErreur();
118
	}
119
 
120
	public void connecterUtilisateur(String login, String motdepasse) {
121
 
122
		utilisateurService.connecterUtilisateur(login, motdepasse, new UtilisateurCallback() {
123
			@Override
124
			public void surRetourUtilisateur(Utilisateur utilisateur) {
125
				CacheClient.getInstance().setUtilisateur(utilisateur);
597 aurelien 126
				if (utilisateur.estIdentifie()) {
549 gduche 127
					vue.masquerErreur();
128
					rafraichir();
129
					vue.basculerAffichageFormulaire();
130
					vue.viderFormulaire();
804 gduche 131
				}
549 gduche 132
			}
804 gduche 133
 
134
			public void surErreurUtilisateur(String message) {
135
				vue.setErreur("identificationRefus");
136
				vue.afficherErreur();
137
			}
549 gduche 138
		});
139
	}
140
 
804 gduche 141
	public void deconnecterUtilisateur() {
142
		utilisateurService.deconnecterUtilisateur(new UtilisateurCallback() {
549 gduche 143
			@Override
144
			public void surRetourUtilisateur(Utilisateur utilisateur) {
145
				CacheClient.getInstance().setUtilisateur(utilisateur);
146
				rafraichir();
147
			}
804 gduche 148
 
149
			public void surErreurUtilisateur(String message) {
150
				vue.setErreur("identificationRefus");
151
				vue.afficherErreur();
152
			}
549 gduche 153
		});
154
	}
155
 
536 gduche 156
	public void go(HasWidgets composite) {
157
		vue.ajouterVue(composite);
158
	}
159
}