Rev 597 | Rev 939 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.del.client.composants.formulaires.identification;
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.i18n.I18n;
import org.tela_botanica.del.client.modeles.Utilisateur;
import org.tela_botanica.del.client.services.rest.UtilisateurService;
import org.tela_botanica.del.client.services.rest.UtilisateurServiceConcret;
import org.tela_botanica.del.client.services.rest.async.UtilisateurCallback;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.event.dom.client.HasKeyPressHandlers;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.event.dom.client.KeyPressEvent;
import com.google.gwt.event.dom.client.KeyPressHandler;
import com.google.gwt.user.client.ui.HasText;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
public class FormulaireIdentificationPresenteur {
public abstract interface Vue extends IsWidget {
public void ajouterVue(HasWidgets composite);
public HasClickHandlers getSeConnecter();
public HasClickHandlers getSeDeconnecter();
public void basculerAffichageFormulaire();
public void basculerModeConnecte(Utilisateur utilisateur);
public HasClickHandlers getBoutonOK();
public HasText getLogin();
public HasText getMotdepasse();
public void afficherErreur();
public void masquerErreur();
public void viderFormulaire();
public void setErreur(String idTexte);
public String getErreur();
public HasKeyPressHandlers getLoginHasKeyPressHandler();
public HasKeyPressHandlers getMotdepasseHasKeyPressHandler();
}
private Vue vue;
private Utilisateur utilisateur;
private UtilisateurService utilisateurService;
public FormulaireIdentificationPresenteur(Vue vue, UtilisateurService utilisateurService) {
this.vue = vue;
this.utilisateurService = utilisateurService;
utilisateurService.obtenirUtilisateur(new UtilisateurCallback() {
@Override
public void surRetourUtilisateur(Utilisateur utilisateur) {
CacheClient.getInstance().setUtilisateur(utilisateur);
rafraichir();
}
});
gererEvenements();
}
public void rafraichir() {
utilisateur = CacheClient.getInstance().getUtilisateur();
vue.basculerModeConnecte(this.utilisateur);
}
public void gererEvenements() {
vue.getSeConnecter().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
vue.basculerAffichageFormulaire();
}
});
vue.getBoutonOK().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
surTentativeLogin();
}
});
vue.getSeDeconnecter().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
deconnecterUtilisateur(utilisateur.getCourriel());
}
});
vue.getLoginHasKeyPressHandler().addKeyPressHandler(creerGestionnaireEvenementToucheEntree());
vue.getMotdepasseHasKeyPressHandler().addKeyPressHandler(creerGestionnaireEvenementToucheEntree());
}
private void surTentativeLogin() {
String login = vue.getLogin().getText();
String motdepasse = vue.getMotdepasse().getText();
if (login.equals("") || motdepasse.equals("")) {
gererErreur("saisirLogin");
} else {
connecterUtilisateur(login, motdepasse);
}
}
public KeyPressHandler creerGestionnaireEvenementToucheEntree() {
return new KeyPressHandler() {
public void onKeyPress(KeyPressEvent event) {
if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER) {
surTentativeLogin();
}
}
};
}
public void gererErreur(String erreur) {
vue.setErreur(erreur);
vue.afficherErreur();
}
public void connecterUtilisateur(String login, String motdepasse) {
utilisateurService.connecterUtilisateur(login, motdepasse, new UtilisateurCallback() {
@Override
public void surRetourUtilisateur(Utilisateur utilisateur) {
CacheClient.getInstance().setUtilisateur(utilisateur);
if (utilisateur.estIdentifie()) {
vue.masquerErreur();
rafraichir();
vue.basculerAffichageFormulaire();
vue.viderFormulaire();
} else {
vue.setErreur("identificationRefus");
vue.afficherErreur();
}
}
});
}
public void deconnecterUtilisateur(String courriel) {
utilisateurService.deconnecterUtilisateur(courriel, new UtilisateurCallback() {
@Override
public void surRetourUtilisateur(Utilisateur utilisateur) {
CacheClient.getInstance().setUtilisateur(utilisateur);
rafraichir();
}
});
}
public void go(HasWidgets composite) {
vue.ajouterVue(composite);
}
}