Subversion Repositories eFlore/Applications.del

Rev

Rev 1956 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1956 Rev 1984
1
package org.tela_botanica.del.client.composants.forum.interventions;
1
package org.tela_botanica.del.client.composants.forum.interventions;
2
 
2
 
3
 
3
 
4
import org.tela_botanica.del.client.cache.CacheClient;
4
import org.tela_botanica.del.client.cache.CacheClient;
5
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue;
5
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue;
6
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur;
6
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur;
7
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentairePresenteur;
7
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentairePresenteur;
8
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentaireVue;
8
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentaireVue;
9
import org.tela_botanica.del.client.composants.forum.ArbreCommentairePresenteur;
9
import org.tela_botanica.del.client.composants.forum.ArbreCommentairePresenteur;
10
import org.tela_botanica.del.client.composants.forum.ArbreCommentaireVue;
10
import org.tela_botanica.del.client.composants.forum.ArbreCommentaireVue;
11
import org.tela_botanica.del.client.composants.votes.barrerepartition.BarreRepartitionVotePresenteur;
11
import org.tela_botanica.del.client.composants.votes.barrerepartition.BarreRepartitionVotePresenteur;
12
import org.tela_botanica.del.client.composants.votes.barrerepartition.BarreRepartitionVoteVue;
12
import org.tela_botanica.del.client.composants.votes.barrerepartition.BarreRepartitionVoteVue;
13
import org.tela_botanica.del.client.composants.votes.details.DetailListeVotesDeterminationPresenteur;
13
import org.tela_botanica.del.client.composants.votes.details.DetailListeVotesDeterminationPresenteur;
14
import org.tela_botanica.del.client.composants.votes.details.DetailListeVotesDeterminationVue;
14
import org.tela_botanica.del.client.composants.votes.details.DetailListeVotesDeterminationVue;
15
import org.tela_botanica.del.client.config.Config;
15
import org.tela_botanica.del.client.config.Config;
16
import org.tela_botanica.del.client.i18n.I18n;
16
import org.tela_botanica.del.client.i18n.I18n;
17
import org.tela_botanica.del.client.modeles.Commentaire;
17
import org.tela_botanica.del.client.modeles.Commentaire;
18
import org.tela_botanica.del.client.modeles.InterventionForum;
18
import org.tela_botanica.del.client.modeles.InterventionForum;
19
import org.tela_botanica.del.client.modeles.MoyenneVote;
19
import org.tela_botanica.del.client.modeles.MoyenneVote;
20
import org.tela_botanica.del.client.modeles.PropositionDetermination;
20
import org.tela_botanica.del.client.modeles.PropositionDetermination;
21
import org.tela_botanica.del.client.modeles.Utilisateur;
21
import org.tela_botanica.del.client.modeles.Utilisateur;
22
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
22
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
23
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.EvenementAjoutCommentaire;
23
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.EvenementAjoutCommentaire;
24
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.GestionnaireEvenementAjoutCommentaire;
24
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.GestionnaireEvenementAjoutCommentaire;
25
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination;
25
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination;
26
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.GestionnaireEvenementAjoutDetermination;
26
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.GestionnaireEvenementAjoutDetermination;
27
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.EvenementChangementEtatUtilisateur;
27
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.EvenementChangementEtatUtilisateur;
28
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.GestionnaireEvenementChangementEtatUtilisateur;
28
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.GestionnaireEvenementChangementEtatUtilisateur;
29
import org.tela_botanica.del.client.navigation.evenement.suppressioncommentaire.EvenementSuppressionCommentaire;
29
import org.tela_botanica.del.client.navigation.evenement.suppressioncommentaire.EvenementSuppressionCommentaire;
30
import org.tela_botanica.del.client.navigation.evenement.suppressiondetermination.EvenementSuppressionDetermination;
30
import org.tela_botanica.del.client.navigation.evenement.suppressiondetermination.EvenementSuppressionDetermination;
31
import org.tela_botanica.del.client.navigation.evenement.validationPropositionDetermination.EvenementValidationPropositionDetermination;
31
import org.tela_botanica.del.client.navigation.evenement.validationPropositionDetermination.EvenementValidationPropositionDetermination;
32
import org.tela_botanica.del.client.services.CalculVoteDeterminationService;
32
import org.tela_botanica.del.client.services.CalculVoteDeterminationService;
33
import org.tela_botanica.del.client.services.rest.CommentaireService;
33
import org.tela_botanica.del.client.services.rest.CommentaireService;
34
import org.tela_botanica.del.client.services.rest.CommentaireServiceConcret;
34
import org.tela_botanica.del.client.services.rest.CommentaireServiceConcret;
35
import org.tela_botanica.del.client.services.rest.PropositionDeterminationService;
35
import org.tela_botanica.del.client.services.rest.PropositionDeterminationService;
36
import org.tela_botanica.del.client.services.rest.PropositionDeterminationServiceConcret;
36
import org.tela_botanica.del.client.services.rest.PropositionDeterminationServiceConcret;
37
import org.tela_botanica.del.client.services.rest.VoteDeterminationServiceConcret;
37
import org.tela_botanica.del.client.services.rest.VoteDeterminationServiceConcret;
38
import org.tela_botanica.del.client.services.rest.async.SuppressionCommentaireCallback;
38
import org.tela_botanica.del.client.services.rest.async.SuppressionCommentaireCallback;
39
import org.tela_botanica.del.client.services.rest.async.SuppressionPropositionDeterminationCallback;
39
import org.tela_botanica.del.client.services.rest.async.SuppressionPropositionDeterminationCallback;
40
import org.tela_botanica.del.client.services.rest.async.ValidationPropositionCallback;
40
import org.tela_botanica.del.client.services.rest.async.ValidationPropositionCallback;
41
import org.tela_botanica.del.client.utils.ModerationUtils;
41
import org.tela_botanica.del.client.utils.ModerationUtils;
42
 
42
 
43
import com.google.gwt.event.dom.client.ClickEvent;
43
import com.google.gwt.event.dom.client.ClickEvent;
44
import com.google.gwt.event.dom.client.ClickHandler;
44
import com.google.gwt.event.dom.client.ClickHandler;
45
import com.google.gwt.event.dom.client.HasClickHandlers;
45
import com.google.gwt.event.dom.client.HasClickHandlers;
46
import com.google.gwt.event.dom.client.HasMouseOutHandlers;
46
import com.google.gwt.event.dom.client.HasMouseOutHandlers;
47
import com.google.gwt.event.dom.client.HasMouseOverHandlers;
47
import com.google.gwt.event.dom.client.HasMouseOverHandlers;
48
import com.google.gwt.event.dom.client.MouseOutEvent;
48
import com.google.gwt.event.dom.client.MouseOutEvent;
49
import com.google.gwt.event.dom.client.MouseOutHandler;
49
import com.google.gwt.event.dom.client.MouseOutHandler;
50
import com.google.gwt.event.dom.client.MouseOverEvent;
50
import com.google.gwt.event.dom.client.MouseOverEvent;
51
import com.google.gwt.event.dom.client.MouseOverHandler;
51
import com.google.gwt.event.dom.client.MouseOverHandler;
52
import com.google.gwt.event.shared.HandlerRegistration;
52
import com.google.gwt.event.shared.HandlerRegistration;
53
import com.google.gwt.user.client.Window;
53
import com.google.gwt.user.client.Window;
54
import com.google.gwt.user.client.ui.HasWidgets;
54
import com.google.gwt.user.client.ui.HasWidgets;
55
import com.google.gwt.user.client.ui.IsWidget;
55
import com.google.gwt.user.client.ui.IsWidget;
56
 
56
 
57
public class ForumInterventionPresenteur {
57
public class ForumInterventionPresenteur {
58
 
58
 
59
	public interface Vue extends IsWidget {
59
	public interface Vue extends IsWidget {
60
		void ajouterInterventionDetermination(PropositionDetermination determination, IsWidget barreRepartition, IsWidget arbreCommentaires);
60
		void ajouterInterventionDetermination(PropositionDetermination determination, IsWidget barreRepartition, IsWidget arbreCommentaires);
61
		void ajouterInterventionCommentaire(Commentaire commentaire, IsWidget arbreCommentaires);
61
		void ajouterInterventionCommentaire(Commentaire commentaire, IsWidget arbreCommentaires);
62
		HasClickHandlers getRepondre();
62
		HasClickHandlers getRepondre();
63
		HasWidgets getEnfants();
63
		HasWidgets getEnfants();
64
		HasClickHandlers getLienSuppression();
64
		HasClickHandlers getLienSuppression();
65
		void afficherLienSuppression();
65
		void afficherLienSuppression();
66
		void cacherLienSuppression();
66
		void cacherLienSuppression();
67
		HasMouseOverHandlers getConteneurInterventionMouseOver();
67
		HasMouseOverHandlers getConteneurInterventionMouseOver();
68
		HasMouseOutHandlers getConteneurInterventionMouseOut();
68
		HasMouseOutHandlers getConteneurInterventionMouseOut();
69
		HasClickHandlers getEspece();
69
		HasClickHandlers getEspece();
70
		void ajouterLienEspece();
70
		void ajouterLienEspece();
71
		HasClickHandlers getAuteur();
71
		HasClickHandlers getAuteur();
72
		void ajouterLienAuteur();
72
		void ajouterLienAuteur();
73
		void cacherDeterminationProposee();
73
		void cacherDeterminationProposee();
74
		void ajouterLienVotes();
74
		void ajouterLienVotes();
75
		void masquerLienVotes();
75
		void masquerLienVotes();
76
		void setNbVotes(int votes);
76
		void setNbVotes(int votes);
77
		public HasClickHandlers getZoneNbVotes();
77
		public HasClickHandlers getZoneNbVotes();
78
		public HasClickHandlers getBoutonValidationTaxon();
78
		public HasClickHandlers getBoutonValidationTaxon();
79
		void cacherBoutonValidationTaxon();
79
		void cacherBoutonValidationTaxon();
80
		void afficherBoutonValidationTaxon();
80
		void afficherBoutonValidationTaxon();
81
	}
81
	}
82
 
82
 
83
	private Vue vue;
83
	private Vue vue;
84
 
84
 
85
	private InterventionForum interventionForum;
85
	private InterventionForum interventionForum;
86
	
86
	
87
	private CommentaireService commentaireService;
87
	private CommentaireService commentaireService;
88
	
88
	
89
	private PropositionDeterminationService propositionDeterminationService;
89
	private PropositionDeterminationService propositionDeterminationService;
90
	
90
	
91
	private FenetreOverlaySimplePresenteur overlay;
91
	private FenetreOverlaySimplePresenteur overlay;
92
 
92
 
93
	private int nbVotes;
93
	private int nbVotes;
94
	
94
	
95
	private HandlerRegistration validationTaxonHandler;
95
	private HandlerRegistration validationTaxonHandler;
96
	
96
	
97
	public ForumInterventionPresenteur(Vue vue, InterventionForum interventionForum, CommentaireService commentaireService, PropositionDeterminationService propositionDeterminationService) {
97
	public ForumInterventionPresenteur(Vue vue, InterventionForum interventionForum, CommentaireService commentaireService, PropositionDeterminationService propositionDeterminationService) {
98
		this.vue = vue;
98
		this.vue = vue;
99
		this.interventionForum = interventionForum;
99
		this.interventionForum = interventionForum;
100
		this.commentaireService = commentaireService;
100
		this.commentaireService = commentaireService;
101
		this.propositionDeterminationService = propositionDeterminationService;
101
		this.propositionDeterminationService = propositionDeterminationService;
102
	}
102
	}
103
 
103
 
104
	public void go(HasWidgets composite) {
104
	public void go(HasWidgets composite) {
105
		chargerIntervention();
105
		chargerIntervention();
106
		composite.add(vue.asWidget());
106
		composite.add(vue.asWidget());
107
		gererEvenements();
107
		gererEvenements();
108
	}
108
	}
109
	
109
	
110
	public void ajouterEnfant(ForumInterventionPresenteur presenteur) {
110
	public void ajouterEnfant(ForumInterventionPresenteur presenteur) {
111
		presenteur.go(vue.getEnfants());
111
		presenteur.go(vue.getEnfants());
112
	}
112
	}
113
 
113
 
114
	private void chargerIntervention() {
114
	private void chargerIntervention() {
115
		if (interventionForum instanceof PropositionDetermination) {
115
		if (interventionForum instanceof PropositionDetermination) {
116
			ajouterPropositionDetermination((PropositionDetermination) interventionForum);
116
			ajouterPropositionDetermination((PropositionDetermination) interventionForum);
117
		} else if (interventionForum instanceof Commentaire) {
117
		} else if (interventionForum instanceof Commentaire) {
118
			ajouterCommentaire((Commentaire) interventionForum);
118
			ajouterCommentaire((Commentaire) interventionForum);
119
			vue.cacherDeterminationProposee();
119
			vue.cacherDeterminationProposee();
120
		}
120
		}
121
	}
121
	}
122
 
122
 
123
	private void ajouterPropositionDetermination(PropositionDetermination propositionDetermination) {
123
	private void ajouterPropositionDetermination(PropositionDetermination propositionDetermination) {
124
		final PropositionDetermination cetteProposition = propositionDetermination;
124
		final PropositionDetermination cetteProposition = propositionDetermination;
125
		this.nbVotes = propositionDetermination.getVotesDeterminations().size();
125
		this.nbVotes = propositionDetermination.getVotesDeterminations().size();
126
		
126
		
127
		BarreRepartitionVotePresenteur barreRepartitionVotePresenteur = new BarreRepartitionVotePresenteur(new BarreRepartitionVoteVue(), new VoteDeterminationServiceConcret());
127
		BarreRepartitionVotePresenteur barreRepartitionVotePresenteur = new BarreRepartitionVotePresenteur(new BarreRepartitionVoteVue(), new VoteDeterminationServiceConcret());
128
		barreRepartitionVotePresenteur.toggleNomEspece();
128
		barreRepartitionVotePresenteur.toggleNomEspece();
129
		calculerEtAfficherVoteDetermination(barreRepartitionVotePresenteur, propositionDetermination);
129
		calculerEtAfficherVoteDetermination(barreRepartitionVotePresenteur, propositionDetermination);
130
		ArbreCommentairePresenteur arbreCommentairePresenteur = new ArbreCommentairePresenteur(new ArbreCommentaireVue(), propositionDetermination);
130
		ArbreCommentairePresenteur arbreCommentairePresenteur = new ArbreCommentairePresenteur(new ArbreCommentaireVue(), propositionDetermination);
131
		vue.ajouterInterventionDetermination(propositionDetermination, barreRepartitionVotePresenteur.getBarreRepartitionVoteVue(), arbreCommentairePresenteur.getArbreCommentaireVue());
131
		vue.ajouterInterventionDetermination(propositionDetermination, barreRepartitionVotePresenteur.getBarreRepartitionVoteVue(), arbreCommentairePresenteur.getArbreCommentaireVue());
132
		
132
		
133
		final String nn = propositionDetermination.getNumNomenclatural();
133
		final String nn = propositionDetermination.getNumNomenclatural();
134
		final String referentiel = propositionDetermination.getReferentiel();
134
		final String referentiel = propositionDetermination.getReferentiel();
135
		// @TODO harmoniser les valeurs qui veulent dire "y en n'a pas" plutôt que !equals("kedal") :-/
135
		// @TODO harmoniser les valeurs qui veulent dire "y en n'a pas" plutôt que !equals("kedal") :-/
136
		if (nn != null && !nn.equals(0) && !nn.equals("0") && referentiel != null && !referentiel.equals("")) {
136
		if (nn != null && !nn.isEmpty() && !nn.equals(0) && !nn.equals("0") && referentiel != null && !referentiel.isEmpty()) {
137
			vue.ajouterLienEspece();
137
			vue.ajouterLienEspece();
138
			vue.getEspece().addClickHandler(new ClickHandler() {
138
			vue.getEspece().addClickHandler(new ClickHandler() {
139
				
139
				
140
				@Override
140
				@Override
141
				public void onClick(ClickEvent event) {
141
				public void onClick(ClickEvent event) {
142
					Config config = new Config();
142
					Config config = new Config();
143
					String efloreUrlFicheTpl = config.getUrl("efloreTaxon");
143
					String efloreUrlFicheTpl = config.getUrl("efloreTaxon");
144
					String efloreUrlFiche = efloreUrlFicheTpl.replaceAll("referentiel-nn-num_nom", referentiel.substring(0,5)+"-nn-"+nn);
144
					String efloreUrlFiche = efloreUrlFicheTpl.replaceAll("referentiel-nn-num_nom", referentiel.substring(0,5)+"-nn-"+nn);
145
					Window.open(efloreUrlFiche, "Fiche eflore", config.getInfo("popupOptions"));
145
					Window.open(efloreUrlFiche, "Fiche eflore", config.getInfo("popupOptions"));
146
				}
146
				}
147
			});
147
			});
148
		}
148
		}
149
		
149
		
150
		gererAffichageBoutonValidationTaxon(cetteProposition);
150
		gererAffichageBoutonValidationTaxon(cetteProposition);
151
		
151
		
152
		final String idContributeur = propositionDetermination.getContributeur().getId();
152
		final String idContributeur = propositionDetermination.getContributeur().getId();
153
		if (idContributeur != null && !idContributeur.equals("0")) {
153
		if (idContributeur != null && !idContributeur.equals("0")) {
154
			vue.ajouterLienAuteur();
154
			vue.ajouterLienAuteur();
155
			vue.getAuteur().addClickHandler(new ClickHandler() {
155
			vue.getAuteur().addClickHandler(new ClickHandler() {
156
				@Override
156
				@Override
157
				public void onClick(ClickEvent event) {
157
				public void onClick(ClickEvent event) {
158
					Config config = new Config();
158
					Config config = new Config();
159
					Window.open(config.getUrl("profil") + idContributeur, "Consultation de l'annuaire", config.getInfo("popupOptions"));
159
					Window.open(config.getUrl("profil") + idContributeur, "Consultation de l'annuaire", config.getInfo("popupOptions"));
160
				}
160
				}
161
			});
161
			});
162
		}
162
		}
163
	}
163
	}
164
 
164
 
165
	private void gererAffichageBoutonValidationTaxon(final PropositionDetermination cetteProposition) {
165
	private void gererAffichageBoutonValidationTaxon(final PropositionDetermination cetteProposition) {
166
		if (doitAfficherBoutonValidation(cetteProposition)) {
166
		if (doitAfficherBoutonValidation(cetteProposition)) {
167
			vue.afficherBoutonValidationTaxon();	
167
			vue.afficherBoutonValidationTaxon();	
168
			if(validationTaxonHandler != null) {
168
			if(validationTaxonHandler != null) {
169
				validationTaxonHandler.removeHandler();
169
				validationTaxonHandler.removeHandler();
170
			}
170
			}
171
			validationTaxonHandler = vue.getBoutonValidationTaxon().addClickHandler(new ClickHandler() {			
171
			validationTaxonHandler = vue.getBoutonValidationTaxon().addClickHandler(new ClickHandler() {			
172
				@Override
172
				@Override
173
				public void onClick(ClickEvent event) {
173
				public void onClick(ClickEvent event) {
174
					if (Window.confirm(I18n.getVocabulary().confirmationValidationDetermination())) {
174
					if (Window.confirm(I18n.getVocabulary().confirmationValidationDetermination())) {
175
						validerProposition(cetteProposition);
175
						validerProposition(cetteProposition);
176
					}
176
					}
177
				}
177
				}
178
			});
178
			});
179
		} else {
179
		} else {
180
			vue.cacherBoutonValidationTaxon();
180
			vue.cacherBoutonValidationTaxon();
181
		}
181
		}
182
	}
182
	}
183
 
183
 
184
	private void ajouterCommentaire(Commentaire proposition) {
184
	private void ajouterCommentaire(Commentaire proposition) {
185
		ArbreCommentairePresenteur arbreCommentairePresenteur = new ArbreCommentairePresenteur(new ArbreCommentaireVue(), proposition);
185
		ArbreCommentairePresenteur arbreCommentairePresenteur = new ArbreCommentairePresenteur(new ArbreCommentaireVue(), proposition);
186
		vue.ajouterInterventionCommentaire(proposition, arbreCommentairePresenteur.getArbreCommentaireVue());
186
		vue.ajouterInterventionCommentaire(proposition, arbreCommentairePresenteur.getArbreCommentaireVue());
187
	}
187
	}
188
 
188
 
189
	private void calculerEtAfficherVoteDetermination(BarreRepartitionVotePresenteur barreRepartitionVotePresenteur, PropositionDetermination propositionDetermination) {
189
	private void calculerEtAfficherVoteDetermination(BarreRepartitionVotePresenteur barreRepartitionVotePresenteur, PropositionDetermination propositionDetermination) {
190
		MoyenneVote votes = CalculVoteDeterminationService.calculerVoteDetermination(propositionDetermination);
190
		MoyenneVote votes = CalculVoteDeterminationService.calculerVoteDetermination(propositionDetermination);
191
		barreRepartitionVotePresenteur.afficherVotes(votes);
191
		barreRepartitionVotePresenteur.afficherVotes(votes);
192
	}
192
	}
193
	
193
	
194
	private void gererEvenements() {
194
	private void gererEvenements() {
195
		if (this.nbVotes > 0) {
195
		if (this.nbVotes > 0) {
196
			vue.setNbVotes(this.nbVotes);
196
			vue.setNbVotes(this.nbVotes);
197
			vue.ajouterLienVotes();
197
			vue.ajouterLienVotes();
198
			vue.getZoneNbVotes().addClickHandler(new ClickHandler() {
198
			vue.getZoneNbVotes().addClickHandler(new ClickHandler() {
199
				@Override
199
				@Override
200
				public void onClick(ClickEvent event) {
200
				public void onClick(ClickEvent event) {
201
					if (nbVotes > 0) {
201
					if (nbVotes > 0) {
202
						FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(
202
						FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(
203
								new FenetreOverlayDefilanteVue());
203
								new FenetreOverlayDefilanteVue());
204
						DetailListeVotesDeterminationPresenteur detailListeVotesDeterminationPresenteur = new DetailListeVotesDeterminationPresenteur(
204
						DetailListeVotesDeterminationPresenteur detailListeVotesDeterminationPresenteur = new DetailListeVotesDeterminationPresenteur(
205
								new DetailListeVotesDeterminationVue());
205
								new DetailListeVotesDeterminationVue());
206
						fenetreOverlaySimplePresenteur
206
						fenetreOverlaySimplePresenteur
207
								.ouvrirFenetreModale(detailListeVotesDeterminationPresenteur);
207
								.ouvrirFenetreModale(detailListeVotesDeterminationPresenteur);
208
						detailListeVotesDeterminationPresenteur
208
						detailListeVotesDeterminationPresenteur
209
								.afficherVotes((PropositionDetermination) interventionForum);
209
								.afficherVotes((PropositionDetermination) interventionForum);
210
					}
210
					}
211
				}
211
				}
212
			});
212
			});
213
		} else {
213
		} else {
214
			vue.masquerLienVotes();
214
			vue.masquerLienVotes();
215
		}
215
		}
216
		
216
		
217
		vue.getRepondre().addClickHandler(new ClickHandler() {
217
		vue.getRepondre().addClickHandler(new ClickHandler() {
218
			@Override
218
			@Override
219
			public void onClick(ClickEvent event) {
219
			public void onClick(ClickEvent event) {
220
				FormulaireCommentairePresenteur commentairePresenteur = new FormulaireCommentairePresenteur(interventionForum, new CommentaireServiceConcret(), new FormulaireCommentaireVue());
220
				FormulaireCommentairePresenteur commentairePresenteur = new FormulaireCommentairePresenteur(interventionForum, new CommentaireServiceConcret(), new FormulaireCommentaireVue());
221
				overlay = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue());
221
				overlay = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue());
222
				overlay.ouvrirFenetreModale(commentairePresenteur);
222
				overlay.ouvrirFenetreModale(commentairePresenteur);
223
			}
223
			}
224
		});
224
		});
225
		
225
		
226
		vue.getConteneurInterventionMouseOver().addMouseOverHandler(new MouseOverHandler() {		
226
		vue.getConteneurInterventionMouseOver().addMouseOverHandler(new MouseOverHandler() {		
227
			@Override
227
			@Override
228
			public void onMouseOver(MouseOverEvent event) {
228
			public void onMouseOver(MouseOverEvent event) {
229
				if(peutSupprimerIntervention()) {
229
				if(peutSupprimerIntervention()) {
230
					vue.afficherLienSuppression();
230
					vue.afficherLienSuppression();
231
				}
231
				}
232
			}
232
			}
233
		});
233
		});
234
		
234
		
235
		vue.getConteneurInterventionMouseOut().addMouseOutHandler(new MouseOutHandler() {
235
		vue.getConteneurInterventionMouseOut().addMouseOutHandler(new MouseOutHandler() {
236
			@Override
236
			@Override
237
			public void onMouseOut(MouseOutEvent event) {
237
			public void onMouseOut(MouseOutEvent event) {
238
				if(peutSupprimerIntervention()) {
238
				if(peutSupprimerIntervention()) {
239
					vue.cacherLienSuppression();
239
					vue.cacherLienSuppression();
240
				}
240
				}
241
			}		
241
			}		
242
		});
242
		});
243
 
243
 
244
		vue.getLienSuppression().addClickHandler(new ClickHandler() {		
244
		vue.getLienSuppression().addClickHandler(new ClickHandler() {		
245
			@Override
245
			@Override
246
			public void onClick(ClickEvent event) {
246
			public void onClick(ClickEvent event) {
247
				
247
				
248
				String message = "";
248
				String message = "";
249
				if (interventionForum instanceof PropositionDetermination) {
249
				if (interventionForum instanceof PropositionDetermination) {
250
					message = I18n.getVocabulary().confirmationSuppressionDetermination();
250
					message = I18n.getVocabulary().confirmationSuppressionDetermination();
251
				} else if (interventionForum instanceof Commentaire) {
251
				} else if (interventionForum instanceof Commentaire) {
252
					message = I18n.getVocabulary().confirmationSuppressionCommentaire();
252
					message = I18n.getVocabulary().confirmationSuppressionCommentaire();
253
				}
253
				}
254
				
254
				
255
				if(Window.confirm(message)) {
255
				if(Window.confirm(message)) {
256
					supprimerIntervention();
256
					supprimerIntervention();
257
				}
257
				}
258
			}
258
			}
259
		});
259
		});
260
		vue.cacherLienSuppression();
260
		vue.cacherLienSuppression();
261
		
261
		
262
		BusEvenementiel.getInstance().addHandler(EvenementAjoutDetermination.TYPE, new GestionnaireEvenementAjoutDetermination() {
262
		BusEvenementiel.getInstance().addHandler(EvenementAjoutDetermination.TYPE, new GestionnaireEvenementAjoutDetermination() {
263
			@Override
263
			@Override
264
			public void onAjoutDetermination(EvenementAjoutDetermination event) {
264
			public void onAjoutDetermination(EvenementAjoutDetermination event) {
265
				if(overlay != null && overlay.fenetreModaleEstOuverte()) {
265
				if(overlay != null && overlay.fenetreModaleEstOuverte()) {
266
					overlay.fermerFenetreModale();
266
					overlay.fermerFenetreModale();
267
				}
267
				}
268
			}
268
			}
269
		});
269
		});
270
 
270
 
271
		BusEvenementiel.getInstance().addHandler(EvenementAjoutCommentaire.TYPE, new GestionnaireEvenementAjoutCommentaire() {
271
		BusEvenementiel.getInstance().addHandler(EvenementAjoutCommentaire.TYPE, new GestionnaireEvenementAjoutCommentaire() {
272
			@Override
272
			@Override
273
			public void onAjoutCommentaire(EvenementAjoutCommentaire event) {
273
			public void onAjoutCommentaire(EvenementAjoutCommentaire event) {
274
				if(overlay != null && overlay.fenetreModaleEstOuverte()) {
274
				if(overlay != null && overlay.fenetreModaleEstOuverte()) {
275
					overlay.fermerFenetreModale();
275
					overlay.fermerFenetreModale();
276
				}
276
				}
277
			}
277
			}
278
		});
278
		});
279
		
279
		
280
		BusEvenementiel.getInstance().addHandler(EvenementChangementEtatUtilisateur.TYPE, new GestionnaireEvenementChangementEtatUtilisateur() {
280
		BusEvenementiel.getInstance().addHandler(EvenementChangementEtatUtilisateur.TYPE, new GestionnaireEvenementChangementEtatUtilisateur() {
281
			@Override
281
			@Override
282
			public void onModificationEtatUtilisateur(EvenementChangementEtatUtilisateur evenementChangementEtatUtilisateur) {
282
			public void onModificationEtatUtilisateur(EvenementChangementEtatUtilisateur evenementChangementEtatUtilisateur) {
283
				if (interventionForum instanceof PropositionDetermination) {
283
				if (interventionForum instanceof PropositionDetermination) {
284
					gererAffichageBoutonValidationTaxon((PropositionDetermination)interventionForum);
284
					gererAffichageBoutonValidationTaxon((PropositionDetermination)interventionForum);
285
				}
285
				}
286
			}
286
			}
287
		});
287
		});
288
	}
288
	}
289
	
289
	
290
	private boolean peutSupprimerIntervention() {
290
	private boolean peutSupprimerIntervention() {
291
			boolean estPropositionInitiale = false;
291
			boolean estPropositionInitiale = false;
292
			boolean estPropositionRetenue = false;
292
			boolean estPropositionRetenue = false;
293
			if(interventionForum instanceof PropositionDetermination) {
293
			if(interventionForum instanceof PropositionDetermination) {
294
				estPropositionInitiale = ((PropositionDetermination)interventionForum).estPropositionInitiale();
294
				estPropositionInitiale = ((PropositionDetermination)interventionForum).estPropositionInitiale();
295
				estPropositionRetenue =  ((PropositionDetermination)interventionForum).estPropositionRetenue();
295
				estPropositionRetenue =  ((PropositionDetermination)interventionForum).estPropositionRetenue();
296
			}
296
			}
297
		return (!interventionForum.aDesCommentaires() && 
297
		return (!interventionForum.aDesCommentaires() && 
298
				interventionForum.getContributeur() != null && 
298
				interventionForum.getContributeur() != null && 
299
				interventionForum.getContributeur().getId().equals(CacheClient.getInstance().getUtilisateur().getId())
299
				interventionForum.getContributeur().getId().equals(CacheClient.getInstance().getUtilisateur().getId())
300
				&& !estPropositionInitiale
300
				&& !estPropositionInitiale
301
				&& !estPropositionRetenue);
301
				&& !estPropositionRetenue);
302
	}
302
	}
303
	
303
	
304
	private void supprimerIntervention() {
304
	private void supprimerIntervention() {
305
		if(interventionForum instanceof PropositionDetermination) {
305
		if(interventionForum instanceof PropositionDetermination) {
306
			propositionDeterminationService.supprimerProposition((PropositionDetermination)interventionForum, new SuppressionPropositionDeterminationCallback() {	
306
			propositionDeterminationService.supprimerProposition((PropositionDetermination)interventionForum, new SuppressionPropositionDeterminationCallback() {	
307
				@Override
307
				@Override
308
				public void surRetour(String objetRetour) {
308
				public void surRetour(String objetRetour) {
309
					CacheClient.getInstance().getObservationCourante().supprimerIntervention(interventionForum);
309
					CacheClient.getInstance().getObservationCourante().supprimerIntervention(interventionForum);
310
					BusEvenementiel.getInstance().fireEvent(new EvenementSuppressionDetermination((PropositionDetermination)interventionForum));
310
					BusEvenementiel.getInstance().fireEvent(new EvenementSuppressionDetermination((PropositionDetermination)interventionForum));
311
				}
311
				}
312
			});
312
			});
313
		}
313
		}
314
		
314
		
315
		if(interventionForum instanceof Commentaire) {
315
		if(interventionForum instanceof Commentaire) {
316
			commentaireService.supprimerCommentaire((Commentaire)interventionForum, new SuppressionCommentaireCallback() {			
316
			commentaireService.supprimerCommentaire((Commentaire)interventionForum, new SuppressionCommentaireCallback() {			
317
				@Override
317
				@Override
318
				public void surRetour(String objetRetour) {
318
				public void surRetour(String objetRetour) {
319
					CacheClient.getInstance().getObservationCourante().supprimerIntervention(interventionForum);
319
					CacheClient.getInstance().getObservationCourante().supprimerIntervention(interventionForum);
320
					BusEvenementiel.getInstance().fireEvent(new EvenementSuppressionCommentaire((Commentaire)interventionForum));
320
					BusEvenementiel.getInstance().fireEvent(new EvenementSuppressionCommentaire((Commentaire)interventionForum));
321
				}
321
				}
322
			});
322
			});
323
		}
323
		}
324
	}
324
	}
325
	
325
	
326
	private boolean doitAfficherBoutonValidation(PropositionDetermination propositionDetermination) {		
326
	private boolean doitAfficherBoutonValidation(PropositionDetermination propositionDetermination) {		
327
		boolean estPropositionRetenue = propositionDetermination.estPropositionRetenue();
327
		boolean estPropositionRetenue = propositionDetermination.estPropositionRetenue();
328
		String numNomProp = propositionDetermination.getNumNomenclatural();
328
		String numNomProp = propositionDetermination.getNumNomenclatural();
329
		String referentielProp = propositionDetermination.getReferentiel();
329
		String referentielProp = propositionDetermination.getReferentiel();
330
		
330
		
331
		boolean aUnNumNom = (numNomProp != null && !numNomProp.trim().equals("") && !numNomProp.trim().equals("0"));
331
		boolean aUnNumNom = (numNomProp != null && !numNomProp.trim().equals("") && !numNomProp.trim().equals("0"));
332
		boolean aUnReferentiel = (referentielProp != null && !referentielProp.trim().equals("") && !referentielProp.trim().equals("0"));
332
		boolean aUnReferentiel = (referentielProp != null && !referentielProp.trim().equals("") && !referentielProp.trim().equals("0"));
333
		
333
		
334
		Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
334
		Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
335
		boolean estAuteurObservation = false;
335
		boolean estAuteurObservation = false;
336
		if(utilisateur != null) {
336
		if(utilisateur != null) {
337
			estAuteurObservation = utilisateur.estIdentifie() && utilisateur.getId().equals(CacheClient.getInstance().getObservationCourante().getIdAuteur());
337
			estAuteurObservation = utilisateur.estIdentifie() && utilisateur.getId().equals(CacheClient.getInstance().getObservationCourante().getIdAuteur());
338
		}
338
		}
339
		boolean peutValiderObservation = ModerationUtils.utilisateurPeutValiderObservation(CacheClient.getInstance().getUtilisateur(), CacheClient.getInstance().getObservationCourante());
339
		boolean peutValiderObservation = ModerationUtils.utilisateurPeutValiderObservation(CacheClient.getInstance().getUtilisateur(), CacheClient.getInstance().getObservationCourante());
340
		return (peutValiderObservation || estAuteurObservation) && aUnReferentiel && aUnNumNom && !estPropositionRetenue;
340
		return (peutValiderObservation || estAuteurObservation) && aUnReferentiel && aUnNumNom && !estPropositionRetenue;
341
	}
341
	}
342
	
342
	
343
	private void validerProposition(PropositionDetermination propositionDetermination) {
343
	private void validerProposition(PropositionDetermination propositionDetermination) {
344
		final PropositionDetermination cetteProposition = propositionDetermination;
344
		final PropositionDetermination cetteProposition = propositionDetermination;
345
		PropositionDeterminationServiceConcret propositionService = new PropositionDeterminationServiceConcret();
345
		PropositionDeterminationServiceConcret propositionService = new PropositionDeterminationServiceConcret();
346
		propositionDetermination.setValideePar(CacheClient.getInstance().getUtilisateur().getId());
346
		propositionDetermination.setValideePar(CacheClient.getInstance().getUtilisateur().getId());
347
		propositionService.validerProposition(propositionDetermination, new ValidationPropositionCallback() {
347
		propositionService.validerProposition(propositionDetermination, new ValidationPropositionCallback() {
348
			@Override
348
			@Override
349
			public void surRetour(String objetRetour) {
349
			public void surRetour(String objetRetour) {
350
				BusEvenementiel.getInstance().fireEvent(new EvenementValidationPropositionDetermination(cetteProposition));
350
				BusEvenementiel.getInstance().fireEvent(new EvenementValidationPropositionDetermination(cetteProposition));
351
			}
351
			}
352
		});
352
		});
353
	}
353
	}
354
}
354
}