Subversion Repositories eFlore/Applications.del

Rev

Rev 663 | Rev 690 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
685 aurelien 1
package org.tela_botanica.del.client.composants.formulaires.formulairecommentaire;
303 aurelien 2
 
3
import java.util.Date;
4
 
663 benjamin 5
import org.tela_botanica.del.client.cache.CacheClient;
658 benjamin 6
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
7
import org.tela_botanica.del.client.composants.validation.ValidateurChampTexteNonNul;
303 aurelien 8
import org.tela_botanica.del.client.modeles.Commentaire;
658 benjamin 9
import org.tela_botanica.del.client.modeles.Observation;
663 benjamin 10
import org.tela_botanica.del.client.modeles.PossesseurDeCommentaires;
303 aurelien 11
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
12
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.EvenementAjoutCommentaire;
13
 
14
import com.google.gwt.event.dom.client.ClickEvent;
15
import com.google.gwt.event.dom.client.ClickHandler;
16
import com.google.gwt.event.dom.client.HasClickHandlers;
17
import com.google.gwt.user.client.ui.HasText;
18
import com.google.gwt.user.client.ui.HasWidgets;
19
import com.google.gwt.user.client.ui.IsWidget;
20
 
663 benjamin 21
public class FormulaireCommentairePresenteur extends Presenteur {
22
 
23
	// le meme presenteur gere les commentaires pour les observations et pour
24
	// les possesseurs de commentaires, mais la logique est differente, d'ou la
25
	// necessité de separer les deux objets metiers
658 benjamin 26
	private Observation observation;
663 benjamin 27
 
28
	private PossesseurDeCommentaires possesseurDeCommentaires;
29
 
303 aurelien 30
	public interface Vue extends IsWidget {
31
		public abstract HasText getNomPrenom();
663 benjamin 32
 
303 aurelien 33
		public abstract HasText getCommentaire();
663 benjamin 34
 
303 aurelien 35
		public abstract HasClickHandlers getBoutonValidationCommentaire();
663 benjamin 36
 
658 benjamin 37
		public void afficherStyleErreur(String styleErreur);
663 benjamin 38
 
658 benjamin 39
		public void supprimerStyleErreur(String styleErreur);
663 benjamin 40
 
41
		void afficherNomPrenomEtDesactiver(String nomPrenomFormate);
303 aurelien 42
	}
663 benjamin 43
 
303 aurelien 44
	private Vue vue;
45
 
658 benjamin 46
	public FormulaireCommentairePresenteur(Observation observation, Vue vue) {
47
		this.observation = observation;
303 aurelien 48
		this.vue = vue;
49
	}
50
 
663 benjamin 51
	public FormulaireCommentairePresenteur(PossesseurDeCommentaires possesseurDeCommentaires, Vue vue) {
52
		this.possesseurDeCommentaires = possesseurDeCommentaires;
53
		this.vue = vue;
54
	}
55
 
303 aurelien 56
	public void go(HasWidgets composite) {
663 benjamin 57
		remplirAvecInfosUtilisateur();
303 aurelien 58
		composite.add(vue.asWidget());
658 benjamin 59
		gererEvenements();
303 aurelien 60
	}
61
 
663 benjamin 62
	private void remplirAvecInfosUtilisateur() {
63
		if (CacheClient.getInstance().getUtilisateur().estIdentifie()) {
64
			vue.afficherNomPrenomEtDesactiver(CacheClient.getInstance().getUtilisateur().getNomPrenomFormate());
65
		}
66
	}
67
 
303 aurelien 68
	protected void gererEvenements() {
69
		vue.getBoutonValidationCommentaire().addClickHandler(new ClickHandler() {
663 benjamin 70
 
303 aurelien 71
			@Override
72
			public void onClick(ClickEvent event) {
663 benjamin 73
 
74
				if (!validerNomPrenom() || !validerCommentaire()) {
658 benjamin 75
					return;
76
				}
663 benjamin 77
 
685 aurelien 78
				surValidationCommentaire();
79
			}
80
		});
81
	}
82
 
83
	public void surValidationCommentaire() {
84
 
85
		String texteCommentaire = vue.getCommentaire().getText();
86
		String nomPrenom = vue.getNomPrenom().getText();
663 benjamin 87
 
685 aurelien 88
		Commentaire commentaire = new Commentaire(nomPrenom, new Date(), texteCommentaire);
663 benjamin 89
 
685 aurelien 90
		if (observation != null) {
91
			observation.getInterventionsForum().add(commentaire);
92
		} else if (possesseurDeCommentaires != null) {
93
			possesseurDeCommentaires.getListeCommentaires().add(commentaire);
94
		}
663 benjamin 95
 
685 aurelien 96
		BusEvenementiel.getInstance().fireEvent(new EvenementAjoutCommentaire(commentaire));
303 aurelien 97
	}
663 benjamin 98
 
658 benjamin 99
	private boolean validerNomPrenom() {
303 aurelien 100
 
658 benjamin 101
		ValidateurChampTexteNonNul validateurTaxon = new ValidateurChampTexteNonNul(vue.getNomPrenom()) {
102
			@Override
103
			public void afficherStyleErreur(String styleErreur) {
104
				vue.afficherStyleErreur(styleErreur);
105
			}
663 benjamin 106
 
658 benjamin 107
			@Override
108
			public void supprimerStyleErreur(String styleErreur) {
109
				vue.supprimerStyleErreur(styleErreur);
110
			}
111
		};
112
		return validateurTaxon.valider();
113
	}
663 benjamin 114
 
658 benjamin 115
	private boolean validerCommentaire() {
116
 
117
		ValidateurChampTexteNonNul validateurCommentaire = new ValidateurChampTexteNonNul(vue.getCommentaire()) {
118
			@Override
119
			public void afficherStyleErreur(String styleErreur) {
120
				vue.afficherStyleErreur(styleErreur);
121
			}
663 benjamin 122
 
658 benjamin 123
			@Override
124
			public void supprimerStyleErreur(String styleErreur) {
125
				vue.supprimerStyleErreur(styleErreur);
126
			}
127
		};
128
		return validateurCommentaire.valider();
129
	}
130
 
303 aurelien 131
}