Subversion Repositories eFlore/Applications.del

Rev

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

Rev 1687 Rev 1689
1
package org.tela_botanica.del.client.vues.identiplante.plateformedetermination;
1
package org.tela_botanica.del.client.vues.identiplante.plateformedetermination;
2
 
2
 
3
import java.util.List;
3
import java.util.List;
4
 
4
 
5
import org.tela_botanica.del.client.cache.CacheClient;
5
import org.tela_botanica.del.client.cache.CacheClient;
6
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue;
6
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue;
7
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur;
7
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur;
8
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentairePresenteur;
8
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentairePresenteur;
9
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentaireVue;
9
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentaireVue;
10
import org.tela_botanica.del.client.composants.formulaires.formulaireproposition.FormulairePropositionPresenteur;
10
import org.tela_botanica.del.client.composants.formulaires.formulaireproposition.FormulairePropositionPresenteur;
11
import org.tela_botanica.del.client.composants.formulaires.formulaireproposition.FormulairePropositionVue;
11
import org.tela_botanica.del.client.composants.formulaires.formulaireproposition.FormulairePropositionVue;
12
import org.tela_botanica.del.client.composants.metadonnees.MetadonneesEnLigneVue;
12
import org.tela_botanica.del.client.composants.metadonnees.MetadonneesEnLigneVue;
13
import org.tela_botanica.del.client.composants.metadonnees.MetadonneesPresenteur;
13
import org.tela_botanica.del.client.composants.metadonnees.MetadonneesPresenteur;
14
import org.tela_botanica.del.client.composants.observations.ObservationImagesPresenteur;
14
import org.tela_botanica.del.client.composants.observations.ObservationImagesPresenteur;
15
import org.tela_botanica.del.client.composants.observations.ObservationImagesVue;
15
import org.tela_botanica.del.client.composants.observations.ObservationImagesVue;
16
import org.tela_botanica.del.client.composants.partageurl.PartageUrlPresenteur;
16
import org.tela_botanica.del.client.composants.partageurl.PartageUrlPresenteur;
17
import org.tela_botanica.del.client.composants.partageurl.PartageUrlVue;
17
import org.tela_botanica.del.client.composants.partageurl.PartageUrlVue;
18
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
18
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
19
import org.tela_botanica.del.client.composants.rss.RssPresenteur;
19
import org.tela_botanica.del.client.composants.rss.RssPresenteur;
20
import org.tela_botanica.del.client.composants.rss.RssVue;
20
import org.tela_botanica.del.client.composants.rss.RssVue;
21
import org.tela_botanica.del.client.config.Config;
21
import org.tela_botanica.del.client.config.Config;
22
import org.tela_botanica.del.client.gestionhistorique.ConstantesNavigation;
22
import org.tela_botanica.del.client.gestionhistorique.ConstantesNavigation;
23
import org.tela_botanica.del.client.i18n.I18n;
23
import org.tela_botanica.del.client.i18n.I18n;
24
import org.tela_botanica.del.client.modeles.Image;
24
import org.tela_botanica.del.client.modeles.Image;
25
import org.tela_botanica.del.client.modeles.ModeRecherche;
25
import org.tela_botanica.del.client.modeles.ModeRecherche;
26
import org.tela_botanica.del.client.modeles.MoyenneVote;
26
import org.tela_botanica.del.client.modeles.MoyenneVote;
27
import org.tela_botanica.del.client.modeles.Observation;
27
import org.tela_botanica.del.client.modeles.Observation;
28
import org.tela_botanica.del.client.modeles.ObservationServiceResultat;
28
import org.tela_botanica.del.client.modeles.ObservationServiceResultat;
29
import org.tela_botanica.del.client.modeles.PropositionDetermination;
29
import org.tela_botanica.del.client.modeles.PropositionDetermination;
30
import org.tela_botanica.del.client.modeles.Utilisateur;
30
import org.tela_botanica.del.client.modeles.Utilisateur;
31
import org.tela_botanica.del.client.modeles.VoteDetermination;
31
import org.tela_botanica.del.client.modeles.VoteDetermination;
32
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
32
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
33
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.EvenementAjoutCommentaire;
33
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.EvenementAjoutCommentaire;
34
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.GestionnaireEvenementAjoutCommentaire;
34
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.GestionnaireEvenementAjoutCommentaire;
35
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination;
35
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination;
36
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.GestionnaireEvenementAjoutDetermination;
36
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.GestionnaireEvenementAjoutDetermination;
37
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.EvenementChangementEtatUtilisateur;
37
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.EvenementChangementEtatUtilisateur;
38
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.GestionnaireEvenementChangementEtatUtilisateur;
38
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.GestionnaireEvenementChangementEtatUtilisateur;
39
import org.tela_botanica.del.client.navigation.evenement.changementimagevalidation.EvenementChangementImageValidation;
39
import org.tela_botanica.del.client.navigation.evenement.changementimagevalidation.EvenementChangementImageValidation;
40
import org.tela_botanica.del.client.navigation.evenement.changementimagevalidation.GestionnaireEvenementChangementImageValidation;
40
import org.tela_botanica.del.client.navigation.evenement.changementimagevalidation.GestionnaireEvenementChangementImageValidation;
-
 
41
import org.tela_botanica.del.client.navigation.evenement.depublierObs.EvenementDepublierObs;
-
 
42
import org.tela_botanica.del.client.navigation.evenement.depublierObs.GestionnaireEvenementDepublierObs;
-
 
43
import org.tela_botanica.del.client.navigation.evenement.supprimerImage.EvenementSupprimerImage;
41
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.EvenementVoteDetermination;
44
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.EvenementVoteDetermination;
42
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.GestionnaireEvenementVoteDetermination;
45
import org.tela_botanica.del.client.navigation.evenement.voteDetermination.GestionnaireEvenementVoteDetermination;
43
import org.tela_botanica.del.client.services.CalculVoteDeterminationService;
46
import org.tela_botanica.del.client.services.CalculVoteDeterminationService;
44
import org.tela_botanica.del.client.services.rest.CommentaireServiceConcret;
47
import org.tela_botanica.del.client.services.rest.CommentaireServiceConcret;
45
import org.tela_botanica.del.client.services.rest.ObservationService;
48
import org.tela_botanica.del.client.services.rest.ObservationService;
46
import org.tela_botanica.del.client.services.rest.PropositionDeterminationServiceConcret;
49
import org.tela_botanica.del.client.services.rest.PropositionDeterminationServiceConcret;
-
 
50
import org.tela_botanica.del.client.services.rest.async.DepublicationObservationCallBack;
47
import org.tela_botanica.del.client.services.rest.async.ObservationsCallback;
51
import org.tela_botanica.del.client.services.rest.async.ObservationsCallback;
-
 
52
import org.tela_botanica.del.client.services.rest.async.SuppressionImageCallback;
48
import org.tela_botanica.del.client.services.rest.async.ValidationPropositionCallback;
53
import org.tela_botanica.del.client.services.rest.async.ValidationPropositionCallback;
49
import org.tela_botanica.del.client.utils.URLUtils;
54
import org.tela_botanica.del.client.utils.URLUtils;
-
 
55
import org.tela_botanica.del.client.navigation.evenement.rechercheobservation.EvenementRechercheObservation;
50
import org.tela_botanica.del.client.composants.formulairerechercheeflore.FormulaireRechercheEflorePresenteur;
56
import org.tela_botanica.del.client.composants.formulairerechercheeflore.FormulaireRechercheEflorePresenteur;
51
import org.tela_botanica.del.client.composants.forum.ForumPresenteur;
57
import org.tela_botanica.del.client.composants.forum.ForumPresenteur;
52
import org.tela_botanica.del.client.composants.forum.ForumVue;
58
import org.tela_botanica.del.client.composants.forum.ForumVue;
-
 
59
 
53
 
60
import com.google.gwt.core.shared.GWT;
54
import com.google.gwt.event.dom.client.ClickEvent;
61
import com.google.gwt.event.dom.client.ClickEvent;
55
import com.google.gwt.event.dom.client.ClickHandler;
62
import com.google.gwt.event.dom.client.ClickHandler;
56
import com.google.gwt.event.dom.client.HasClickHandlers;
63
import com.google.gwt.event.dom.client.HasClickHandlers;
57
import com.google.gwt.user.client.Window;
64
import com.google.gwt.user.client.Window;
58
import com.google.gwt.user.client.ui.Button;
65
import com.google.gwt.user.client.ui.Button;
59
import com.google.gwt.user.client.ui.HasWidgets;
66
import com.google.gwt.user.client.ui.HasWidgets;
60
import com.google.gwt.user.client.ui.IsWidget;
67
import com.google.gwt.user.client.ui.IsWidget;
61
import com.google.gwt.user.client.ui.Panel;
68
import com.google.gwt.user.client.ui.Panel;
62
 
69
 
63
public class IdentiplanteDeterminationPresenteur extends Presenteur {
70
public class IdentiplanteDeterminationPresenteur extends Presenteur {
64
 
71
 
65
	/**
72
	/**
66
	 * Vue de l'interface de détermination
73
	 * Vue de l'interface de détermination
67
	 * */
74
	 * */
68
	public interface Vue extends IsWidget {
75
	public interface Vue extends IsWidget {
69
		public Panel getForum();
76
		public Panel getForum();
70
 
77
 
71
		public Panel getDetailImageObservation();
78
		public Panel getDetailImageObservation();
72
 
79
 
73
		public Panel getFormulaireRechercheEflore();
80
		public Panel getFormulaireRechercheEflore();
74
 
81
 
75
		public Button getBoutonAjoutProposition();
82
		public Button getBoutonAjoutProposition();
76
 
83
 
77
		public Button getBoutonAjoutCommentaire();
84
		public Button getBoutonAjoutCommentaire();
78
 
85
 
79
		public Button getBoutonAjoutPropositionBas();
86
		public Button getBoutonAjoutPropositionBas();
80
 
87
 
81
		public Button getBoutonAjoutCommentaireBas();
88
		public Button getBoutonAjoutCommentaireBas();
-
 
89
		
-
 
90
		public HasClickHandlers getBoutonDepublierObs();
82
 
91
 
83
		public HasWidgets getMetadonnees();
92
		public HasWidgets getMetadonnees();
84
 
93
 
85
		public void afficherNomTaxonProbable(String nomTaxon);
94
		public void afficherNomTaxonProbable(String nomTaxon);
86
		
95
		
87
		public HasClickHandlers getLienOuvrages();
96
		public HasClickHandlers getLienOuvrages();
88
		
97
		
89
		public HasClickHandlers getLienBonnier();
98
		public HasClickHandlers getLienBonnier();
90
		
99
		
91
		public HasClickHandlers getLienCles();
100
		public HasClickHandlers getLienCles();
92
		
101
		
93
		public HasClickHandlers getLienEflore();
102
		public HasClickHandlers getLienEflore();
94
	
103
	
95
		public HasWidgets getZoneRss();
104
		public HasWidgets getZoneRss();
96
 
105
 
97
		HasClickHandlers getBoutonValidationTaxon();
106
		HasClickHandlers getBoutonValidationTaxon();
98
 
107
 
99
		void cacherBoutonValidationTaxon();
108
		void cacherBoutonValidationTaxon();
100
 
109
 
101
		void afficherBoutonValidationTaxon();
110
		void afficherBoutonValidationTaxon();
102
 
111
 
103
		public void viderMetadonnees();
112
		public void viderMetadonnees();
104
	}
113
	}
-
 
114
 
105
 
115
	private Observation observation;
106
	private Vue vue;
116
	private Vue vue;
107
	private FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur;
117
	private FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur;
108
 
118
 
109
	// Déclaration des services à utiliser
119
	// Déclaration des services à utiliser
110
	private ObservationService observationService;
120
	private ObservationService observationService;
111
 
121
 
112
	private CacheClient cache = CacheClient.getInstance();
122
	private CacheClient cache = CacheClient.getInstance();
113
	
123
	
114
	private PropositionDetermination propositionPlusPopulaire;
124
	private PropositionDetermination propositionPlusPopulaire;
115
 
125
 
116
	public IdentiplanteDeterminationPresenteur(Vue vue, ObservationService observationService) {
126
	public IdentiplanteDeterminationPresenteur(Vue vue, ObservationService observationService) {
117
		this.vue = vue;
127
		this.vue = vue;
118
		this.observationService = observationService;
128
		this.observationService = observationService;
119
	}
129
	}
120
 
130
 
121
	public void go(final HasWidgets composite) {
131
	public void go(final HasWidgets composite) {
122
		// TODO afficher une icone de chargement si le chargement devient trop
132
		// TODO afficher une icone de chargement si le chargement devient trop
123
		// long
133
		// long
124
		// car tout l'écran est asynchrone ici
134
		// car tout l'écran est asynchrone ici
125
		String observationId = URLUtils.getURLSpecialParameterValue();
135
		String observationId = URLUtils.getURLSpecialParameterValue();
126
		observationService.getObservation(observationId, new ObservationsCallback() {
136
		observationService.getObservation(observationId, new ObservationsCallback() {
127
 
-
 
128
			@Override
137
			@Override
129
			public void surRetour(ObservationServiceResultat objetRetour) {
138
			public void surRetour(ObservationServiceResultat objetRetour) {
-
 
139
				observation = cache.getObservationCourante();
130
				afficherRss(cache.getObservationCourante());
140
				afficherRss(cache.getObservationCourante());
131
				// trouve l'image courante si elle n'est pas deja en cache
141
				// trouve l'image courante si elle n'est pas deja en cache
132
				List<Image> listeImages = cache.getObservationCourante().getImages();
142
				List<Image> listeImages = cache.getObservationCourante().getImages();
133
				if (listeImages.size() > 0) {
143
				if (listeImages.size() > 0) {
134
					CacheClient.getInstance().setImageCourante(listeImages.get(0));
144
					CacheClient.getInstance().setImageCourante(listeImages.get(0));
135
				} else {
145
				} else {
136
					CacheClient.getInstance().setImageCourante(null);
146
					CacheClient.getInstance().setImageCourante(null);
137
				}
147
				}
138
				
148
				
139
				new MetadonneesPresenteur(new MetadonneesEnLigneVue(), cache.getObservationCourante(), ModeRecherche.MODE_OBSERVATION, false).go(vue.getMetadonnees());
149
				new MetadonneesPresenteur(new MetadonneesEnLigneVue(), cache.getObservationCourante(), ModeRecherche.MODE_OBSERVATION, false).go(vue.getMetadonnees());
140
				new ObservationImagesPresenteur(new ObservationImagesVue(), cache.getObservationCourante(), CacheClient.getInstance().getImageCourante()).go(vue.getDetailImageObservation());
150
				new ObservationImagesPresenteur(new ObservationImagesVue(), cache.getObservationCourante(), CacheClient.getInstance().getImageCourante()).go(vue.getDetailImageObservation());
141
				new ForumPresenteur(new ForumVue()).go(vue.getForum());
151
				new ForumPresenteur(new ForumVue()).go(vue.getForum());
142
				new FormulaireRechercheEflorePresenteur().go(vue.getFormulaireRechercheEflore());
152
				new FormulaireRechercheEflorePresenteur().go(vue.getFormulaireRechercheEflore());
143
 
153
 
144
				composite.add(vue.asWidget());
154
				composite.add(vue.asWidget());
145
				calculerEtAfficherVoteDeterminationPlusPopulaire();
155
				calculerEtAfficherVoteDeterminationPlusPopulaire();
146
			}
156
			}
147
 
157
 
148
			@Override
158
			@Override
149
			public void surErreur(String messageErreur) {
159
			public void surErreur(String messageErreur) {
150
				Window.alert(messageErreur + " - l'identifiant d'observation est incorrect; l'observation a peut-être été supprimée");
160
				Window.alert(messageErreur + " - l'identifiant d'observation est incorrect; l'observation a peut-être été supprimée");
151
			}
161
			}
152
		});
162
		});
153
		gererEvenements();
163
		gererEvenements();
154
	}
164
	}
155
 
165
 
156
	public void afficherRss(Observation observation) {
166
	public void afficherRss(Observation observation) {
157
		new RssPresenteur(new RssVue(), observation, "Suivre cette observation").go(vue.getZoneRss());
167
		new RssPresenteur(new RssVue(), observation, "Suivre cette observation").go(vue.getZoneRss());
158
	}
168
	}
159
	
-
 
160
 
169
 
161
	private void calculerEtAfficherVoteDeterminationPlusPopulaire() {
170
	private void calculerEtAfficherVoteDeterminationPlusPopulaire() {
162
		if(cache.getObservationCourante() != null) {
171
		if (cache.getObservationCourante() != null) {
163
			Observation observation = cache.getObservationCourante();
172
			Observation observation = cache.getObservationCourante();
164
			String nomTaxon = observation.getNomRetenuFormateReferentiel();
173
			String nomTaxon = observation.getNomRetenuFormateReferentiel();
165
			List<MoyenneVote> votesOrdonnes = CalculVoteDeterminationService.calculerVoteDeterminationPlusPopulaire(cache.getObservationCourante().getPropositionDeterminations());
174
			List<MoyenneVote> votesOrdonnes = CalculVoteDeterminationService.calculerVoteDeterminationPlusPopulaire(cache.getObservationCourante().getPropositionDeterminations());
166
			if (votesOrdonnes.size() > 0) {
175
			if (votesOrdonnes.size() > 0) {
167
				nomTaxon = votesOrdonnes.get(0).getIntituleAssocie();
176
				nomTaxon = votesOrdonnes.get(0).getIntituleAssocie();
168
				propositionPlusPopulaire = votesOrdonnes.get(0).getPropositionAssociee();
177
				propositionPlusPopulaire = votesOrdonnes.get(0).getPropositionAssociee();
169
				
178
				
170
				if(doitAfficherBoutonValidation(votesOrdonnes)) {
179
				if (doitAfficherBoutonValidation(votesOrdonnes)) {
171
					vue.afficherBoutonValidationTaxon();
180
					vue.afficherBoutonValidationTaxon();
172
				} else {
181
				} else {
173
					vue.cacherBoutonValidationTaxon();
182
					vue.cacherBoutonValidationTaxon();
174
				}
183
				}
175
			}		
184
			}
176
			vue.afficherNomTaxonProbable(nomTaxon);
185
			vue.afficherNomTaxonProbable(nomTaxon);
177
		}
186
		}
178
	}
187
	}
179
	
188
	
180
	private boolean doitAfficherBoutonValidation(List<MoyenneVote> votesOrdonnes) {		
189
	private boolean doitAfficherBoutonValidation(List<MoyenneVote> votesOrdonnes) {		
181
		boolean estPropositionRetenue = votesOrdonnes.get(0).getPropositionAssociee().estPropositionRetenue();
190
		boolean estPropositionRetenue = votesOrdonnes.get(0).getPropositionAssociee().estPropositionRetenue();
182
		
191
		
183
		Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
192
		Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
184
		boolean estAuteurObservation = false;
193
		boolean estAuteurObservation = false;
185
		if(utilisateur != null) {
194
		if(utilisateur != null) {
186
			estAuteurObservation = utilisateur.estIdentifie() && utilisateur.getId().equals(cache.getObservationCourante().getIdAuteur());
195
			estAuteurObservation = utilisateur.estIdentifie() && utilisateur.getId().equals(cache.getObservationCourante().getIdAuteur());
187
		}
196
		}
188
		return estAuteurObservation && !estPropositionRetenue;
197
		return estAuteurObservation && !estPropositionRetenue;
189
	}
198
	}
190
 
199
 
191
	public void gererEvenements() {
200
	public void gererEvenements() {
192
		
-
 
193
		BusEvenementiel.getInstance().addHandler(EvenementChangementEtatUtilisateur.TYPE, new GestionnaireEvenementChangementEtatUtilisateur() {
201
		BusEvenementiel.getInstance().addHandler(EvenementChangementEtatUtilisateur.TYPE, new GestionnaireEvenementChangementEtatUtilisateur() {
194
			@Override
202
			@Override
195
			public void onModificationEtatUtilisateur(EvenementChangementEtatUtilisateur evenementChangementEtatUtilisateur) {
203
			public void onModificationEtatUtilisateur(EvenementChangementEtatUtilisateur evenementChangementEtatUtilisateur) {
196
				calculerEtAfficherVoteDeterminationPlusPopulaire();
204
				calculerEtAfficherVoteDeterminationPlusPopulaire();
197
			};
205
			};
198
		});
206
		});
199
		
207
		
200
		BusEvenementiel.getInstance().addHandler(EvenementVoteDetermination.TYPE, new GestionnaireEvenementVoteDetermination() {
208
		BusEvenementiel.getInstance().addHandler(EvenementVoteDetermination.TYPE, new GestionnaireEvenementVoteDetermination() {
201
			@Override
209
			@Override
202
			public void onVoteDetermination(VoteDetermination event) {
210
			public void onVoteDetermination(VoteDetermination event) {
203
				calculerEtAfficherVoteDeterminationPlusPopulaire();
211
				calculerEtAfficherVoteDeterminationPlusPopulaire();
204
			}
212
			}
205
		});
213
		});
206
 
214
		
207
		ClickHandler clicAjoutProposition = new ClickHandler() {
-
 
208
			@Override
-
 
209
			public void onClick(ClickEvent event) {
-
 
210
				fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue());
-
 
211
				fenetreOverlaySimplePresenteur.ouvrirFenetreModale(new FormulairePropositionPresenteur(new FormulairePropositionVue(), new PropositionDeterminationServiceConcret()));
-
 
212
			}
-
 
213
		};
-
 
214
		vue.getBoutonAjoutProposition().addClickHandler(clicAjoutProposition);
-
 
215
		vue.getBoutonAjoutPropositionBas().addClickHandler(clicAjoutProposition);
-
 
216
 
-
 
217
		ClickHandler clicAjoutCommentaire = new ClickHandler() {
-
 
218
			@Override
-
 
219
			public void onClick(ClickEvent event) {
-
 
220
				FormulaireCommentairePresenteur commentairePresenteur = new FormulaireCommentairePresenteur(cache.getObservationCourante(), new CommentaireServiceConcret(), new FormulaireCommentaireVue());
-
 
221
				fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue());
-
 
222
				fenetreOverlaySimplePresenteur.ouvrirFenetreModale(commentairePresenteur);
-
 
223
			}
-
 
224
		};
-
 
225
		vue.getBoutonAjoutCommentaire().addClickHandler(clicAjoutCommentaire);
-
 
226
		vue.getBoutonAjoutCommentaireBas().addClickHandler(clicAjoutCommentaire);
-
 
227
 
-
 
228
		BusEvenementiel.getInstance().addHandler(EvenementAjoutDetermination.TYPE, new GestionnaireEvenementAjoutDetermination() {
215
		BusEvenementiel.getInstance().addHandler(EvenementAjoutDetermination.TYPE, new GestionnaireEvenementAjoutDetermination() {
229
			@Override
216
			@Override
230
			public void onAjoutDetermination(EvenementAjoutDetermination event) {
217
			public void onAjoutDetermination(EvenementAjoutDetermination event) {
231
				if (fenetreOverlaySimplePresenteur != null && fenetreOverlaySimplePresenteur.fenetreModaleEstOuverte()) {
218
				if (fenetreOverlaySimplePresenteur != null && fenetreOverlaySimplePresenteur.fenetreModaleEstOuverte()) {
232
					fenetreOverlaySimplePresenteur.fermerFenetreModale();
219
					fenetreOverlaySimplePresenteur.fermerFenetreModale();
233
				}
220
				}
234
			}
221
			}
235
		});
222
		});
236
 
223
 
237
		BusEvenementiel.getInstance().addHandler(EvenementAjoutCommentaire.TYPE, new GestionnaireEvenementAjoutCommentaire() {
224
		BusEvenementiel.getInstance().addHandler(EvenementAjoutCommentaire.TYPE, new GestionnaireEvenementAjoutCommentaire() {
238
 
-
 
239
			@Override
225
			@Override
240
			public void onAjoutCommentaire(EvenementAjoutCommentaire event) {
226
			public void onAjoutCommentaire(EvenementAjoutCommentaire event) {
241
				if (fenetreOverlaySimplePresenteur != null && fenetreOverlaySimplePresenteur.fenetreModaleEstOuverte()) {
227
				if (fenetreOverlaySimplePresenteur != null && fenetreOverlaySimplePresenteur.fenetreModaleEstOuverte()) {
242
					fenetreOverlaySimplePresenteur.fermerFenetreModale();
228
					fenetreOverlaySimplePresenteur.fermerFenetreModale();
243
				}
229
				}
244
			}
230
			}
245
		});
231
		});
246
 
232
 
247
		BusEvenementiel.getInstance().addHandler(EvenementChangementImageValidation.TYPE, new GestionnaireEvenementChangementImageValidation() {
233
		BusEvenementiel.getInstance().addHandler(EvenementChangementImageValidation.TYPE, new GestionnaireEvenementChangementImageValidation() {
248
 
-
 
249
			@Override
234
			@Override
250
			public void onChangementImage(EvenementChangementImageValidation event) {
235
			public void onChangementImage(EvenementChangementImageValidation event) {
251
				vue.getDetailImageObservation().clear();
236
				vue.getDetailImageObservation().clear();
252
				new ObservationImagesPresenteur(
237
				new ObservationImagesPresenteur(
253
					new ObservationImagesVue(), 
238
					new ObservationImagesVue(), 
254
					cache.getObservationCourante(), 
239
					cache.getObservationCourante(), 
255
					CacheClient.getInstance().getImageCourante()).go(vue.getDetailImageObservation());
240
					CacheClient.getInstance().getImageCourante()).go(vue.getDetailImageObservation());
256
			}
241
			}
257
		});
242
		});
258
		
243
 
-
 
244
		ClickHandler clicAjoutProposition = new ClickHandler() {
-
 
245
			@Override
-
 
246
			public void onClick(ClickEvent event) {
-
 
247
				fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue());
-
 
248
				fenetreOverlaySimplePresenteur.ouvrirFenetreModale(new FormulairePropositionPresenteur(new FormulairePropositionVue(), new PropositionDeterminationServiceConcret()));
-
 
249
			}
-
 
250
		};
-
 
251
		vue.getBoutonAjoutProposition().addClickHandler(clicAjoutProposition);
-
 
252
		vue.getBoutonAjoutPropositionBas().addClickHandler(clicAjoutProposition);
-
 
253
 
-
 
254
		ClickHandler clicAjoutCommentaire = new ClickHandler() {
-
 
255
			@Override
-
 
256
			public void onClick(ClickEvent event) {
-
 
257
				FormulaireCommentairePresenteur commentairePresenteur = new FormulaireCommentairePresenteur(cache.getObservationCourante(), new CommentaireServiceConcret(), new FormulaireCommentaireVue());
-
 
258
				fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue());
-
 
259
				fenetreOverlaySimplePresenteur.ouvrirFenetreModale(commentairePresenteur);
-
 
260
			}
-
 
261
		};
-
 
262
		vue.getBoutonAjoutCommentaire().addClickHandler(clicAjoutCommentaire);
-
 
263
		vue.getBoutonAjoutCommentaireBas().addClickHandler(clicAjoutCommentaire);
259
		
264
 
260
		vue.getLienOuvrages().addClickHandler(new ClickHandler() {
265
		vue.getLienOuvrages().addClickHandler(new ClickHandler() {
261
			
-
 
262
			@Override
266
			@Override
263
			public void onClick(ClickEvent event) {
267
			public void onClick(ClickEvent event) {
264
				Config config = new Config();
268
				Config config = new Config();
265
				Window.open(config.getUrl("ouvragesFlore"), "Flores numérisées", config.getInfo("popupOptions"));
269
				Window.open(config.getUrl("ouvragesFlore"), "Flores numérisées", config.getInfo("popupOptions"));
266
			}
270
			}
267
		});
271
		});
268
 
272
 
269
		vue.getLienBonnier().addClickHandler(new ClickHandler() {
273
		vue.getLienBonnier().addClickHandler(new ClickHandler() {
270
		
-
 
271
			@Override
274
			@Override
272
			public void onClick(ClickEvent event) {
275
			public void onClick(ClickEvent event) {
273
				Config config = new Config();
276
				Config config = new Config();
274
				Window.open(config.getUrl("bonnierPda"), "Flore Bonnier PDA", config.getInfo("popupOptions"));
277
				Window.open(config.getUrl("bonnierPda"), "Flore Bonnier PDA", config.getInfo("popupOptions"));
275
			}
278
			}
276
		});
279
		});
277
		
280
		
278
		vue.getLienCles().addClickHandler(new ClickHandler() {
281
		vue.getLienCles().addClickHandler(new ClickHandler() {
279
			
-
 
280
			@Override
282
			@Override
281
			public void onClick(ClickEvent event) {
283
			public void onClick(ClickEvent event) {
282
				Config config = new Config();
284
				Config config = new Config();
283
				Window.open(config.getUrl("clesDetermination"), "Clés de determination", config.getInfo("popupOptions"));
285
				Window.open(config.getUrl("clesDetermination"), "Clés de determination", config.getInfo("popupOptions"));
284
			}
286
			}
285
		});
287
		});
286
		
288
		
287
		vue.getLienEflore().addClickHandler(new ClickHandler() {
289
		vue.getLienEflore().addClickHandler(new ClickHandler() {
288
			
-
 
289
			@Override
290
			@Override
290
			public void onClick(ClickEvent event) {
291
			public void onClick(ClickEvent event) {
291
				Config config = new Config();
292
				Config config = new Config();
292
				Window.open(config.getUrl("eflore"), "eFlore", config.getInfo("popupOptions"));
293
				Window.open(config.getUrl("eflore"), "eFlore", config.getInfo("popupOptions"));
293
			}
294
			}
294
		});
295
		});
295
		
296
		
296
		vue.getBoutonValidationTaxon().addClickHandler(new ClickHandler() {
297
		vue.getBoutonValidationTaxon().addClickHandler(new ClickHandler() {
297
			
-
 
298
			@Override
298
			@Override
299
			public void onClick(ClickEvent event) {
299
			public void onClick(ClickEvent event) {
300
				if(Window.confirm(I18n.getVocabulary().confirmationValidationDetermination())) {
300
				if (Window.confirm(I18n.getVocabulary().confirmationValidationDetermination())) {
301
					validerPropositionPlusPopulaire();
301
					validerPropositionPlusPopulaire();
302
				}
302
				}
303
			}
303
			}
304
		});
304
		});
-
 
305
		
-
 
306
		vue.getBoutonDepublierObs().addClickHandler(new ClickHandler() {
-
 
307
			@Override
-
 
308
			public void onClick(ClickEvent event) {
-
 
309
				GWT.log("Lancer evnt : EvenementDepublierObs");
-
 
310
				BusEvenementiel.getInstance().fireEvent(new EvenementDepublierObs(observation.getId()));
-
 
311
			}
-
 
312
		});
-
 
313
		
-
 
314
		BusEvenementiel.getInstance().addHandler(EvenementDepublierObs.TYPE, new GestionnaireEvenementDepublierObs() {
-
 
315
			@Override
-
 
316
			public void onDepublicationObs(EvenementDepublierObs event) {
-
 
317
				GWT.log("Attraper evnt : EvenementDepublierObs (obs:"+event.getIdObs()+")");
-
 
318
				if (event.getIdObs().equals(observation.getId())) {
-
 
319
					if (Window.confirm(I18n.getVocabulary().confirmationDepublicationObs())) {
-
 
320
						depublierObs();
-
 
321
					}
-
 
322
				}
-
 
323
			}
-
 
324
		});
305
	}
325
	}
306
	
326
	
307
	private void validerPropositionPlusPopulaire() {
327
	private void validerPropositionPlusPopulaire() {
308
		PropositionDeterminationServiceConcret propositionService = new PropositionDeterminationServiceConcret();
328
		PropositionDeterminationServiceConcret propositionService = new PropositionDeterminationServiceConcret();
309
		propositionService.validerProposition(propositionPlusPopulaire, new ValidationPropositionCallback() {
329
		propositionService.validerProposition(propositionPlusPopulaire, new ValidationPropositionCallback() {
310
			@Override
330
			@Override
311
			public void surRetour(String objetRetour) {
331
			public void surRetour(String objetRetour) {
312
				String observationId = URLUtils.getURLSpecialParameterValue();
332
				String observationId = URLUtils.getURLSpecialParameterValue();
313
				observationService.getObservation(observationId, new ObservationsCallback() {
333
				observationService.getObservation(observationId, new ObservationsCallback() {
314
 
334
 
315
					@Override
335
					@Override
316
					public void surRetour(ObservationServiceResultat objetRetour) {
336
					public void surRetour(ObservationServiceResultat objetRetour) {
317
						vue.viderMetadonnees();
337
						vue.viderMetadonnees();
318
						new MetadonneesPresenteur(new MetadonneesEnLigneVue(), cache.getObservationCourante(), ModeRecherche.MODE_OBSERVATION, false).go(vue.getMetadonnees());
338
						new MetadonneesPresenteur(new MetadonneesEnLigneVue(), cache.getObservationCourante(), ModeRecherche.MODE_OBSERVATION, false).go(vue.getMetadonnees());
319
						calculerEtAfficherVoteDeterminationPlusPopulaire();
339
						calculerEtAfficherVoteDeterminationPlusPopulaire();
320
					}
340
					}
321
 
341
 
322
					@Override
342
					@Override
323
					public void surErreur(String messageErreur) {
343
					public void surErreur(String messageErreur) {
324
						Window.alert(messageErreur);
344
						Window.alert(messageErreur);
325
					}
345
					}
326
				});
346
				});
327
			}
347
			}
-
 
348
		});
-
 
349
	}
-
 
350
	
-
 
351
	private void depublierObs() {
-
 
352
		GWT.log("depublierObs :"+observation.getId());
-
 
353
		observationService.depublier(observation, new DepublicationObservationCallBack() {
-
 
354
			
-
 
355
			@Override
-
 
356
			public void surRetour(String depublicationOk) {
-
 
357
				GWT.log("Dépublication obs "+observation.getId()+" "+depublicationOk);
-
 
358
				if (depublicationOk.equals("OK")) {
-
 
359
					BusEvenementiel.getInstance().fireEvent(new EvenementRechercheObservation());
-
 
360
				}
-
 
361
			}
328
		});
362
		});
329
	}
363
	}
330
}
364
}