Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 2211 → Rev 2212

/branches/v1.12-aluminium/src/org/tela_botanica/del/client/composants/formulaires/identification/FormulaireIdentificationVue.ui.xml
New file
0,0 → 1,34
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
xmlns:g='urn:import:com.google.gwt.user.client.ui' ui:generateFormat='com.google.gwt.i18n.rebind.format.PropertiesFormat'
ui:generateLocales="default">
<ui:with field='res' type='org.tela_botanica.del.client.resources.Ressources' />
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary" />
<ui:style src="identification.css" />
<g:HTMLPanel styleName="{style.zoneIdentification} {style.zoneFormulaire}">
<g:Label ui:field="titreSeConnecter" styleName="{style.connecter}" text="{constants.titreSeConnecter}" />
<g:Label ui:field="titreEstIdentifie" styleName="{style.connecter}" text="{constants.titreEstIdentifie}" />
<g:HTMLPanel ui:field="zoneUtilisateur">
<g:HTMLPanel styleName="{style.infoConnexion}">
<g:Label ui:field="email" styleName="{style.email}">Email</g:Label>
<g:Label ui:field="preferences" styleName="{style.preferences}" text="{constants.preferences}"></g:Label>
<g:Label ui:field="deconnecter" styleName="{style.deconnecter}" text="{constants.seDeconnecter}" />
</g:HTMLPanel>
</g:HTMLPanel>
<g:HTMLPanel ui:field="zoneFormulaire">
<g:HTMLPanel styleName="{style.colonneGauche}">
<g:Label text="{constants.login}" />
<g:TextBox ui:field="login" styleName="{style.login}" />
<g:Label text="{constants.motdepasse}" />
<g:PasswordTextBox ui:field="motdepasse" styleName="{style.motdepasse}"></g:PasswordTextBox>
<g:Button ui:field="boutonOK" styleName="{style.boutonOK}">OK</g:Button>
<g:Label ui:field="erreurIdentification" styleName="{style.erreur}"></g:Label>
</g:HTMLPanel>
<g:HTMLPanel styleName="{style.colonneDroite}">
<ui:msg key="texteConnexion">Texte de connexion</ui:msg>
</g:HTMLPanel>
</g:HTMLPanel>
</g:HTMLPanel>
</ui:UiBinder>
/branches/v1.12-aluminium/src/org/tela_botanica/del/client/composants/formulaires/identification/FormulaireIdentificationPresenteur.java
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);
}
}
/branches/v1.12-aluminium/src/org/tela_botanica/del/client/composants/formulaires/identification/FormulaireIdentificationVue.java
New file
0,0 → 1,147
package org.tela_botanica.del.client.composants.formulaires.identification;
 
import org.tela_botanica.del.client.i18n.I18n;
import org.tela_botanica.del.client.modeles.Utilisateur;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.event.dom.client.HasKeyPressHandlers;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
 
public class FormulaireIdentificationVue extends Composite implements FormulaireIdentificationPresenteur.Vue {
interface Binder extends UiBinder<Widget, FormulaireIdentificationVue> {
}
private static Binder uiBinder = GWT.create(Binder.class);
@UiField
Label titreSeConnecter, titreEstIdentifie, deconnecter, email, erreurIdentification, preferences;
@UiField Panel zoneFormulaire;
@UiField Button boutonOK;
@UiField TextBox login, motdepasse;
public FormulaireIdentificationVue() {
initWidget(uiBinder.createAndBindUi(this));
titreSeConnecter.setVisible(false);
erreurIdentification.setVisible(false);
}
@Override
public void ajouterVue(HasWidgets composite) {
composite.add(this.asWidget());
}
 
@Override
public HasClickHandlers getSeConnecter() {
return titreSeConnecter;
}
 
@Override
public void basculerAffichageFormulaire(boolean estConnecte) {
zoneFormulaire.setVisible(!estConnecte);
}
 
@Override
public void basculerModeConnecte(Utilisateur utilisateur) {
//Dans le mode non-connecté, on veut :
// - un bandeau vert avec ecrit Identifiez-vous
// - le formulaire courriel/password/texte et btn ok
// dans le mode connecté on veut :
// - un bandeau vert avec écrit Bienvenue
// - l'email de l'utilisateur
// - un btn déconnecter
// - un btn préférences
boolean estConnecte = utilisateur.estIdentifie();
// mode non-connecté
titreSeConnecter.setVisible(!estConnecte);
titreEstIdentifie.setVisible(estConnecte);
deconnecter.setVisible(estConnecte);
preferences.setVisible(estConnecte);
email.setText(utilisateur.getNomPrenomFormate());
email.setVisible(estConnecte);
basculerAffichageFormulaire(estConnecte);
}
 
@Override
public HasClickHandlers getBoutonOK() {
return boutonOK;
}
 
@Override
public TextBox getLogin() {
return login;
}
 
@Override
public TextBox getMotdepasse() {
return motdepasse;
}
 
@Override
public HasClickHandlers getSeDeconnecter() {
return deconnecter;
}
@Override
public void afficherErreur() {
erreurIdentification.setVisible(true);
}
@Override
public void masquerErreur() {
erreurIdentification.setVisible(false);
}
@Override
public void viderFormulaire() {
login.setText("");
motdepasse.setText("");
}
@Override
public void setErreur(String idTexte) {
String texte = "";
if (idTexte.equals("saisirLogin")) {
texte = I18n.getMessages().saisirLogin();
} else {
texte = I18n.getMessages().identificationRefus();
}
erreurIdentification.setText(texte);
}
public String getErreur() {
return erreurIdentification.getText();
}
 
@Override
public HasKeyPressHandlers getLoginHasKeyPressHandler() {
return login;
}
 
@Override
public HasKeyPressHandlers getMotdepasseHasKeyPressHandler() {
return motdepasse;
}
@Override
public HasClickHandlers getZonePreferencesClickHandler() {
return preferences;
}
}
/branches/v1.12-aluminium/src/org/tela_botanica/del/client/composants/formulaires/identification/identification.css
New file
0,0 → 1,86
.zoneIdentification {
font-size:11px;
padding:30px 15px 22px 15px;
height:70px;
background: none repeat scroll 0 0 white;
border: 1px solid #99C242;
border-radius: 0 10px 10px 10px;
text-align: left;
text-decoration: none;
width: 350px;
}
 
.connecter {
background-color: #99C242;
border-radius: 0 10px 0 0;
color: white;
font-size: 12px;
padding: 5px 5px 5px 9px;
text-align: left;
text-transform: uppercase;
width: 347px;
position:absolute;
margin-left:-15px;
margin-top:-30px;
padding-right:25px
}
 
.deconnecter, .preferences {
text-decoration: underline;
color: blue;
cursor: pointer
}
 
.email, .preferences {
padding-right: 10px
}
 
.zoneFormulaire {
}
 
.login {
width:150px;
font-size:11px;
}
 
.motdepasse {
width:150px;
font-size:11px;
}
 
.erreur {
color: red;
position:absolute;
margin-top:7px;
}
 
.boutonOK {
font-size:11px;
}
 
.colonneGauche {
float:left;
padding-bottom:15px;
margin-right:5px;
width:210px;
}
 
.colonneDroite {
float:left;
margin-right:5px;
padding-bottom:15px;
}
 
.zoneUtilisateur {
text-align:center;
}
 
.infoConnexion {
text-align:center;
font-size:15px;
}
 
.infoConnexion>div:first-child {
margin-top:10px;
}
/branches/v1.12-aluminium/src/org/tela_botanica/del/client/composants/formulaires/identification/FormulaireIdentificationVueBinderImplGenMessages.properties
New file
0,0 → 1,3
texteConnexion=<a href="http://www.tela-botanica.org/page:inscription">S''inscrire... </a> \
<p class="connect gris">Devenez telabotaniste et partagez votre passion pour le végétal !</p> \
<p> <a href="https://www.tela-botanica.org/wp-login.php?action=lostpassword" id="lien_inscription">Mot de passe perdu ? </a></p>