New file |
0,0 → 1,198 |
package org.tela_botanica.del.client.composants.formulaires.identification; |
|
import org.tela_botanica.del.client.cache.CacheClient; |
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue; |
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur; |
import org.tela_botanica.del.client.composants.preferences.PreferencesPresenteur; |
import org.tela_botanica.del.client.composants.preferences.PreferencesVue; |
import org.tela_botanica.del.client.modeles.Utilisateur; |
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel; |
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.EvenementChangementEtatUtilisateur; |
import org.tela_botanica.del.client.navigation.evenement.changementPreferences.EvenementChangementPreferences; |
import org.tela_botanica.del.client.navigation.evenement.changementPreferences.GestionnaireEvenementChangementPreferences; |
import org.tela_botanica.del.client.services.rest.PreferencesServiceConcret; |
import org.tela_botanica.del.client.services.rest.UtilisateurService; |
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 { |
|
FenetreOverlaySimplePresenteur fenetreModalePresenteur = null; |
|
public abstract interface Vue extends IsWidget { |
public void ajouterVue(HasWidgets composite); |
|
public HasClickHandlers getSeConnecter(); |
|
public HasClickHandlers getSeDeconnecter(); |
|
public void basculerAffichageFormulaire(boolean estConnecte); |
|
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(); |
|
HasClickHandlers getZonePreferencesClickHandler(); |
} |
|
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 surRetour(Utilisateur objetRetour) { |
|
utilisateur = objetRetour; |
CacheClient.getInstance().setUtilisateur(utilisateur); |
rafraichir(); |
} |
}); |
gererEvenements(); |
} |
|
public void rafraichir() { |
utilisateur = CacheClient.getInstance().getUtilisateur(); |
vue.basculerModeConnecte(this.utilisateur); |
BusEvenementiel.getInstance().fireEvent(new EvenementChangementEtatUtilisateur(utilisateur)); |
} |
|
public void gererEvenements() { |
vue.getBoutonOK().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
surTentativeLogin(); |
} |
}); |
|
vue.getSeDeconnecter().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
deconnecterUtilisateur(); |
} |
}); |
|
vue.getLoginHasKeyPressHandler().addKeyPressHandler(creerGestionnaireEvenementToucheEntree()); |
vue.getMotdepasseHasKeyPressHandler().addKeyPressHandler(creerGestionnaireEvenementToucheEntree()); |
|
vue.getZonePreferencesClickHandler().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
if(utilisateur.estIdentifie()) { |
PreferencesPresenteur preferencesPresenteur = new PreferencesPresenteur(new PreferencesVue(), new PreferencesServiceConcret()); |
fenetreModalePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue()); |
fenetreModalePresenteur.ouvrirFenetreModale(preferencesPresenteur); |
} |
} |
}); |
|
BusEvenementiel.getInstance().addHandler(EvenementChangementPreferences.TYPE, new GestionnaireEvenementChangementPreferences() { |
@Override |
public void onChangementPreferences(EvenementChangementPreferences event) { |
if(fenetreModalePresenteur != null && fenetreModalePresenteur.fenetreModaleEstOuverte()) { |
fenetreModalePresenteur.fermerFenetreModale(); |
} |
} |
}); |
} |
|
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, final String motdepasse) { |
|
utilisateurService.connecterUtilisateur(login, motdepasse, new UtilisateurCallback() { |
|
public void surErreur(String message) { |
vue.setErreur("identificationRefus"); |
vue.afficherErreur(); |
} |
|
@Override |
public void surRetour(Utilisateur objetRetour) { |
utilisateur = objetRetour; |
CacheClient.getInstance().setUtilisateur(utilisateur); |
if (utilisateur.estIdentifie()) { |
vue.masquerErreur(); |
rafraichir(); |
vue.viderFormulaire(); |
} |
} |
}); |
} |
|
public void deconnecterUtilisateur() { |
utilisateurService.deconnecterUtilisateur(new UtilisateurCallback() { |
|
public void surErreur(String message) { |
vue.setErreur("identificationRefus"); |
vue.afficherErreur(); |
} |
|
@Override |
public void surRetour(Utilisateur objetRetour) { |
utilisateur = objetRetour; |
CacheClient.getInstance().setUtilisateur(utilisateur); |
rafraichir(); |
} |
}); |
} |
|
public void go(HasWidgets composite) { |
vue.ajouterVue(composite); |
} |
} |