Subversion Repositories eFlore/Applications.del

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
690 gduche 1
package org.tela_botanica.del.client.vues.plateformedetermination.formulairecommentaire;
2
 
3
import java.util.Date;
4
 
5
import org.tela_botanica.del.client.cache.CacheClient;
6
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
7
import org.tela_botanica.del.client.composants.validation.ValidateurChampTexteNonNul;
8
import org.tela_botanica.del.client.modeles.Commentaire;
9
import org.tela_botanica.del.client.modeles.Contributeur;
10
import org.tela_botanica.del.client.modeles.Observation;
11
import org.tela_botanica.del.client.modeles.PossesseurDeCommentaires;
12
import org.tela_botanica.del.client.modeles.Utilisateur;
13
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
14
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.EvenementAjoutCommentaire;
15
 
16
import com.google.gwt.event.dom.client.ClickEvent;
17
import com.google.gwt.event.dom.client.ClickHandler;
18
import com.google.gwt.event.dom.client.HasClickHandlers;
19
import com.google.gwt.user.client.ui.HasText;
20
import com.google.gwt.user.client.ui.HasWidgets;
21
import com.google.gwt.user.client.ui.IsWidget;
22
 
23
public class FormulaireCommentairePresenteur extends Presenteur {
24
 
25
	// le meme presenteur gere les commentaires pour les observations et pour
26
	// les possesseurs de commentaires, mais la logique est differente, d'ou la
27
	// necessité de separer les deux objets metiers
28
	private Observation observation;
29
 
30
	private PossesseurDeCommentaires possesseurDeCommentaires;
31
 
32
	public interface Vue extends IsWidget {
33
 
34
		public String getNom();
35
 
36
		public String getPrenom();
37
 
38
		public String getCourriel();
39
 
40
		public abstract HasText getCommentaire();
41
 
42
		public abstract HasClickHandlers getBoutonValidationCommentaire();
43
 
44
		public void afficherStyleErreurNom(String styleErreur);
45
 
46
		public void supprimerStyleErreurNom(String styleErreur);
47
 
48
		public void afficherStyleErreurPrenom(String styleErreur);
49
 
50
		public void supprimerStyleErreurPrenom(String styleErreur);
51
 
52
		public HasText getNomObjet();
53
 
54
		public HasText getPrenomObjet();
55
 
56
		void afficherNomPrenomEtDesactiver(String nom, String prenom, String courriel);
57
 
58
		public void afficherStyleErreurCommentaire(String styleErreur);
59
 
60
		public void supprimerStyleErreurCommentaire(String styleErreur);
61
 
62
	}
63
 
64
	private Vue vue;
65
 
66
	public FormulaireCommentairePresenteur(Observation observation, Vue vue) {
67
		this.observation = observation;
68
		this.vue = vue;
69
	}
70
 
71
	public FormulaireCommentairePresenteur(PossesseurDeCommentaires possesseurDeCommentaires, Vue vue) {
72
		this.possesseurDeCommentaires = possesseurDeCommentaires;
73
		this.vue = vue;
74
	}
75
 
76
	public void go(HasWidgets composite) {
77
		remplirAvecInfosUtilisateur();
78
		composite.add(vue.asWidget());
79
		gererEvenements();
80
	}
81
 
82
	private void remplirAvecInfosUtilisateur() {
83
		Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
84
 
85
		if (utilisateur.estIdentifie()) {
86
			vue.afficherNomPrenomEtDesactiver(utilisateur.getNom(), utilisateur.getPrenom(), utilisateur.getCourriel());
87
		}
88
	}
89
 
90
	protected void gererEvenements() {
91
		vue.getBoutonValidationCommentaire().addClickHandler(new ClickHandler() {
92
 
93
			@Override
94
			public void onClick(ClickEvent event) {
95
 
96
				if (!validerNomPrenom() || !validerCommentaire()) {
97
					return;
98
				}
99
 
100
				String texteCommentaire = vue.getCommentaire().getText();
101
				String nom = vue.getNom();
102
				String prenom = vue.getPrenom();
103
				String courriel = vue.getCourriel();
104
 
105
				Contributeur contributeur = new Contributeur(nom, prenom, courriel);
106
				Commentaire commentaire = new Commentaire(contributeur, new Date(), texteCommentaire);
107
 
108
				if (observation != null) {
109
					observation.getInterventionsForum().add(commentaire);
110
				} else if (possesseurDeCommentaires != null) {
111
					possesseurDeCommentaires.getListeCommentaires().add(commentaire);
112
				}
113
 
114
				BusEvenementiel.getInstance().fireEvent(new EvenementAjoutCommentaire(commentaire));
115
			}
116
		});
117
	}
118
 
119
	private boolean validerNomPrenom() {
120
 
121
		ValidateurChampTexteNonNul validateurNom = new ValidateurChampTexteNonNul(vue.getNomObjet()) {
122
			@Override
123
			public void afficherStyleErreur(String styleErreur) {
124
				vue.afficherStyleErreurNom(styleErreur);
125
			}
126
 
127
			@Override
128
			public void supprimerStyleErreur(String styleErreur) {
129
				vue.supprimerStyleErreurNom(styleErreur);
130
			}
131
		};
132
 
133
		ValidateurChampTexteNonNul validateurPrenom = new ValidateurChampTexteNonNul(vue.getPrenomObjet()) {
134
			@Override
135
			public void afficherStyleErreur(String styleErreur) {
136
				vue.afficherStyleErreurPrenom(styleErreur);
137
			}
138
 
139
			@Override
140
			public void supprimerStyleErreur(String styleErreur) {
141
				vue.supprimerStyleErreurPrenom(styleErreur);
142
			}
143
		};
144
		return validateurNom.valider() && validateurPrenom.valider();
145
	}
146
 
147
	private boolean validerCommentaire() {
148
 
149
		ValidateurChampTexteNonNul validateurCommentaire = new ValidateurChampTexteNonNul(vue.getCommentaire()) {
150
			@Override
151
			public void afficherStyleErreur(String styleErreur) {
152
				vue.afficherStyleErreurCommentaire(styleErreur);
153
			}
154
 
155
			@Override
156
			public void supprimerStyleErreur(String styleErreur) {
157
				vue.supprimerStyleErreurCommentaire(styleErreur);
158
			}
159
		};
160
		return validateurCommentaire.valider();
161
	}
162
 
163
}