Subversion Repositories eFlore/Applications.del

Rev

Rev 1687 | Rev 1956 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1687 Rev 1830
Line 1... Line 1...
1
package org.tela_botanica.del.client.composants.forum.interventions;
1
package org.tela_botanica.del.client.composants.forum.interventions;
Line -... Line 2...
-
 
2
 
2
 
3
 
3
import org.tela_botanica.del.client.cache.CacheClient;
4
import org.tela_botanica.del.client.cache.CacheClient;
4
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue;
5
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue;
5
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur;
6
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur;
6
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentairePresenteur;
7
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentairePresenteur;
Line 15... Line 16...
15
import org.tela_botanica.del.client.i18n.I18n;
16
import org.tela_botanica.del.client.i18n.I18n;
16
import org.tela_botanica.del.client.modeles.Commentaire;
17
import org.tela_botanica.del.client.modeles.Commentaire;
17
import org.tela_botanica.del.client.modeles.InterventionForum;
18
import org.tela_botanica.del.client.modeles.InterventionForum;
18
import org.tela_botanica.del.client.modeles.MoyenneVote;
19
import org.tela_botanica.del.client.modeles.MoyenneVote;
19
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;
20
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
22
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
21
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.EvenementAjoutCommentaire;
23
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.EvenementAjoutCommentaire;
22
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.GestionnaireEvenementAjoutCommentaire;
24
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.GestionnaireEvenementAjoutCommentaire;
23
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination;
25
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination;
24
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;
-
 
28
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.GestionnaireEvenementChangementEtatUtilisateur;
25
import org.tela_botanica.del.client.navigation.evenement.suppressioncommentaire.EvenementSuppressionCommentaire;
29
import org.tela_botanica.del.client.navigation.evenement.suppressioncommentaire.EvenementSuppressionCommentaire;
26
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;
27
import org.tela_botanica.del.client.services.CalculVoteDeterminationService;
32
import org.tela_botanica.del.client.services.CalculVoteDeterminationService;
28
import org.tela_botanica.del.client.services.rest.CommentaireService;
33
import org.tela_botanica.del.client.services.rest.CommentaireService;
29
import org.tela_botanica.del.client.services.rest.CommentaireServiceConcret;
34
import org.tela_botanica.del.client.services.rest.CommentaireServiceConcret;
30
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;
31
import org.tela_botanica.del.client.services.rest.VoteDeterminationServiceConcret;
37
import org.tela_botanica.del.client.services.rest.VoteDeterminationServiceConcret;
32
import org.tela_botanica.del.client.services.rest.async.SuppressionCommentaireCallback;
38
import org.tela_botanica.del.client.services.rest.async.SuppressionCommentaireCallback;
33
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;
-
 
41
import org.tela_botanica.del.client.utils.ModerationUtils;
Line 34... Line 42...
34
 
42
 
35
import com.google.gwt.event.dom.client.ClickEvent;
43
import com.google.gwt.event.dom.client.ClickEvent;
36
import com.google.gwt.event.dom.client.ClickHandler;
44
import com.google.gwt.event.dom.client.ClickHandler;
37
import com.google.gwt.event.dom.client.HasClickHandlers;
45
import com.google.gwt.event.dom.client.HasClickHandlers;
38
import com.google.gwt.event.dom.client.HasMouseOutHandlers;
46
import com.google.gwt.event.dom.client.HasMouseOutHandlers;
39
import com.google.gwt.event.dom.client.HasMouseOverHandlers;
47
import com.google.gwt.event.dom.client.HasMouseOverHandlers;
40
import com.google.gwt.event.dom.client.MouseOutEvent;
48
import com.google.gwt.event.dom.client.MouseOutEvent;
41
import com.google.gwt.event.dom.client.MouseOutHandler;
49
import com.google.gwt.event.dom.client.MouseOutHandler;
42
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;
43
import com.google.gwt.event.dom.client.MouseOverHandler;
52
import com.google.gwt.event.shared.HandlerRegistration;
44
import com.google.gwt.user.client.Window;
53
import com.google.gwt.user.client.Window;
45
import com.google.gwt.user.client.ui.HasWidgets;
54
import com.google.gwt.user.client.ui.HasWidgets;
Line 46... Line 55...
46
import com.google.gwt.user.client.ui.IsWidget;
55
import com.google.gwt.user.client.ui.IsWidget;
Line 64... Line 73...
64
		void cacherDeterminationProposee();
73
		void cacherDeterminationProposee();
65
		void ajouterLienVotes();
74
		void ajouterLienVotes();
66
		void masquerLienVotes();
75
		void masquerLienVotes();
67
		void setNbVotes(int votes);
76
		void setNbVotes(int votes);
68
		public HasClickHandlers getZoneNbVotes();
77
		public HasClickHandlers getZoneNbVotes();
-
 
78
		public HasClickHandlers getBoutonValidationTaxon();
-
 
79
		void cacherBoutonValidationTaxon();
-
 
80
		void afficherBoutonValidationTaxon();
69
	}
81
	}
Line 70... Line 82...
70
 
82
 
Line 71... Line 83...
71
	private Vue vue;
83
	private Vue vue;
Line 78... Line 90...
78
	
90
	
Line 79... Line 91...
79
	private FenetreOverlaySimplePresenteur overlay;
91
	private FenetreOverlaySimplePresenteur overlay;
Line -... Line 92...
-
 
92
 
-
 
93
	private int nbVotes;
80
 
94
	
81
	private int nbVotes;
95
	private HandlerRegistration validationTaxonHandler;
82
	
96
	
83
	public ForumInterventionPresenteur(Vue vue, InterventionForum interventionForum, CommentaireService commentaireService, PropositionDeterminationService propositionDeterminationService) {
97
	public ForumInterventionPresenteur(Vue vue, InterventionForum interventionForum, CommentaireService commentaireService, PropositionDeterminationService propositionDeterminationService) {
84
		this.vue = vue;
98
		this.vue = vue;
Line 105... Line 119...
105
			vue.cacherDeterminationProposee();
119
			vue.cacherDeterminationProposee();
106
		}
120
		}
107
	}
121
	}
Line 108... Line 122...
108
 
122
 
-
 
123
	private void ajouterPropositionDetermination(PropositionDetermination propositionDetermination) {
109
	private void ajouterPropositionDetermination(PropositionDetermination propositionDetermination) {
124
		final PropositionDetermination cetteProposition = propositionDetermination;
Line 110... Line 125...
110
		this.nbVotes = propositionDetermination.getVotesDeterminations().size();
125
		this.nbVotes = propositionDetermination.getVotesDeterminations().size();
111
		
126
		
112
		BarreRepartitionVotePresenteur barreRepartitionVotePresenteur = new BarreRepartitionVotePresenteur(new BarreRepartitionVoteVue(), new VoteDeterminationServiceConcret());
127
		BarreRepartitionVotePresenteur barreRepartitionVotePresenteur = new BarreRepartitionVotePresenteur(new BarreRepartitionVoteVue(), new VoteDeterminationServiceConcret());
Line 130... Line 145...
130
					Window.open(efloreUrlFiche, "Fiche eflore", config.getInfo("popupOptions"));
145
					Window.open(efloreUrlFiche, "Fiche eflore", config.getInfo("popupOptions"));
131
				}
146
				}
132
			});
147
			});
133
		}
148
		}
Line -... Line 149...
-
 
149
		
-
 
150
		gererAffichageBoutonValidationTaxon(cetteProposition);
134
		
151
		
135
		final String idContributeur = propositionDetermination.getContributeur().getId();
152
		final String idContributeur = propositionDetermination.getContributeur().getId();
136
		if (idContributeur != null && !idContributeur.equals("0")) {
153
		if (idContributeur != null && !idContributeur.equals("0")) {
137
			vue.ajouterLienAuteur();
154
			vue.ajouterLienAuteur();
138
			vue.getAuteur().addClickHandler(new ClickHandler() {
155
			vue.getAuteur().addClickHandler(new ClickHandler() {
Line 143... Line 160...
143
				}
160
				}
144
			});
161
			});
145
		}
162
		}
146
	}
163
	}
Line -... Line 164...
-
 
164
 
-
 
165
	private void gererAffichageBoutonValidationTaxon(final PropositionDetermination cetteProposition) {
-
 
166
		if (doitAfficherBoutonValidation(cetteProposition)) {
-
 
167
			vue.afficherBoutonValidationTaxon();	
-
 
168
			if(validationTaxonHandler != null) {
-
 
169
				validationTaxonHandler.removeHandler();
-
 
170
			}
-
 
171
			validationTaxonHandler = vue.getBoutonValidationTaxon().addClickHandler(new ClickHandler() {			
-
 
172
				@Override
-
 
173
				public void onClick(ClickEvent event) {
-
 
174
					if (Window.confirm(I18n.getVocabulary().confirmationValidationDetermination())) {
-
 
175
						validerProposition(cetteProposition);
-
 
176
					}
-
 
177
				}
-
 
178
			});
-
 
179
		} else {
-
 
180
			vue.cacherBoutonValidationTaxon();
-
 
181
		}
-
 
182
	}
147
 
183
 
148
	private void ajouterCommentaire(Commentaire proposition) {
184
	private void ajouterCommentaire(Commentaire proposition) {
149
		ArbreCommentairePresenteur arbreCommentairePresenteur = new ArbreCommentairePresenteur(new ArbreCommentaireVue(), proposition);
185
		ArbreCommentairePresenteur arbreCommentairePresenteur = new ArbreCommentairePresenteur(new ArbreCommentaireVue(), proposition);
150
		vue.ajouterInterventionCommentaire(proposition, arbreCommentairePresenteur.getArbreCommentaireVue());
186
		vue.ajouterInterventionCommentaire(proposition, arbreCommentairePresenteur.getArbreCommentaireVue());
Line 238... Line 274...
238
				if(overlay != null && overlay.fenetreModaleEstOuverte()) {
274
				if(overlay != null && overlay.fenetreModaleEstOuverte()) {
239
					overlay.fermerFenetreModale();
275
					overlay.fermerFenetreModale();
240
				}
276
				}
241
			}
277
			}
242
		});
278
		});
-
 
279
		
-
 
280
		BusEvenementiel.getInstance().addHandler(EvenementChangementEtatUtilisateur.TYPE, new GestionnaireEvenementChangementEtatUtilisateur() {
-
 
281
			@Override
-
 
282
			public void onModificationEtatUtilisateur(EvenementChangementEtatUtilisateur evenementChangementEtatUtilisateur) {
-
 
283
				if (interventionForum instanceof PropositionDetermination) {
-
 
284
					gererAffichageBoutonValidationTaxon((PropositionDetermination)interventionForum);
-
 
285
				}
-
 
286
			}
-
 
287
		});
243
	}
288
	}
Line 244... Line 289...
244
	
289
	
245
	private boolean peutSupprimerIntervention() {
290
	private boolean peutSupprimerIntervention() {
246
		return (!interventionForum.aDesCommentaires() && interventionForum.getContributeur() != null && interventionForum.getContributeur().getId().equals(CacheClient.getInstance().getUtilisateur().getId()));
291
		return (!interventionForum.aDesCommentaires() && interventionForum.getContributeur() != null && interventionForum.getContributeur().getId().equals(CacheClient.getInstance().getUtilisateur().getId()));
Line 265... Line 310...
265
					BusEvenementiel.getInstance().fireEvent(new EvenementSuppressionCommentaire((Commentaire)interventionForum));
310
					BusEvenementiel.getInstance().fireEvent(new EvenementSuppressionCommentaire((Commentaire)interventionForum));
266
				}
311
				}
267
			});
312
			});
268
		}
313
		}
269
	}
314
	}
-
 
315
	
-
 
316
	private boolean doitAfficherBoutonValidation(PropositionDetermination propositionDetermination) {		
-
 
317
		boolean estPropositionRetenue = propositionDetermination.estPropositionRetenue();
-
 
318
		String numNomProp = propositionDetermination.getNumNomenclatural();
-
 
319
		String referentielProp = propositionDetermination.getReferentiel();
-
 
320
		
-
 
321
		boolean aUnNumNom = (numNomProp != null && !numNomProp.trim().equals("") && !numNomProp.trim().equals("0"));
-
 
322
		boolean aUnReferentiel = (referentielProp != null && !referentielProp.trim().equals("") && !referentielProp.trim().equals("0"));
-
 
323
		
-
 
324
		Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
-
 
325
		boolean estAuteurObservation = false;
-
 
326
		if(utilisateur != null) {
-
 
327
			estAuteurObservation = utilisateur.estIdentifie() && utilisateur.getId().equals(CacheClient.getInstance().getObservationCourante().getIdAuteur());
-
 
328
		}
-
 
329
		boolean peutValiderObservation = ModerationUtils.utilisateurPeutValiderObservation(CacheClient.getInstance().getUtilisateur(), CacheClient.getInstance().getObservationCourante());
-
 
330
		return (peutValiderObservation || estAuteurObservation) && aUnReferentiel && aUnNumNom && !estPropositionRetenue;
-
 
331
	}
-
 
332
	
-
 
333
	private void validerProposition(PropositionDetermination propositionDetermination) {
-
 
334
		final PropositionDetermination cetteProposition = propositionDetermination;
-
 
335
		PropositionDeterminationServiceConcret propositionService = new PropositionDeterminationServiceConcret();
-
 
336
		propositionDetermination.setValideePar(CacheClient.getInstance().getUtilisateur().getId());
-
 
337
		propositionService.validerProposition(propositionDetermination, new ValidationPropositionCallback() {
-
 
338
			@Override
-
 
339
			public void surRetour(String objetRetour) {
-
 
340
				BusEvenementiel.getInstance().fireEvent(new EvenementValidationPropositionDetermination(cetteProposition));
-
 
341
			}
-
 
342
		});
-
 
343
	}
270
}
344
}