Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 689 → Rev 690

/trunk/src/org/tela_botanica/del/client/utils/UtilitairesServiceResultat.java
5,6 → 5,7
import java.util.HashMap;
import java.util.List;
 
import org.tela_botanica.del.client.modeles.Contributeur;
import org.tela_botanica.del.client.modeles.Image;
import org.tela_botanica.del.client.modeles.Observation;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
61,8 → 62,8
public static PropositionDetermination creerPropositionDeterminationAPartirObservationJSON(JSONObject observationJson) {
PropositionDetermination propositionDetermination = new PropositionDetermination();
propositionDetermination.setAuteur(observationJson.get("prenom_utilisateur").isString().stringValue()+
" "+observationJson.get("nom_utilisateur").isString().stringValue());
Contributeur contributeur = new Contributeur(observationJson.get("nom_utilisateur").isString().stringValue(), observationJson.get("prenom_utilisateur").isString().stringValue(), observationJson.get("courriel_utilisateur").isString().stringValue());
propositionDetermination.setContributeur(contributeur);
java.util.Date datePropDeter = parserDateObservation(observationJson.get("date_observation").isString().stringValue());
propositionDetermination.setDate(datePropDeter);
propositionDetermination.setEspece(observationJson.get("nom_ret").isString().stringValue());
/trunk/src/org/tela_botanica/del/client/utils/MockDatasource.java
9,6 → 9,7
 
import org.tela_botanica.del.client.exceptions.ExceptionClient;
import org.tela_botanica.del.client.modeles.Commentaire;
import org.tela_botanica.del.client.modeles.Contributeur;
import org.tela_botanica.del.client.modeles.Image;
import org.tela_botanica.del.client.modeles.InformationsRecherche;
import org.tela_botanica.del.client.modeles.InterventionForum;
109,7 → 110,8
 
PropositionDetermination observationValidationData = new PropositionDetermination();
observationValidationData.setEspece("Iris lutescens subsp. lutescens");
observationValidationData.setAuteur("contributeur test");
Contributeur contributeur = new Contributeur("contributeur", "test", "contrib@test.com");
observationValidationData.setContributeur(contributeur);
observationValidationData.setId("1");
 
observationValidationData.ajouterVoteDetermination(voteDetermination);
117,7 → 119,8
observationValidationDatas.add(observationValidationData);
 
PropositionDetermination observationValidationData2 = new PropositionDetermination();
observationValidationData2.setAuteur("contributeur test 2");
Contributeur contributeur2 = new Contributeur("contributeur2", "test2", "contrib2@test.com");
observationValidationData2.setContributeur(contributeur2);
observationValidationData2.setEspece("Lavatera arborea L.");
observationValidationData2.setId("2");
observationValidationData2.ajouterVoteDetermination(voteDetermination);
126,9 → 129,10
 
PropositionDetermination observationValidationData3 = new PropositionDetermination();
observationValidationData3.setEspece("Acer monsp. L.");
observationValidationData3.setAuteur("Léo Ferré");
Commentaire commentaire = new Commentaire("Greg", new Date(), "Avec le temps...");
Commentaire commentaireBis = new Commentaire("Benj", new Date(), "Pas d'accord avec Greg!");
Contributeur contributeur3 = new Contributeur("contributeur3", "test3", "contrib3test.com");
observationValidationData3.setContributeur(contributeur3);
Commentaire commentaire = new Commentaire(new Contributeur("Benjamin", "Liens", "benjamin@liens.com"), new Date(), "Avec le temps...");
Commentaire commentaireBis = new Commentaire(new Contributeur("Greg", "Duche", "greg@duche.com"), new Date(), "Pas d'accord avec Greg!");
commentaire.getListeCommentaires().add(commentaireBis);
observationValidationData3.ajouterCommentaire(commentaire);
observationValidationData3.setId("3");
138,8 → 142,9
 
PropositionDetermination observationValidationData4 = new PropositionDetermination();
observationValidationData4.setEspece("Acer aceras aus.");
observationValidationData4.setAuteur("Pierre Desproges");
Commentaire commentaire2 = new Commentaire("Greg", new Date(), "Public chéri mon amour...");
Contributeur contributeur4 = new Contributeur("Pierre", "Desproges", "contrib4test.com");
observationValidationData4.setContributeur(contributeur4);
Commentaire commentaire2 = new Commentaire(new Contributeur("Greg","Duche", "gregoire@tela-botanica.org"), new Date(), "Public chéri mon amour...");
observationValidationData4.ajouterCommentaire(commentaire2);
observationValidationData4.setId("4");
observationValidationData4.ajouterVoteDetermination(voteDetermination);
148,8 → 153,9
 
PropositionDetermination observationValidationData5 = new PropositionDetermination();
observationValidationData5.setEspece("Acer monsp subsp. monsp.");
observationValidationData5.setAuteur("Louis Aragon");
Commentaire commentaire3 = new Commentaire("Greg", new Date(), "Tout est affaire de décor...");
Contributeur contributeur5 = new Contributeur("contributeur5", "nom", "contrib@nom.com");
observationValidationData5.setContributeur(contributeur5);
Commentaire commentaire3 = new Commentaire(new Contributeur("tsdt", "emkj", "lkjlkje@teas"), new Date(), "Tout est affaire de décor...");
observationValidationData5.ajouterCommentaire(commentaire3);
observationValidationData5.setId("5");
observationValidationData5.ajouterVoteDetermination(voteDetermination);
/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();
}
 
}
/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/composants/formulaires/formulairecommentaire/formulaireCommentaire.css
49,4 → 49,21
padding: 5px;
padding-left: 25px;
cursor: pointer
}
 
 
.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/composants/formulaires/formulairecommentaire/FormulaireCommentaireVue.ui.xml
9,16 → 9,28
<g:Label text="{constants.ajouterCommentaire}" styleName="titre"/>
<g:Label text="{constants.infoProposerDetermination}" styleName="petit"/>
<g:HTML><br /></g:HTML>
<g:HorizontalPanel>
<g:VerticalPanel styleName="{style.colonneGauche}">
<g:HTMLPanel>
<g:HTMLPanel styleName="{style.colonneGauche}">
<g:Label text="{constants.vous}" styleName="sousTitre"/>
<g:Label text="{constants.infoVous}" styleName="petit" />
<g:TextBox ui:field="nomPrenom" />
<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:VerticalPanel>
</g:HorizontalPanel>
</g:HTMLPanel>
</g:HTMLPanel>
<g:Button text="{constants.boutonProposer}" ui:field="boutonValidationCommentaire" styleName="{style.boutonProposer} arrondi"/>
</g:VerticalPanel>
</ui:UiBinder>
/trunk/src/org/tela_botanica/del/client/composants/formulaires/formulairecommentaire/FormulaireCommentairePresenteur.java
6,8 → 6,10
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;
 
28,17 → 30,34
private PossesseurDeCommentaires possesseurDeCommentaires;
 
public interface Vue extends IsWidget {
public abstract HasText getNomPrenom();
 
public HasText getNomObjet();
public HasText getPrenomObjet();
public String getNom();
public String getPrenom();
public String getCourriel();
public abstract HasText getCommentaire();
 
public abstract HasClickHandlers getBoutonValidationCommentaire();
 
public void afficherStyleErreur(String styleErreur);
public void afficherStyleErreurNom(String styleErreur);
 
public void supprimerStyleErreur(String styleErreur);
public void supprimerStyleErreurNom(String styleErreur);
public void afficherStyleErreurPrenom(String styleErreur);
 
void afficherNomPrenomEtDesactiver(String nomPrenomFormate);
public void supprimerStyleErreurPrenom(String styleErreur);
 
public void afficherStyleErreurCommentaire(String styleErreur);
 
public void supprimerStyleErreurCommentaire(String styleErreur);
void afficherNomPrenomEtDesactiver(String nom, String prenom, String courriel);
}
 
private Vue vue;
60,8 → 79,9
}
 
private void remplirAvecInfosUtilisateur() {
if (CacheClient.getInstance().getUtilisateur().estIdentifie()) {
vue.afficherNomPrenomEtDesactiver(CacheClient.getInstance().getUtilisateur().getNomPrenomFormate());
Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
if (utilisateur.estIdentifie()) {
vue.afficherNomPrenomEtDesactiver(utilisateur.getNom(), utilisateur.getPrenom(), utilisateur.getCourriel());
}
}
 
83,9 → 103,9
public void surValidationCommentaire() {
String texteCommentaire = vue.getCommentaire().getText();
String nomPrenom = vue.getNomPrenom().getText();
 
Commentaire commentaire = new Commentaire(nomPrenom, new Date(), texteCommentaire);
Contributeur contributeur = new Contributeur(vue.getNom(), vue.getPrenom(), vue.getCourriel());
Commentaire commentaire = new Commentaire(contributeur, new Date(), texteCommentaire);
 
if (observation != null) {
observation.getInterventionsForum().add(commentaire);
98,18 → 118,18
 
private boolean validerNomPrenom() {
 
ValidateurChampTexteNonNul validateurTaxon = new ValidateurChampTexteNonNul(vue.getNomPrenom()) {
ValidateurChampTexteNonNul validateurNom = new ValidateurChampTexteNonNul(vue.getNomObjet()) {
@Override
public void afficherStyleErreur(String styleErreur) {
vue.afficherStyleErreur(styleErreur);
vue.afficherStyleErreurNom(styleErreur);
}
 
@Override
public void supprimerStyleErreur(String styleErreur) {
vue.supprimerStyleErreur(styleErreur);
vue.supprimerStyleErreurNom(styleErreur);
}
};
return validateurTaxon.valider();
return validateurNom.valider();
}
 
private boolean validerCommentaire() {
117,12 → 137,12
ValidateurChampTexteNonNul validateurCommentaire = new ValidateurChampTexteNonNul(vue.getCommentaire()) {
@Override
public void afficherStyleErreur(String styleErreur) {
vue.afficherStyleErreur(styleErreur);
vue.afficherStyleErreurCommentaire(styleErreur);
}
 
@Override
public void supprimerStyleErreur(String styleErreur) {
vue.supprimerStyleErreur(styleErreur);
vue.supprimerStyleErreurCommentaire(styleErreur);
}
};
return validateurCommentaire.valider();
/trunk/src/org/tela_botanica/del/client/composants/formulaires/formulairecommentaire/FormulaireCommentaireVue.java
5,6 → 5,7
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;
11,14 → 12,14
 
public class FormulaireCommentaireVue extends Composite implements FormulaireCommentairePresenteur.Vue {
@UiField(provided = true)
public TextBox nomPrenom = new TextBox();
@UiField
public TextBox nom, prenom, courriel;
 
@UiField(provided = true)
public TextArea commentaire = new TextArea();
@UiField
public TextArea commentaire;
 
@UiField(provided = true)
public Button boutonValidationCommentaire = new Button();
@UiField
public Button boutonValidationCommentaire;
 
interface FormulairePropositionUIiBinder extends UiBinder<Widget, FormulaireCommentaireVue> {
};
30,9 → 31,14
}
 
@Override
public TextBox getNomPrenom() {
return nomPrenom;
public String getNom() {
return nom.getText();
}
@Override
public String getPrenom() {
return nom.getText();
}
 
@Override
public TextArea getCommentaire() {
45,20 → 51,61
}
@Override
public void afficherStyleErreur(String styleErreur) {
nomPrenom.addStyleName(styleErreur);
public void afficherStyleErreurCommentaire(String styleErreur) {
commentaire.addStyleName(styleErreur);
}
 
@Override
public void supprimerStyleErreur(String styleErreur) {
nomPrenom.removeStyleName(styleErreur);
public void supprimerStyleErreurCommentaire(String styleErreur) {
commentaire.removeStyleName(styleErreur);
}
@Override
public void afficherNomPrenomEtDesactiver(String nomPrenomFormate) {
nomPrenom.setText(nomPrenomFormate);
nomPrenom.setEnabled(false);
public void afficherStyleErreurNom(String styleErreur) {
nom.addStyleName(styleErreur);
}
 
@Override
public void supprimerStyleErreurNom(String styleErreur) {
nom.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 HasText getNomObjet() {
return nom;
}
@Override
public HasText getPrenomObjet() {
return prenom;
}
 
@Override
public String getCourriel() {
return courriel.getText();
}
}
/trunk/src/org/tela_botanica/del/client/composants/formulaires/formulaireproposition/formulaireProposition.css
7,6 → 7,7
width: 370px;
margin: 0 auto;
margin-top: 5%;
padding-bottom:50px;
}
 
.boutonProposer:hover {
51,4 → 52,20
padding: 5px;
padding-left: 25px;
cursor: pointer
}
 
.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/composants/formulaires/formulaireproposition/FormulairePropositionVue.ui.xml
6,15 → 6,25
<ui:with field="constants" type="org.tela_botanica.del.client.i18n.Vocabulary"/>
<ui:style src="formulaireProposition.css" />
<g:VerticalPanel styleName="{style.formulaireProposition}">
<g:HTMLPanel styleName="{style.formulaireProposition}">
<g:Label text="{constants.proposerSaDetermination}" styleName="titre"/>
<g:HTML><br /></g:HTML>
<g:VerticalPanel styleName="{style.colonneGauche}">
<g:HTMLPanel styleName="{style.colonneGauche}">
<g:Label ui:field="labelnomPrenom" text="{constants.vous}" styleName="sousTitre"/>
<g:Label ui:field="infosNomPrenom" text="{constants.infoVous}" styleName="petit" />
<g:TextBox ui:field="nomPrenom" />
<g:Label text="Votre adresse email : " styleName="petit" />
<g:TextBox ui:field="emailAuteur" />
<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.choisirUnTaxon}" styleName="sousTitre"/>
<g:HTML HTML="{constants.infoTaxon}" styleName="petit"/>
23,7 → 33,7
<g:Label text="{constants.commentaire}" styleName="sousTitre"/>
<g:TextArea ui:field="commentaires" styleName="{style.commentaire}" />
<g:Button text="{constants.boutonProposer}" ui:field="boutonValidationProposition" styleName="{style.boutonProposer} arrondi"/>
</g:VerticalPanel>
</g:VerticalPanel>
</g:HTMLPanel>
</g:HTMLPanel>
 
</ui:UiBinder>
/trunk/src/org/tela_botanica/del/client/composants/formulaires/formulaireproposition/FormulairePropositionPresenteur.java
10,7 → 10,9
import org.tela_botanica.del.client.composants.validation.ValidateurChampTexteNonNul;
import org.tela_botanica.del.client.config.Config;
import org.tela_botanica.del.client.modeles.Commentaire;
import org.tela_botanica.del.client.modeles.Contributeur;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
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.ajoutdetermination.EvenementAjoutDetermination;
import org.tela_botanica.del.client.utils.UtilitairesAutoCompletionService;
26,15 → 28,20
public class FormulairePropositionPresenteur extends Presenteur {
public interface Vue extends IsWidget {
public HasText getNomPrenom();
public HasText getObjetNom();
public HasText getObjetPrenom();
public HasWidgets getPropositionTaxon();
public HasText getCommentaires();
public HasClickHandlers getBoutonValidationProposition();
public void afficherStyleErreur(String styleErreur);
public void supprimerStyleErreur(String styleErreur);
public void afficherNomPrenomEtDesactiver(String nomPrenomFormate);
public String getEmailAuteur();
public void afficherNomPrenomEtDesactiver(String nom, String prenom);
public String getCourriel();
public void afficherEmailEtDesactiver(String courriel);
public String getNom();
public String getPrenom();
public void afficherStyleErreurNom(String styleErreur);
public void supprimerStyleErreurNom(String styleErreur);
public void afficherStyleErreurPrenom(String styleErreur);
public void supprimerStyleErreurPrenom(String styleErreur);
}
private Vue vue;
49,9 → 56,10
}
private void remplirAvecInfosUtilisateur() {
if(CacheClient.getInstance().getUtilisateur().estIdentifie()) {
vue.afficherNomPrenomEtDesactiver(CacheClient.getInstance().getUtilisateur().getNomPrenomFormate());
vue.afficherEmailEtDesactiver(CacheClient.getInstance().getUtilisateur().getCourriel());
Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
if(utilisateur.estIdentifie()) {
vue.afficherNomPrenomEtDesactiver(utilisateur.getNom(), utilisateur.getPrenom());
vue.afficherEmailEtDesactiver(utilisateur.getCourriel());
}
}
95,20 → 103,34
 
private boolean validerSaisieProposition() {
 
ValidateurChampTexteNonNul validateurTaxon = new ValidateurChampTexteNonNul(vue.getNomPrenom()) {
ValidateurChampTexteNonNul validateurNom = new ValidateurChampTexteNonNul(vue.getObjetNom()) {
@Override
public void afficherStyleErreur(String styleErreur) {
vue.afficherStyleErreur(styleErreur);
vue.afficherStyleErreurNom(styleErreur);
}
@Override
public void supprimerStyleErreur(String styleErreur) {
vue.supprimerStyleErreur(styleErreur);
vue.supprimerStyleErreurNom(styleErreur);
}
};
boolean taxonSaisi = validateurTaxon.valider();
ValidateurChampTexteNonNul validateurPrenom = new ValidateurChampTexteNonNul(vue.getObjetPrenom()) {
@Override
public void afficherStyleErreur(String styleErreur) {
vue.afficherStyleErreurPrenom(styleErreur);
}
@Override
public void supprimerStyleErreur(String styleErreur) {
vue.supprimerStyleErreurPrenom(styleErreur);
}
};
boolean nomSaisi = validateurNom.valider();
boolean prenomSaisi = validateurPrenom.valider();
 
return taxonSaisi;
return nomSaisi && prenomSaisi;
}
 
private PropositionDetermination collecterValeursSaisieProposition() {
115,20 → 137,17
PropositionDetermination propositionAjoutee = new PropositionDetermination();
propositionAjoutee.setId(CacheClient.getInstance().getImageCourante().getIdImage());
 
String auteur = vue.getNomPrenom().getText();
Contributeur contributeur = new Contributeur(vue.getNom(), vue.getPrenom(), vue.getCourriel());
propositionAjoutee.setContributeur(contributeur);
propositionAjoutee.setDate(new Date());
propositionAjoutee.setEspece(autoCompletionNomTaxonsPresenteur.getValeur());
if (vue.getCommentaires().getText() != "") {
String contenuCommentaire = vue.getCommentaires().getText();
Commentaire comm = new Commentaire(auteur, new Date(), contenuCommentaire);
Commentaire comm = new Commentaire(contributeur, new Date(), contenuCommentaire);
propositionAjoutee.ajouterCommentaire(comm);
}
String emailAuteur = vue.getEmailAuteur();
propositionAjoutee.setAuteur(auteur);
propositionAjoutee.setEmailAuteur(emailAuteur);
propositionAjoutee.setDate(new Date());
 
propositionAjoutee.setEspece(autoCompletionNomTaxonsPresenteur.getValeur());
 
return propositionAjoutee;
}
}
/trunk/src/org/tela_botanica/del/client/composants/formulaires/formulaireproposition/FormulairePropositionVue.java
5,6 → 5,7
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.Label;
import com.google.gwt.user.client.ui.LayoutPanel;
import com.google.gwt.user.client.ui.TextArea;
13,24 → 14,21
 
public class FormulairePropositionVue extends Composite implements FormulairePropositionPresenteur.Vue {
 
@UiField(provided = true)
public TextBox nomPrenom = new TextBox();
@UiField
public TextBox nom, prenom, courriel;
 
@UiField(provided = true)
public LayoutPanel propositionTaxon = new LayoutPanel();
@UiField
public LayoutPanel propositionTaxon;
 
@UiField(provided = true)
public TextArea commentaires = new TextArea();
@UiField
public TextArea commentaires;
 
@UiField(provided = true)
public Button boutonValidationProposition = new Button();
@UiField
public Button boutonValidationProposition;
@UiField
public Label labelnomPrenom, infosNomPrenom;
public Label labelnomPrenom;
 
@UiField
public TextBox emailAuteur;
interface FormulairePropositionUIiBinder extends UiBinder<Widget, FormulairePropositionVue> {
};
 
40,10 → 38,6
initWidget(uiBinder.createAndBindUi(this));
}
 
@Override
public TextBox getNomPrenom() {
return nomPrenom;
}
 
@Override
public LayoutPanel getPropositionTaxon() {
61,33 → 55,68
}
 
@Override
public void afficherStyleErreur(String styleErreur) {
nomPrenom.addStyleName(styleErreur);
public void afficherStyleErreurNom(String styleErreur) {
nom.addStyleName(styleErreur);
propositionTaxon.addStyleName(styleErreur);
}
 
@Override
public void supprimerStyleErreur(String styleErreur) {
nomPrenom.removeStyleName(styleErreur);
public void supprimerStyleErreurNom(String styleErreur) {
nom.removeStyleName(styleErreur);
propositionTaxon.removeStyleName(styleErreur);
}
@Override
public void afficherStyleErreurPrenom(String styleErreur) {
prenom.addStyleName(styleErreur);
propositionTaxon.addStyleName(styleErreur);
}
 
@Override
public void afficherNomPrenomEtDesactiver(String nomPrenomFormate) {
nomPrenom.setText(nomPrenomFormate);
nomPrenom.setEnabled(false);
public void supprimerStyleErreurPrenom(String styleErreur) {
prenom.removeStyleName(styleErreur);
propositionTaxon.removeStyleName(styleErreur);
}
 
@Override
public void afficherNomPrenomEtDesactiver(String nom, String prenom) {
this.nom.setText(nom);
this.prenom.setText(prenom);
this.nom.setEnabled(false);
this.prenom.setEnabled(false);
}
@Override
public void afficherEmailEtDesactiver(String courriel) {
emailAuteur.setText(courriel);
emailAuteur.setEnabled(false);
this.courriel.setText(courriel);
this.courriel.setEnabled(false);
}
 
@Override
public String getEmailAuteur() {
return emailAuteur.getText();
public String getCourriel() {
return courriel.getText();
}
 
@Override
public String getNom() {
return nom.getText();
}
 
@Override
public String getPrenom() {
return prenom.getText();
}
 
 
@Override
public HasText getObjetNom() {
return this.nom;
}
@Override
public HasText getObjetPrenom() {
return this.prenom;
}
 
}
/trunk/src/org/tela_botanica/del/client/modeles/Contributeur.java
New file
0,0 → 1,40
package org.tela_botanica.del.client.modeles;
 
public class Contributeur {
private String nom, prenom, adresseEmail;
public Contributeur(String nom, String prenom, String adresseEmail) {
this.nom = nom;
this.prenom = prenom;
this.adresseEmail = adresseEmail;
}
 
public String getNom() {
return nom;
}
 
public void setNom(String nom) {
this.nom = nom;
}
 
public String getPrenom() {
return prenom;
}
 
public void setPrenom(String prenom) {
this.prenom = prenom;
}
 
public String getAdresseEmail() {
return adresseEmail;
}
 
public void setAdresseEmail(String adresseEmail) {
this.adresseEmail = adresseEmail;
}
public String getNomComplet() {
return this.prenom + " " + this.nom;
}
}
/trunk/src/org/tela_botanica/del/client/modeles/InterventionForum.java
4,25 → 4,22
import java.util.Date;
import java.util.List;
public class InterventionForum implements PossesseurDeCommentaires {
private String auteur, emailAuteur;
private Contributeur contributeur;
private Date date;
public List<Commentaire> listeCommentaires = new ArrayList<Commentaire>();
 
public String getAuteur() {
return auteur;
return contributeur.getNomComplet();
}
 
public void setAuteur(String auteur) {
this.auteur = auteur;
public void setContributeur(Contributeur contributeur) {
this.contributeur = contributeur;
}
 
public void setEmailAuteur(String emailAuteur) {
this.emailAuteur = emailAuteur;
public Contributeur getContributeur() {
return contributeur;
}
 
public String getEmailAuteur() {
return this.emailAuteur;
}
public Date getDate() {
return date;
/trunk/src/org/tela_botanica/del/client/modeles/Commentaire.java
6,8 → 6,8
 
private String commentaire;
 
public Commentaire(String auteur, Date date, String commentaire) {
setAuteur(auteur);
public Commentaire(Contributeur contributeur, Date date, String commentaire) {
setContributeur(contributeur);
setDate(date);
this.commentaire = commentaire;
}
/trunk/src/org/tela_botanica/del/test/composants/formulaires/FormulaireCommentaireTest.java
10,6 → 10,7
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentairePresenteur;
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentairePresenteur.Vue;
import org.tela_botanica.del.client.modeles.Commentaire;
import org.tela_botanica.del.client.modeles.Contributeur;
import org.tela_botanica.del.client.modeles.Observation;
 
public class FormulaireCommentaireTest {
25,18 → 26,20
public void setUp() {
obs = new Observation();
comm = new Commentaire("Aurélien Peronnet", new Date(), "Ceci est une chaine de charactères");
comm = new Commentaire(new Contributeur("Peronnet", "Aurélien", "aurelien@tela-botanica.org"), new Date(), "Ceci est une chaine de charactères");
obs.getInterventionsForum().add(comm);
Vue vue1 = Mockito.mock(FormulaireCommentairePresenteur.Vue.class, Mockito.RETURNS_MOCKS);
Mockito.when(vue1.getCommentaire().getText()).thenReturn("Ceci est un commentaire");
Mockito.when(vue1.getNomPrenom().getText()).thenReturn("Georges Abitbol");
Mockito.when(vue1.getPrenom()).thenReturn("Georges");
Mockito.when(vue1.getNom()).thenReturn("Abitbol");
presenteurFormulaireCommentairePourObservation= new FormulaireCommentairePresenteur(obs,vue1);
Vue vue2 = Mockito.mock(FormulaireCommentairePresenteur.Vue.class, Mockito.RETURNS_MOCKS);
Mockito.when(vue2.getCommentaire().getText()).thenReturn("Ceci est un commentaire");
Mockito.when(vue2.getNomPrenom().getText()).thenReturn("Georges Abitbol");
Mockito.when(vue2.getPrenom()).thenReturn("Georges");
Mockito.when(vue2.getNom()).thenReturn("Abitbol");
presenteurFormulaireCommentairePourPossesseurCommentaire = new FormulaireCommentairePresenteur(comm, vue2);
}
/trunk/src/org/tela_botanica/del/test/composants/votes/BarreRepartitionVotePresenteurTest.java
11,6 → 11,7
import org.mockito.Mockito;
import org.tela_botanica.del.client.composants.votes.barrerepartition.BarreRepartitionVotePresenteur;
import org.tela_botanica.del.client.composants.votes.barrerepartition.BarreRepartitionVotePresenteur.Vue;
import org.tela_botanica.del.client.modeles.Contributeur;
import org.tela_botanica.del.client.modeles.MoyenneVote;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.modeles.VoteDetermination;
41,7 → 42,7
 
PropositionDetermination propositionDetermination = new PropositionDetermination();
propositionDetermination.setEspece("Iris lutescens subsp. lutescens");
propositionDetermination.setAuteur("contributeur test");
propositionDetermination.setContributeur(new Contributeur("contrib", "test", "contrib@test.com"));
propositionDetermination.setId("1");
propositionDetermination.ajouterVoteDetermination(voteDetermination);
/trunk/src/org/tela_botanica/del/test/modeles/PropositionDeterminationTest.java
10,6 → 10,7
import org.junit.Before;
import org.junit.Test;
import org.tela_botanica.del.client.modeles.Commentaire;
import org.tela_botanica.del.client.modeles.Contributeur;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.modeles.VoteDetermination;
 
26,11 → 27,12
@Before
public void setUp() {
propositionDetermination = new PropositionDetermination();
propositionDetermination.setAuteur("Aurélien");
Contributeur contributeur = new Contributeur("peronnet", "Aurélien", "aurelien@tela-botanica.org");
propositionDetermination.setContributeur(contributeur);
propositionDetermination.setId("5");
dateInitiale = new Date();
propositionDetermination.setDate(dateInitiale);
commentaireInitial = new Commentaire("Aurélien", new Date(), "Oui c'est interessant");
commentaireInitial = new Commentaire(contributeur, new Date(), "Oui c'est interessant");
commentairesInitiaux.add(commentaireInitial);
propositionDetermination.setListeCommentaires(commentairesInitiaux);
propositionDetermination.setEspece("Acer monsp. L.");
69,13 → 71,14
 
@Test
public void testGetContributeur() {
assertEquals("Aurélien", propositionDetermination.getAuteur());
assertEquals("Aurélien", propositionDetermination.getContributeur().getPrenom());
}
 
@Test
public void testSetContributeur() {
propositionDetermination.setAuteur("Grégoire");
assertEquals("Grégoire", propositionDetermination.getAuteur());
Contributeur contributeurTest = new Contributeur("duche", "gregoire", "gregoire@tela-botanica.org");
propositionDetermination.setContributeur(contributeurTest);
assertEquals("gregoire", propositionDetermination.getContributeur().getPrenom());
}
 
@Test
104,7 → 107,7
@Test
public void testGetCommentaires() {
assertEquals(1, propositionDetermination.getListeCommentaires().size());
assertEquals("Aurélien", propositionDetermination.getListeCommentaires().get(0).getAuteur());
assertEquals("Aurélien", propositionDetermination.getListeCommentaires().get(0).getContributeur().getPrenom());
}
 
@Test
118,10 → 121,11
public void testAjouterCommentaire() {
propositionDetermination.setListeCommentaires(commentairesInitiaux);
assertEquals(1, propositionDetermination.getListeCommentaires().size());
Commentaire nouveauCommentaire = new Commentaire("Grégoire", new Date(), "Rochonner c'est bien !");
Contributeur contributeur = new Contributeur("Peronnet", "Aurélien", "aurelien@tela-botanica.org");
Commentaire nouveauCommentaire = new Commentaire(contributeur, new Date(), "Tout est beau, tout est joyeux, je suis une fleur");
propositionDetermination.ajouterCommentaire(nouveauCommentaire);
assertEquals(2, propositionDetermination.getListeCommentaires().size());
assertEquals("Grégoire", propositionDetermination.getListeCommentaires().get(1).getAuteur());
assertEquals("Aurélien", propositionDetermination.getListeCommentaires().get(1).getContributeur().getPrenom());
}
 
@Test
/trunk/src/org/tela_botanica/del/test/services/CalculVoteDeterminationServiceTest.java
7,6 → 7,7
import java.util.List;
 
import org.junit.Test;
import org.tela_botanica.del.client.modeles.Contributeur;
import org.tela_botanica.del.client.modeles.MoyenneVote;
import org.tela_botanica.del.client.modeles.PropositionDetermination;
import org.tela_botanica.del.client.modeles.VoteDetermination;
24,7 → 25,7
 
PropositionDetermination propositionDetermination = new PropositionDetermination();
propositionDetermination.setEspece("Iris lutescens subsp. lutescens");
propositionDetermination.setAuteur("contributeur test");
propositionDetermination.setContributeur(new Contributeur("contrib", "test", "contrib@test.com"));
propositionDetermination.setId("1");
propositionDetermination.ajouterVoteDetermination(voteDetermination);
 
65,7 → 66,7
 
PropositionDetermination propositionDetermination = new PropositionDetermination();
propositionDetermination.setEspece("Iris lutescens subsp. lutescens");
propositionDetermination.setAuteur("contributeur test");
propositionDetermination.setContributeur(new Contributeur("contrib", "test", "contrib@test.com"));
propositionDetermination.setId("1");
propositionDetermination.ajouterVoteDetermination(voteDetermination1);
propositionDetermination.ajouterVoteDetermination(voteDetermination2);
74,7 → 75,7
PropositionDetermination propositionDetermination2 = new PropositionDetermination();
propositionDetermination2.setEspece("Iris urticans");
propositionDetermination2.setAuteur("contributeur test2");
propositionDetermination2.setContributeur(new Contributeur("contrib", "test", "contrib@test.com"));
propositionDetermination2.setId("2");
propositionDetermination2.ajouterVoteDetermination(voteDetermination1);
propositionDetermination2.ajouterVoteDetermination(voteDetermination2);