/trunk/src/org/tela_botanica/del/client/composants/identification/FormulaireIdentificationVue.ui.xml |
---|
New file |
0,0 → 1,25 |
<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:generateKeys="com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator" |
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}"> |
<g:HTMLPanel ui:field="zoneUtilisateur"> |
<g:Label ui:field="connecter" styleName="{style.connecter}" text="{constants.seConnecter}" /> |
<g:HorizontalPanel><g:Label ui:field="email" styleName="{style.email}">Email</g:Label><g:Label ui:field="deconnecter" styleName="{style.deconnecter}" text="{constants.seDeconnecter}" /></g:HorizontalPanel> |
</g:HTMLPanel> |
<g:HTMLPanel ui:field="zoneFormulaire" styleName="{style.zoneFormulaire}"> |
<g:Label ui:field="erreurIdentification" styleName="{style.erreur}"></g:Label> |
<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">OK</g:Button> |
</g:HTMLPanel> |
</g:HTMLPanel> |
</ui:UiBinder> |
/trunk/src/org/tela_botanica/del/client/composants/identification/FormulaireIdentificationPresenteur.java |
---|
New file |
0,0 → 1,111 |
package org.tela_botanica.del.client.composants.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.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.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 String getLogin(); |
public String getMotdepasse(); |
public void afficherErreur(); |
public void masquerErreur(); |
public void viderFormulaire(); |
public void setErreur(String texte); |
} |
private Vue vue; |
private Utilisateur utilisateur; |
private UtilisateurServiceConcret utilisateurService; |
public FormulaireIdentificationPresenteur(Vue vue) { |
this.vue = vue; |
utilisateurService = new UtilisateurServiceConcret(); |
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) { |
String login = vue.getLogin(); |
String motdepasse = vue.getMotdepasse(); |
if (login.equals("") || motdepasse.equals("")) { |
vue.setErreur(I18n.getMessages().saisirLogin()); |
vue.afficherErreur(); |
} else { |
utilisateurService.connecterUtilisateur(login, motdepasse, new UtilisateurCallback() { |
@Override |
public void surRetourUtilisateur(Utilisateur utilisateur) { |
CacheClient.getInstance().setUtilisateur(utilisateur); |
if (utilisateur.isIdentifie()) { |
vue.masquerErreur(); |
rafraichir(); |
vue.basculerAffichageFormulaire(); |
vue.viderFormulaire(); |
} else { |
vue.setErreur(I18n.getMessages().identificationRefus()); |
vue.afficherErreur(); |
} |
} |
}); |
} |
} |
}); |
vue.getSeDeconnecter().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur(); |
utilisateurService.deconnecterUtilisateur(utilisateur.getCourriel(), new UtilisateurCallback() { |
@Override |
public void surRetourUtilisateur(Utilisateur utilisateur) { |
CacheClient.getInstance().setUtilisateur(utilisateur); |
rafraichir(); |
} |
}); |
} |
}); |
} |
public void go(HasWidgets composite) { |
vue.ajouterVue(composite); |
} |
} |
/trunk/src/org/tela_botanica/del/client/composants/identification/FormulaireIdentificationVue.java |
---|
New file |
0,0 → 1,105 |
package org.tela_botanica.del.client.composants.identification; |
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.uibinder.client.UiBinder; |
import com.google.gwt.uibinder.client.UiField; |
import com.google.gwt.user.client.Window; |
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 connecter, deconnecter, email, erreurIdentification; |
@UiField Panel zoneFormulaire; |
@UiField Button boutonOK; |
@UiField TextBox login, motdepasse; |
public FormulaireIdentificationVue() { |
initWidget(uiBinder.createAndBindUi(this)); |
basculerAffichageFormulaire(); |
connecter.setVisible(false); |
erreurIdentification.setVisible(false); |
} |
@Override |
public void ajouterVue(HasWidgets composite) { |
composite.add(this.asWidget()); |
} |
@Override |
public HasClickHandlers getSeConnecter() { |
return connecter; |
} |
@Override |
public void basculerAffichageFormulaire() { |
zoneFormulaire.setVisible(!zoneFormulaire.isVisible()); |
} |
@Override |
public void basculerModeConnecte(Utilisateur utilisateur) { |
boolean estConnecte = utilisateur.isIdentifie(); |
connecter.setVisible(!estConnecte); |
deconnecter.setVisible(estConnecte); |
email.setText(utilisateur.getCourriel()); |
email.setVisible(estConnecte); |
} |
@Override |
public HasClickHandlers getBoutonOK() { |
return boutonOK; |
} |
@Override |
public String getLogin() { |
return login.getText(); |
} |
@Override |
public String getMotdepasse() { |
return motdepasse.getText(); |
} |
@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 texte) { |
erreurIdentification.setText(texte); |
} |
} |
/trunk/src/org/tela_botanica/del/client/composants/identification/identification.css |
---|
New file |
0,0 → 1,8 |
.zoneIdentification {} |
.connecter { text-decoration:underline; color:blue; cursor:pointer} |
.deconnecter { text-decoration:underline; color:blue; cursor:pointer} |
.email {padding-right:10px} |
.zoneFormulaire {position:absolute; padding:10px; margin-top:10px; border:solid 2px #8eb533; background:white; box-shadow:2px 2px 2px #666} |
.login {} |
.motdepasse {} |
.erreur {color:red;} |