Subversion Repositories eFlore/Applications.del

Rev

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

Rev 1015 Rev 1104
1
package org.tela_botanica.del.client.vues.plateformedetermination.forum.interventions;
1
package org.tela_botanica.del.client.vues.plateformedetermination.forum.interventions;
2
 
2
 
3
import org.tela_botanica.del.client.cache.CacheClient;
3
import org.tela_botanica.del.client.cache.CacheClient;
4
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue;
4
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue;
5
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur;
5
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur;
6
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentairePresenteur;
6
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentairePresenteur;
7
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentaireVue;
7
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentaireVue;
8
import org.tela_botanica.del.client.composants.votes.barrerepartition.BarreRepartitionVotePresenteur;
8
import org.tela_botanica.del.client.composants.votes.barrerepartition.BarreRepartitionVotePresenteur;
9
import org.tela_botanica.del.client.composants.votes.barrerepartition.BarreRepartitionVoteVue;
9
import org.tela_botanica.del.client.composants.votes.barrerepartition.BarreRepartitionVoteVue;
-
 
10
import org.tela_botanica.del.client.config.Config;
10
import org.tela_botanica.del.client.i18n.I18n;
11
import org.tela_botanica.del.client.i18n.I18n;
11
import org.tela_botanica.del.client.modeles.Commentaire;
12
import org.tela_botanica.del.client.modeles.Commentaire;
12
import org.tela_botanica.del.client.modeles.InterventionForum;
13
import org.tela_botanica.del.client.modeles.InterventionForum;
13
import org.tela_botanica.del.client.modeles.MoyenneVote;
14
import org.tela_botanica.del.client.modeles.MoyenneVote;
14
import org.tela_botanica.del.client.modeles.PropositionDetermination;
15
import org.tela_botanica.del.client.modeles.PropositionDetermination;
15
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
16
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
16
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.EvenementAjoutCommentaire;
17
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.EvenementAjoutCommentaire;
17
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.GestionnaireEvenementAjoutCommentaire;
18
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.GestionnaireEvenementAjoutCommentaire;
18
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination;
19
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination;
19
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.GestionnaireEvenementAjoutDetermination;
20
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.GestionnaireEvenementAjoutDetermination;
20
import org.tela_botanica.del.client.navigation.evenement.suppressioncommentaire.EvenementSuppressionCommentaire;
21
import org.tela_botanica.del.client.navigation.evenement.suppressioncommentaire.EvenementSuppressionCommentaire;
21
import org.tela_botanica.del.client.navigation.evenement.suppressiondetermination.EvenementSuppressionDetermination;
22
import org.tela_botanica.del.client.navigation.evenement.suppressiondetermination.EvenementSuppressionDetermination;
22
import org.tela_botanica.del.client.services.CalculVoteDeterminationService;
23
import org.tela_botanica.del.client.services.CalculVoteDeterminationService;
23
import org.tela_botanica.del.client.services.rest.CommentaireService;
24
import org.tela_botanica.del.client.services.rest.CommentaireService;
24
import org.tela_botanica.del.client.services.rest.CommentaireServiceConcret;
25
import org.tela_botanica.del.client.services.rest.CommentaireServiceConcret;
25
import org.tela_botanica.del.client.services.rest.PropositionDeterminationService;
26
import org.tela_botanica.del.client.services.rest.PropositionDeterminationService;
26
import org.tela_botanica.del.client.services.rest.VoteDeterminationServiceConcret;
27
import org.tela_botanica.del.client.services.rest.VoteDeterminationServiceConcret;
27
import org.tela_botanica.del.client.services.rest.async.SuppressionCommentaireCallback;
28
import org.tela_botanica.del.client.services.rest.async.SuppressionCommentaireCallback;
28
import org.tela_botanica.del.client.services.rest.async.SuppressionPropositionDeterminationCallback;
29
import org.tela_botanica.del.client.services.rest.async.SuppressionPropositionDeterminationCallback;
29
import org.tela_botanica.del.client.vues.plateformedetermination.forum.ArbreCommentairePresenteur;
30
import org.tela_botanica.del.client.vues.plateformedetermination.forum.ArbreCommentairePresenteur;
30
import org.tela_botanica.del.client.vues.plateformedetermination.forum.ArbreCommentaireVue;
31
import org.tela_botanica.del.client.vues.plateformedetermination.forum.ArbreCommentaireVue;
31
 
32
 
32
import com.google.gwt.event.dom.client.ClickEvent;
33
import com.google.gwt.event.dom.client.ClickEvent;
33
import com.google.gwt.event.dom.client.ClickHandler;
34
import com.google.gwt.event.dom.client.ClickHandler;
34
import com.google.gwt.event.dom.client.HasClickHandlers;
35
import com.google.gwt.event.dom.client.HasClickHandlers;
35
import com.google.gwt.event.dom.client.HasMouseOutHandlers;
36
import com.google.gwt.event.dom.client.HasMouseOutHandlers;
36
import com.google.gwt.event.dom.client.HasMouseOverHandlers;
37
import com.google.gwt.event.dom.client.HasMouseOverHandlers;
37
import com.google.gwt.event.dom.client.MouseOutEvent;
38
import com.google.gwt.event.dom.client.MouseOutEvent;
38
import com.google.gwt.event.dom.client.MouseOutHandler;
39
import com.google.gwt.event.dom.client.MouseOutHandler;
39
import com.google.gwt.event.dom.client.MouseOverEvent;
40
import com.google.gwt.event.dom.client.MouseOverEvent;
40
import com.google.gwt.event.dom.client.MouseOverHandler;
41
import com.google.gwt.event.dom.client.MouseOverHandler;
41
import com.google.gwt.user.client.Window;
42
import com.google.gwt.user.client.Window;
42
import com.google.gwt.user.client.ui.HasWidgets;
43
import com.google.gwt.user.client.ui.HasWidgets;
43
import com.google.gwt.user.client.ui.IsWidget;
44
import com.google.gwt.user.client.ui.IsWidget;
44
 
45
 
45
public class ForumInterventionPresenteur {
46
public class ForumInterventionPresenteur {
46
 
47
 
47
	public interface Vue extends IsWidget {
48
	public interface Vue extends IsWidget {
48
		void ajouterInterventionDetermination(PropositionDetermination determination, IsWidget barreRepartition, IsWidget arbreCommentaires);
49
		void ajouterInterventionDetermination(PropositionDetermination determination, IsWidget barreRepartition, IsWidget arbreCommentaires);
49
		void ajouterInterventionCommentaire(Commentaire commentaire, IsWidget arbreCommentaires);
50
		void ajouterInterventionCommentaire(Commentaire commentaire, IsWidget arbreCommentaires);
50
		HasClickHandlers getRepondre();
51
		HasClickHandlers getRepondre();
51
		HasWidgets getEnfants();
52
		HasWidgets getEnfants();
52
		HasClickHandlers getLienSuppression();
53
		HasClickHandlers getLienSuppression();
53
		void afficherLienSuppression();
54
		void afficherLienSuppression();
54
		void cacherLienSuppression();
55
		void cacherLienSuppression();
55
		HasMouseOverHandlers getConteneurInterventionMouseOver();
56
		HasMouseOverHandlers getConteneurInterventionMouseOver();
56
		HasMouseOutHandlers getConteneurInterventionMouseOut();
57
		HasMouseOutHandlers getConteneurInterventionMouseOut();
-
 
58
		HasClickHandlers getEspece();
-
 
59
		void ajouterLienEspece();
-
 
60
		HasClickHandlers getAuteur();
-
 
61
		void ajouterLienAuteur();
57
	}
62
	}
58
 
63
 
59
	private Vue vue;
64
	private Vue vue;
60
 
65
 
61
	private InterventionForum interventionForum;
66
	private InterventionForum interventionForum;
62
	
67
	
63
	private CommentaireService commentaireService;
68
	private CommentaireService commentaireService;
64
	
69
	
65
	private PropositionDeterminationService propositionDeterminationService;
70
	private PropositionDeterminationService propositionDeterminationService;
66
	
71
	
67
	private FenetreOverlaySimplePresenteur overlay;
72
	private FenetreOverlaySimplePresenteur overlay;
68
 
73
 
69
	public ForumInterventionPresenteur(Vue vue, InterventionForum interventionForum, CommentaireService commentaireService, PropositionDeterminationService propositionDeterminationService) {
74
	public ForumInterventionPresenteur(Vue vue, InterventionForum interventionForum, CommentaireService commentaireService, PropositionDeterminationService propositionDeterminationService) {
70
		this.vue = vue;
75
		this.vue = vue;
71
		this.interventionForum = interventionForum;
76
		this.interventionForum = interventionForum;
72
		this.commentaireService = commentaireService;
77
		this.commentaireService = commentaireService;
73
		this.propositionDeterminationService = propositionDeterminationService;
78
		this.propositionDeterminationService = propositionDeterminationService;
74
	}
79
	}
75
 
80
 
76
	public void go(HasWidgets composite) {
81
	public void go(HasWidgets composite) {
77
		chargerIntervention();
82
		chargerIntervention();
78
		composite.add(vue.asWidget());
83
		composite.add(vue.asWidget());
79
		gererEvenements();
84
		gererEvenements();
80
	}
85
	}
81
	
86
	
82
	public void ajouterEnfant(ForumInterventionPresenteur presenteur) {
87
	public void ajouterEnfant(ForumInterventionPresenteur presenteur) {
83
		presenteur.go(vue.getEnfants());
88
		presenteur.go(vue.getEnfants());
84
	}
89
	}
85
 
90
 
86
	private void chargerIntervention() {
91
	private void chargerIntervention() {
87
		if (interventionForum instanceof PropositionDetermination) {
92
		if (interventionForum instanceof PropositionDetermination) {
88
			ajouterPropositionDetermination((PropositionDetermination) interventionForum);
93
			ajouterPropositionDetermination((PropositionDetermination) interventionForum);
89
		} else if (interventionForum instanceof Commentaire) {
94
		} else if (interventionForum instanceof Commentaire) {
90
			ajouterCommentaire((Commentaire) interventionForum);
95
			ajouterCommentaire((Commentaire) interventionForum);
91
		}
96
		}
92
	}
97
	}
93
 
98
 
94
	private void ajouterPropositionDetermination(PropositionDetermination propositionDetermination) {
99
	private void ajouterPropositionDetermination(PropositionDetermination propositionDetermination) {
95
		BarreRepartitionVotePresenteur barreRepartitionVotePresenteur = new BarreRepartitionVotePresenteur(new BarreRepartitionVoteVue(), new VoteDeterminationServiceConcret());
100
		BarreRepartitionVotePresenteur barreRepartitionVotePresenteur = new BarreRepartitionVotePresenteur(new BarreRepartitionVoteVue(), new VoteDeterminationServiceConcret());
96
		barreRepartitionVotePresenteur.toggleNomEspece();
101
		barreRepartitionVotePresenteur.toggleNomEspece();
97
		calculerEtAfficherVoteDetermination(barreRepartitionVotePresenteur, propositionDetermination);
102
		calculerEtAfficherVoteDetermination(barreRepartitionVotePresenteur, propositionDetermination);
98
		ArbreCommentairePresenteur arbreCommentairePresenteur = new ArbreCommentairePresenteur(new ArbreCommentaireVue(), propositionDetermination);
103
		ArbreCommentairePresenteur arbreCommentairePresenteur = new ArbreCommentairePresenteur(new ArbreCommentaireVue(), propositionDetermination);
99
		vue.ajouterInterventionDetermination(propositionDetermination, barreRepartitionVotePresenteur.getBarreRepartitionVoteVue(), arbreCommentairePresenteur.getArbreCommentaireVue());
104
		vue.ajouterInterventionDetermination(propositionDetermination, barreRepartitionVotePresenteur.getBarreRepartitionVoteVue(), arbreCommentairePresenteur.getArbreCommentaireVue());
-
 
105
		
-
 
106
		final String nn = propositionDetermination.getNumNomenclatural();
-
 
107
		if (nn != null) {
-
 
108
			vue.ajouterLienEspece();
-
 
109
			vue.getEspece().addClickHandler(new ClickHandler() {
-
 
110
				
-
 
111
				@Override
-
 
112
				public void onClick(ClickEvent event) {
-
 
113
					Config config = new Config();
-
 
114
					Window.open(config.getUrl("efloreTaxon") + nn, "Fiche eflore", null);
-
 
115
				}
-
 
116
			});
-
 
117
		}
-
 
118
		
-
 
119
		final String idContributeur = propositionDetermination.getContributeur().getId();
-
 
120
		if (idContributeur != null) {
-
 
121
			vue.ajouterLienAuteur();
-
 
122
			vue.getAuteur().addClickHandler(new ClickHandler() {
-
 
123
				@Override
-
 
124
				public void onClick(ClickEvent event) {
-
 
125
					Config config = new Config();
-
 
126
					Window.open(config.getUrl("annuaire") + idContributeur, "Consultation de l'annuaire", null);
-
 
127
				}
-
 
128
			});
-
 
129
		}
100
	}
130
	}
101
 
131
 
102
	private void ajouterCommentaire(Commentaire proposition) {
132
	private void ajouterCommentaire(Commentaire proposition) {
103
		ArbreCommentairePresenteur arbreCommentairePresenteur = new ArbreCommentairePresenteur(new ArbreCommentaireVue(), proposition);
133
		ArbreCommentairePresenteur arbreCommentairePresenteur = new ArbreCommentairePresenteur(new ArbreCommentaireVue(), proposition);
104
		vue.ajouterInterventionCommentaire(proposition, arbreCommentairePresenteur.getArbreCommentaireVue());
134
		vue.ajouterInterventionCommentaire(proposition, arbreCommentairePresenteur.getArbreCommentaireVue());
105
	}
135
	}
106
 
136
 
107
	private void calculerEtAfficherVoteDetermination(BarreRepartitionVotePresenteur barreRepartitionVotePresenteur, PropositionDetermination propositionDetermination) {
137
	private void calculerEtAfficherVoteDetermination(BarreRepartitionVotePresenteur barreRepartitionVotePresenteur, PropositionDetermination propositionDetermination) {
108
		MoyenneVote votes = CalculVoteDeterminationService.calculerVoteDetermination(propositionDetermination);
138
		MoyenneVote votes = CalculVoteDeterminationService.calculerVoteDetermination(propositionDetermination);
109
		barreRepartitionVotePresenteur.afficherVotes(votes);
139
		barreRepartitionVotePresenteur.afficherVotes(votes);
110
	}
140
	}
111
	
141
	
112
	private void gererEvenements() {
142
	private void gererEvenements() {
113
		vue.getRepondre().addClickHandler(new ClickHandler() {
143
		vue.getRepondre().addClickHandler(new ClickHandler() {
114
			@Override
144
			@Override
115
			public void onClick(ClickEvent event) {
145
			public void onClick(ClickEvent event) {
116
				FormulaireCommentairePresenteur commentairePresenteur = new FormulaireCommentairePresenteur(interventionForum, new CommentaireServiceConcret(), new FormulaireCommentaireVue());
146
				FormulaireCommentairePresenteur commentairePresenteur = new FormulaireCommentairePresenteur(interventionForum, new CommentaireServiceConcret(), new FormulaireCommentaireVue());
117
				overlay = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue());
147
				overlay = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue());
118
				overlay.ouvrirFenetreModale(commentairePresenteur);
148
				overlay.ouvrirFenetreModale(commentairePresenteur);
119
			}
149
			}
120
		});
150
		});
121
		
151
		
122
		vue.getConteneurInterventionMouseOver().addMouseOverHandler(new MouseOverHandler() {		
152
		vue.getConteneurInterventionMouseOver().addMouseOverHandler(new MouseOverHandler() {		
123
			@Override
153
			@Override
124
			public void onMouseOver(MouseOverEvent event) {
154
			public void onMouseOver(MouseOverEvent event) {
125
				if(peutSupprimerIntervention()) {
155
				if(peutSupprimerIntervention()) {
126
					vue.afficherLienSuppression();
156
					vue.afficherLienSuppression();
127
				}
157
				}
128
			}
158
			}
129
		});
159
		});
130
		
160
		
131
		vue.getConteneurInterventionMouseOut().addMouseOutHandler(new MouseOutHandler() {
161
		vue.getConteneurInterventionMouseOut().addMouseOutHandler(new MouseOutHandler() {
132
			@Override
162
			@Override
133
			public void onMouseOut(MouseOutEvent event) {
163
			public void onMouseOut(MouseOutEvent event) {
134
				if(peutSupprimerIntervention()) {
164
				if(peutSupprimerIntervention()) {
135
					vue.cacherLienSuppression();
165
					vue.cacherLienSuppression();
136
				}
166
				}
137
			}		
167
			}		
138
		});
168
		});
139
 
169
 
140
		vue.getLienSuppression().addClickHandler(new ClickHandler() {		
170
		vue.getLienSuppression().addClickHandler(new ClickHandler() {		
141
			@Override
171
			@Override
142
			public void onClick(ClickEvent event) {
172
			public void onClick(ClickEvent event) {
143
				
173
				
144
				String message = "";
174
				String message = "";
145
				if (interventionForum instanceof PropositionDetermination) {
175
				if (interventionForum instanceof PropositionDetermination) {
146
					message = I18n.getVocabulary().confirmationSuppressionDetermination();
176
					message = I18n.getVocabulary().confirmationSuppressionDetermination();
147
				} else if (interventionForum instanceof Commentaire) {
177
				} else if (interventionForum instanceof Commentaire) {
148
					message = I18n.getVocabulary().confirmationSuppressionCommentaire();
178
					message = I18n.getVocabulary().confirmationSuppressionCommentaire();
149
				}
179
				}
150
				
180
				
151
				if(Window.confirm(message)) {
181
				if(Window.confirm(message)) {
152
					supprimerIntervention();
182
					supprimerIntervention();
153
				}
183
				}
154
			}
184
			}
155
		});
185
		});
156
		vue.cacherLienSuppression();
186
		vue.cacherLienSuppression();
157
		
187
		
158
		BusEvenementiel.getInstance().addHandler(EvenementAjoutDetermination.TYPE, new GestionnaireEvenementAjoutDetermination() {
188
		BusEvenementiel.getInstance().addHandler(EvenementAjoutDetermination.TYPE, new GestionnaireEvenementAjoutDetermination() {
159
			@Override
189
			@Override
160
			public void onAjoutDetermination(EvenementAjoutDetermination event) {
190
			public void onAjoutDetermination(EvenementAjoutDetermination event) {
161
				if(overlay != null && overlay.fenetreModaleEstOuverte()) {
191
				if(overlay != null && overlay.fenetreModaleEstOuverte()) {
162
					overlay.fermerFenetreModale();
192
					overlay.fermerFenetreModale();
163
				}
193
				}
164
			}
194
			}
165
		});
195
		});
166
 
196
 
167
		BusEvenementiel.getInstance().addHandler(EvenementAjoutCommentaire.TYPE, new GestionnaireEvenementAjoutCommentaire() {
197
		BusEvenementiel.getInstance().addHandler(EvenementAjoutCommentaire.TYPE, new GestionnaireEvenementAjoutCommentaire() {
168
			@Override
198
			@Override
169
			public void onAjoutCommentaire(EvenementAjoutCommentaire event) {
199
			public void onAjoutCommentaire(EvenementAjoutCommentaire event) {
170
				if(overlay != null && overlay.fenetreModaleEstOuverte()) {
200
				if(overlay != null && overlay.fenetreModaleEstOuverte()) {
171
					overlay.fermerFenetreModale();
201
					overlay.fermerFenetreModale();
172
				}
202
				}
173
			}
203
			}
174
		});
204
		});
175
	}
205
	}
176
	
206
	
177
	private boolean peutSupprimerIntervention() {
207
	private boolean peutSupprimerIntervention() {
178
		return (!interventionForum.aDesCommentaires() && interventionForum.getContributeur() != null && interventionForum.getContributeur().getId().equals(CacheClient.getInstance().getUtilisateur().getId()));
208
		return (!interventionForum.aDesCommentaires() && interventionForum.getContributeur() != null && interventionForum.getContributeur().getId().equals(CacheClient.getInstance().getUtilisateur().getId()));
179
	}
209
	}
180
	
210
	
181
	private void supprimerIntervention() {
211
	private void supprimerIntervention() {
182
		if(interventionForum instanceof PropositionDetermination) {
212
		if(interventionForum instanceof PropositionDetermination) {
183
			propositionDeterminationService.supprimerProposition((PropositionDetermination)interventionForum, new SuppressionPropositionDeterminationCallback() {	
213
			propositionDeterminationService.supprimerProposition((PropositionDetermination)interventionForum, new SuppressionPropositionDeterminationCallback() {	
184
				@Override
214
				@Override
185
				public void surRetour(String objetRetour) {
215
				public void surRetour(String objetRetour) {
186
					CacheClient.getInstance().getObservationCourante().supprimerIntervention(interventionForum);
216
					CacheClient.getInstance().getObservationCourante().supprimerIntervention(interventionForum);
187
					BusEvenementiel.getInstance().fireEvent(new EvenementSuppressionDetermination((PropositionDetermination)interventionForum));
217
					BusEvenementiel.getInstance().fireEvent(new EvenementSuppressionDetermination((PropositionDetermination)interventionForum));
188
				}
218
				}
189
			});
219
			});
190
		}
220
		}
191
		
221
		
192
		if(interventionForum instanceof Commentaire) {
222
		if(interventionForum instanceof Commentaire) {
193
			commentaireService.supprimerCommentaire((Commentaire)interventionForum, new SuppressionCommentaireCallback() {			
223
			commentaireService.supprimerCommentaire((Commentaire)interventionForum, new SuppressionCommentaireCallback() {			
194
				@Override
224
				@Override
195
				public void surRetour(String objetRetour) {
225
				public void surRetour(String objetRetour) {
196
					CacheClient.getInstance().getObservationCourante().supprimerIntervention(interventionForum);
226
					CacheClient.getInstance().getObservationCourante().supprimerIntervention(interventionForum);
197
					BusEvenementiel.getInstance().fireEvent(new EvenementSuppressionCommentaire((Commentaire)interventionForum));
227
					BusEvenementiel.getInstance().fireEvent(new EvenementSuppressionCommentaire((Commentaire)interventionForum));
198
				}
228
				}
199
			});
229
			});
200
		}
230
		}
201
	}
231
	}
202
}
232
}