Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 533 → Rev 536

/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;}