Subversion Repositories eFlore/Applications.del

Rev

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

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