/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/formulairecommentaire/FormulaireCommentaireVue.java |
---|
New file |
0,0 → 1,109 |
package org.tela_botanica.del.client.vues.plateformedetermination.formulairecommentaire; |
import com.google.gwt.core.client.GWT; |
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.HasText; |
import com.google.gwt.user.client.ui.TextArea; |
import com.google.gwt.user.client.ui.TextBox; |
import com.google.gwt.user.client.ui.Widget; |
public class FormulaireCommentaireVue extends Composite implements FormulaireCommentairePresenteur.Vue { |
@UiField |
public TextBox nom, prenom, courriel; |
@UiField |
public TextArea commentaire; |
@UiField |
public Button boutonValidationCommentaire; |
interface FormulairePropositionUIiBinder extends UiBinder<Widget, FormulaireCommentaireVue> { |
}; |
FormulairePropositionUIiBinder uiBinder = GWT.create(FormulairePropositionUIiBinder.class); |
public FormulaireCommentaireVue() { |
initWidget(uiBinder.createAndBindUi(this)); |
} |
@Override |
public String getNom() { |
return nom.getText(); |
} |
@Override |
public String getPrenom() { |
return prenom.getText(); |
} |
@Override |
public TextArea getCommentaire() { |
return commentaire; |
} |
@Override |
public Button getBoutonValidationCommentaire() { |
return boutonValidationCommentaire; |
} |
@Override |
public void afficherStyleErreurNom(String styleErreur) { |
nom.addStyleName(styleErreur); |
commentaire.addStyleName(styleErreur); |
} |
@Override |
public void supprimerStyleErreurNom(String styleErreur) { |
nom.removeStyleName(styleErreur); |
commentaire.removeStyleName(styleErreur); |
} |
@Override |
public void afficherStyleErreurPrenom(String styleErreur) { |
prenom.addStyleName(styleErreur); |
} |
@Override |
public void supprimerStyleErreurPrenom(String styleErreur) { |
prenom.removeStyleName(styleErreur); |
} |
@Override |
public void afficherNomPrenomEtDesactiver(String nom, String prenom, String courriel) { |
this.nom.setText(nom); |
this.nom.setEnabled(false); |
this.prenom.setText(prenom); |
this.prenom.setEnabled(false); |
this.courriel.setText("courriel"); |
this.courriel.setEnabled(false); |
} |
@Override |
public String getCourriel() { |
return courriel.getText(); |
} |
@Override |
public HasText getNomObjet() { |
return nom; |
} |
@Override |
public HasText getPrenomObjet() { |
return prenom; |
} |
@Override |
public void afficherStyleErreurCommentaire(String styleErreur) { |
commentaire.removeStyleName(styleErreur); |
} |
@Override |
public void supprimerStyleErreurCommentaire(String styleErreur) { |
commentaire.removeStyleName(styleErreur); |
} |
} |
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/formulairecommentaire/formulaireCommentaire.css |
---|
New file |
0,0 → 1,65 |
.formulaireProposition { |
z-index: 1500; |
padding: 50px; |
background: white; |
width: 50%; |
width: 600px; |
margin: 0 auto; |
margin-top: 5%; |
} |
.boutonProposer { |
float: right; |
margin-right: 35px; |
margin-top: -85px; |
padding: 10px; |
background: url(./img/add.png) no-repeat 5px 12px #DDD; |
padding-left: 20px; |
cursor: pointer |
} |
.boutonProposer:hover { |
background-color: #AAA |
} |
.colonneGauche,.colonneDroite { |
width: 250px; |
} |
.colonneGauche { |
padding-right: 30px |
} |
.colonneGauche select { |
width: 100% |
} |
.colonneGauche input { |
width: 95% |
} |
.commentaire { |
width: 250px; |
height: 100px |
} |
.propositionTaxon { |
width: 100%; |
height: 30px; |
} |
.zoneNom { |
width: 30%; |
float: left; |
margin-right: 5px; |
} |
.zonePrenom { |
width: 30%; |
float: left; |
} |
.zoneEmail { |
clear: left; |
padding-top: 5px; |
} |
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/formulairecommentaire/FormulaireCommentaireVue.ui.xml |
---|
New file |
0,0 → 1,35 |
<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent"> |
<ui:UiBinder |
xmlns:ui='urn:ui:com.google.gwt.uibinder' |
xmlns:g='urn:import:com.google.gwt.user.client.ui'> |
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary"/> |
<ui:style src="formulaireCommentaire.css" /> |
<g:HTMLPanel styleName="{style.formulaireProposition}"> |
<g:Label text="{constants.ajouterCommentaire}" styleName="titre"/> |
<g:Label text="{constants.infoProposerDetermination}" styleName="petit"/> |
<g:HTML><br /></g:HTML> |
<g:HTMLPanel> |
<g:HTMLPanel styleName="{style.colonneGauche}"> |
<g:Label text="{constants.vous}" styleName="sousTitre"/> |
<g:HTMLPanel styleName="{style.zoneNom}"> |
<g:Label text="{constants.nom}" styleName="petit" /> |
<g:TextBox ui:field="nom"/> |
</g:HTMLPanel> |
<g:HTMLPanel styleName="{style.zonePrenom}"> |
<g:Label text="{constants.prenom}" styleName="petit" /> |
<g:TextBox ui:field="prenom"/> |
</g:HTMLPanel> |
<g:HTMLPanel styleName="{style.zoneEmail}"> |
<g:Label text="Votre adresse email : " styleName="petit" /> |
<g:TextBox ui:field="courriel" /> |
</g:HTMLPanel> |
<g:HTML><br /></g:HTML> |
<g:Label text="{constants.commentaire}" styleName="sousTitre"/> |
<g:TextArea ui:field="commentaire" styleName="{style.commentaire}" /> |
</g:HTMLPanel> |
</g:HTMLPanel> |
<g:Button text="{constants.boutonProposer}" ui:field="boutonValidationCommentaire" styleName="{style.boutonProposer}"/> |
</g:HTMLPanel> |
</ui:UiBinder> |
/trunk/src/org/tela_botanica/del/client/vues/plateformedetermination/formulairecommentaire/FormulaireCommentairePresenteur.java |
---|
New file |
0,0 → 1,163 |
package org.tela_botanica.del.client.vues.plateformedetermination.formulairecommentaire; |
import java.util.Date; |
import org.tela_botanica.del.client.cache.CacheClient; |
import org.tela_botanica.del.client.composants.presenteur.Presenteur; |
import org.tela_botanica.del.client.composants.validation.ValidateurChampTexteNonNul; |
import org.tela_botanica.del.client.modeles.Commentaire; |
import org.tela_botanica.del.client.modeles.Contributeur; |
import org.tela_botanica.del.client.modeles.Observation; |
import org.tela_botanica.del.client.modeles.PossesseurDeCommentaires; |
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.ajoutcommentaire.EvenementAjoutCommentaire; |
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.HasText; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.IsWidget; |
public class FormulaireCommentairePresenteur extends Presenteur { |
// le meme presenteur gere les commentaires pour les observations et pour |
// les possesseurs de commentaires, mais la logique est differente, d'ou la |
// necessité de separer les deux objets metiers |
private Observation observation; |
private PossesseurDeCommentaires possesseurDeCommentaires; |
public interface Vue extends IsWidget { |
public String getNom(); |
public String getPrenom(); |
public String getCourriel(); |
public abstract HasText getCommentaire(); |
public abstract HasClickHandlers getBoutonValidationCommentaire(); |
public void afficherStyleErreurNom(String styleErreur); |
public void supprimerStyleErreurNom(String styleErreur); |
public void afficherStyleErreurPrenom(String styleErreur); |
public void supprimerStyleErreurPrenom(String styleErreur); |
public HasText getNomObjet(); |
public HasText getPrenomObjet(); |
void afficherNomPrenomEtDesactiver(String nom, String prenom, String courriel); |
public void afficherStyleErreurCommentaire(String styleErreur); |
public void supprimerStyleErreurCommentaire(String styleErreur); |
} |
private Vue vue; |
public FormulaireCommentairePresenteur(Observation observation, Vue vue) { |
this.observation = observation; |
this.vue = vue; |
} |
public FormulaireCommentairePresenteur(PossesseurDeCommentaires possesseurDeCommentaires, Vue vue) { |
this.possesseurDeCommentaires = possesseurDeCommentaires; |
this.vue = vue; |
} |
public void go(HasWidgets composite) { |
remplirAvecInfosUtilisateur(); |
composite.add(vue.asWidget()); |
gererEvenements(); |
} |
private void remplirAvecInfosUtilisateur() { |
Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur(); |
if (utilisateur.estIdentifie()) { |
vue.afficherNomPrenomEtDesactiver(utilisateur.getNom(), utilisateur.getPrenom(), utilisateur.getCourriel()); |
} |
} |
protected void gererEvenements() { |
vue.getBoutonValidationCommentaire().addClickHandler(new ClickHandler() { |
@Override |
public void onClick(ClickEvent event) { |
if (!validerNomPrenom() || !validerCommentaire()) { |
return; |
} |
String texteCommentaire = vue.getCommentaire().getText(); |
String nom = vue.getNom(); |
String prenom = vue.getPrenom(); |
String courriel = vue.getCourriel(); |
Contributeur contributeur = new Contributeur(nom, prenom, courriel); |
Commentaire commentaire = new Commentaire(contributeur, new Date(), texteCommentaire); |
if (observation != null) { |
observation.getInterventionsForum().add(commentaire); |
} else if (possesseurDeCommentaires != null) { |
possesseurDeCommentaires.getListeCommentaires().add(commentaire); |
} |
BusEvenementiel.getInstance().fireEvent(new EvenementAjoutCommentaire(commentaire)); |
} |
}); |
} |
private boolean validerNomPrenom() { |
ValidateurChampTexteNonNul validateurNom = new ValidateurChampTexteNonNul(vue.getNomObjet()) { |
@Override |
public void afficherStyleErreur(String styleErreur) { |
vue.afficherStyleErreurNom(styleErreur); |
} |
@Override |
public void supprimerStyleErreur(String styleErreur) { |
vue.supprimerStyleErreurNom(styleErreur); |
} |
}; |
ValidateurChampTexteNonNul validateurPrenom = new ValidateurChampTexteNonNul(vue.getPrenomObjet()) { |
@Override |
public void afficherStyleErreur(String styleErreur) { |
vue.afficherStyleErreurPrenom(styleErreur); |
} |
@Override |
public void supprimerStyleErreur(String styleErreur) { |
vue.supprimerStyleErreurPrenom(styleErreur); |
} |
}; |
return validateurNom.valider() && validateurPrenom.valider(); |
} |
private boolean validerCommentaire() { |
ValidateurChampTexteNonNul validateurCommentaire = new ValidateurChampTexteNonNul(vue.getCommentaire()) { |
@Override |
public void afficherStyleErreur(String styleErreur) { |
vue.afficherStyleErreurCommentaire(styleErreur); |
} |
@Override |
public void supprimerStyleErreur(String styleErreur) { |
vue.supprimerStyleErreurCommentaire(styleErreur); |
} |
}; |
return validateurCommentaire.valider(); |
} |
} |