Subversion Repositories eFlore/Applications.del

Rev

Rev 1862 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
447 gduche 1
package org.tela_botanica.del.client.composants.metadonnees;
2
 
552 benjamin 3
import org.tela_botanica.del.client.cache.CacheClient;
447 gduche 4
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
1079 gduche 5
import org.tela_botanica.del.client.config.Config;
552 benjamin 6
import org.tela_botanica.del.client.modeles.InformationsRecherche;
7
import org.tela_botanica.del.client.modeles.ModeRecherche;
447 gduche 8
import org.tela_botanica.del.client.modeles.Observation;
1667 jpm 9
import org.tela_botanica.del.client.modeles.Utilisateur;
552 benjamin 10
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
1667 jpm 11
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.EvenementChangementEtatUtilisateur;
12
import org.tela_botanica.del.client.navigation.evenement.changementEtatUtilisateur.GestionnaireEvenementChangementEtatUtilisateur;
552 benjamin 13
import org.tela_botanica.del.client.navigation.evenement.detailsimage.EvenementRechercheImage;
14
import org.tela_botanica.del.client.navigation.evenement.rechercheobservation.EvenementRechercheObservation;
1131 aurelien 15
import org.tela_botanica.del.client.utils.UtilitairesServiceResultat;
477 benjamin 16
 
1667 jpm 17
import com.google.gwt.core.shared.GWT;
552 benjamin 18
import com.google.gwt.event.dom.client.ClickEvent;
19
import com.google.gwt.event.dom.client.ClickHandler;
20
import com.google.gwt.event.dom.client.HasClickHandlers;
674 gduche 21
import com.google.gwt.i18n.client.DateTimeFormat;
1078 gduche 22
import com.google.gwt.user.client.History;
1026 gduche 23
import com.google.gwt.user.client.Window;
447 gduche 24
import com.google.gwt.user.client.ui.HasText;
25
import com.google.gwt.user.client.ui.HasWidgets;
26
import com.google.gwt.user.client.ui.IsWidget;
27
 
477 benjamin 28
public class MetadonneesPresenteur extends Presenteur {
447 gduche 29
 
30
	public abstract interface Vue extends IsWidget {
31
		public HasText getNomRetenu();
477 benjamin 32
 
552 benjamin 33
		public HasClickHandlers getLienNomRetenu();
34
 
447 gduche 35
		public HasText getNomCommun();
477 benjamin 36
 
447 gduche 37
		public HasText getFamille();
477 benjamin 38
 
447 gduche 39
		public HasText getLocalite();
477 benjamin 40
 
447 gduche 41
		public HasText getLieuDit();
477 benjamin 42
 
447 gduche 43
		public HasText getMilieu();
477 benjamin 44
 
447 gduche 45
		public HasText getCommentaire();
477 benjamin 46
 
447 gduche 47
		public HasText getAuteur();
1667 jpm 48
 
49
		public HasText getCourrielAuteur();
50
 
51
		public void setCourrielAuteurHref(String courriel);
52
 
449 gduche 53
		public HasText getDateTransmission();
477 benjamin 54
 
447 gduche 55
		public HasText getMotsClefs();
477 benjamin 56
 
447 gduche 57
		public HasText getNumNomenclatural();
477 benjamin 58
 
449 gduche 59
		public HasText getDateReleve();
552 benjamin 60
 
61
		public HasClickHandlers getLienFamille();
62
 
63
		public HasClickHandlers getLienAuteur();
1667 jpm 64
 
65
		public HasClickHandlers getLienCourrielAuteur();
552 benjamin 66
 
67
		public HasClickHandlers getLienDateTransmission();
68
 
69
		public HasClickHandlers getLienDateReleve();
70
 
71
		public HasClickHandlers getLienLocalite();
72
 
73
		public HasClickHandlers getLienMotsClefs();
74
 
75
		public HasClickHandlers getLienNumNomenclatural();
76
 
77
		public HasClickHandlers getLienNomCommun();
78
 
79
		public HasClickHandlers getLienMilieu();
80
 
81
		public HasClickHandlers getLienCommentaire();
570 gduche 82
 
1026 gduche 83
		public void setStation(String station) ;
84
 
570 gduche 85
		public void masquerChampsVides();
1078 gduche 86
 
87
		public void activerLiens();
1079 gduche 88
 
89
		public void activerLienAuteur();
1214 gduche 90
 
1531 mathias 91
		public void activerLienNomRetenu();
92
 
1342 gduche 93
		public void setLienIdentiplante(String id);
1282 aurelien 94
 
95
		void desactiverLienAuteur();
1393 aurelien 96
 
97
		public HasText getReferentiel();
1667 jpm 98
 
99
		public void afficherCourrielAuteur();
100
 
101
		public void cacherCourrielAuteur();
447 gduche 102
	}
477 benjamin 103
 
447 gduche 104
	private Vue vue;
105
	private Observation observation;
552 benjamin 106
	private ModeRecherche modeRecherche;
1078 gduche 107
	private boolean avecLiens;
108
 
109
	public MetadonneesPresenteur(Vue vue, Observation observation, ModeRecherche modeRecherche, boolean avecLiens) {
447 gduche 110
		this.vue = vue;
552 benjamin 111
		this.modeRecherche = modeRecherche;
447 gduche 112
		setObservation(observation);
1078 gduche 113
		this.avecLiens = avecLiens;
447 gduche 114
	}
477 benjamin 115
 
447 gduche 116
	public void setObservation(Observation observation) {
117
		this.observation = observation;
118
	}
477 benjamin 119
 
447 gduche 120
	public void chargerMetaDonnees() {
121
		vue.getNomRetenu().setText(observation.getNomRetenu());
122
		vue.getNomCommun().setText(observation.getNomCommun());
1393 aurelien 123
		vue.getReferentiel().setText(observation.getReferentiel());
447 gduche 124
		vue.getFamille().setText(observation.getFamille());
471 aurelien 125
		vue.getLocalite().setText(observation.getLocaliteAvecIdFormatee());
447 gduche 126
		vue.getLieuDit().setText(observation.getLieuDit());
1026 gduche 127
		vue.setStation(observation.getStation());
447 gduche 128
		vue.getMilieu().setText(observation.getMilieu());
129
		vue.getCommentaire().setText(observation.getCommentaire());
130
		vue.getAuteur().setText(observation.getAuteur());
674 gduche 131
		vue.getDateTransmission().setText(formaterDate(observation.getDateTransmission()));
1667 jpm 132
		vue.getDateReleve().setText(formaterDate(observation.getDateReleve()));
133
		gererAffichageCourrielAuteur();
674 gduche 134
 
1667 jpm 135
		// ATTENTION : Masquer champs vide doit se faire en dernier !
570 gduche 136
		vue.masquerChampsVides();
447 gduche 137
	}
477 benjamin 138
 
674 gduche 139
	public String formaterDate(String dateNonFormatee) {
676 gduche 140
		try {
1862 jpm 141
			String dateFormatee = DateTimeFormat.getFormat("dd/MM/yyyy").format(UtilitairesServiceResultat.parserDateObservation(dateNonFormatee));
1132 aurelien 142
			dateFormatee = (dateFormatee == "01/01/1970") ? "???" : dateFormatee ;
143
			return dateFormatee;
676 gduche 144
		} catch (IllegalArgumentException e) {
145
			return "";
146
		}
674 gduche 147
	}
148
 
447 gduche 149
	@Override
150
	public void go(HasWidgets composite) {
477 benjamin 151
		composite.add(vue.asWidget());
447 gduche 152
		chargerMetaDonnees();
1830 aurelien 153
		gererEvenements();
447 gduche 154
	}
155
 
156
	@Override
157
	protected void gererEvenements() {
1078 gduche 158
		if (this.avecLiens) {
1667 jpm 159
			if (!observation.getIdAuteur().equals("0")) {
1282 aurelien 160
				vue.getLienAuteur().addClickHandler(new ClickHandler() {
161
					@Override
162
					public void onClick(ClickEvent arg0) {
163
						InformationsRecherche informationsRecherche = new InformationsRecherche();
164
						informationsRecherche.setAuteur(vue.getAuteur().getText());
165
						setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
166
						History.fireCurrentHistoryState();
167
					}
168
				});
1078 gduche 169
			}
1214 gduche 170
 
1282 aurelien 171
			vue.getLienDateReleve().addClickHandler(new ClickHandler() {
1079 gduche 172
				@Override
1282 aurelien 173
				public void onClick(ClickEvent arg0) {
174
					InformationsRecherche informationsRecherche = new InformationsRecherche();
175
					informationsRecherche.setDate(vue.getDateReleve().getText());
176
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
177
					History.fireCurrentHistoryState();
178
				}
179
			});
180
 
181
			vue.getLienDateTransmission().addClickHandler(new ClickHandler() {
182
				@Override
183
				public void onClick(ClickEvent arg0) {
184
					InformationsRecherche informationsRecherche = new InformationsRecherche();
185
					informationsRecherche.setDate(vue.getDateReleve().getText());
186
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
187
					History.fireCurrentHistoryState();
188
				}
189
			});
190
 
191
			vue.getLienFamille().addClickHandler(new ClickHandler() {
192
				@Override
193
				public void onClick(ClickEvent arg0) {
194
					InformationsRecherche informationsRecherche = new InformationsRecherche();
195
					informationsRecherche.setFamille(vue.getFamille().getText());
196
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
197
					History.fireCurrentHistoryState();
198
				}
199
			});
200
 
201
			vue.getLienLocalite().addClickHandler(new ClickHandler() {
202
				@Override
203
				public void onClick(ClickEvent arg0) {
204
					InformationsRecherche informationsRecherche = new InformationsRecherche();
205
					informationsRecherche.setCommune(vue.getLocalite().getText());
206
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
207
					History.fireCurrentHistoryState();
208
				}
209
			});
210
 
211
			vue.getLienMotsClefs().addClickHandler(new ClickHandler() {
212
				@Override
213
				public void onClick(ClickEvent arg0) {
214
					InformationsRecherche informationsRecherche = new InformationsRecherche();
215
					informationsRecherche.setMotClef(vue.getMotsClefs().getText());
216
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
217
					History.fireCurrentHistoryState();
218
				}
219
			});
220
 
221
			vue.getLienNomCommun().addClickHandler(new ClickHandler() {
222
				@Override
223
				public void onClick(ClickEvent arg0) {
224
					InformationsRecherche informationsRecherche = new InformationsRecherche();
225
					informationsRecherche.setRechercheLibre(vue.getNomCommun().getText());
226
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
227
					History.fireCurrentHistoryState();
228
				}
229
			});
230
 
231
			vue.getLienNomRetenu().addClickHandler(new ClickHandler() {
232
				@Override
233
				public void onClick(ClickEvent arg0) {
234
					InformationsRecherche informationsRecherche = new InformationsRecherche();
235
					informationsRecherche.setRechercheLibre(vue.getNomRetenu().getText());
236
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
237
					History.fireCurrentHistoryState();
238
				}
239
			});
240
 
241
			vue.getLienMilieu().addClickHandler(new ClickHandler() {
242
				@Override
243
				public void onClick(ClickEvent arg0) {
244
					InformationsRecherche informationsRecherche = new InformationsRecherche();
245
					informationsRecherche.setRechercheLibre(vue.getMilieu().getText());
246
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
247
					History.fireCurrentHistoryState();
248
				}
249
			});
250
 
251
			vue.getLienCommentaire().addClickHandler(new ClickHandler() {
252
				@Override
253
				public void onClick(ClickEvent arg0) {
254
					InformationsRecherche informationsRecherche = new InformationsRecherche();
255
					informationsRecherche.setRechercheLibre(vue.getCommentaire().getText());
256
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
257
					History.fireCurrentHistoryState();
258
				}
259
			});
1531 mathias 260
 
1342 gduche 261
			vue.setLienIdentiplante(this.observation.getId());
1282 aurelien 262
			vue.activerLiens();
263
 
1667 jpm 264
			if (observation.getIdAuteur().equals("0")) {
1282 aurelien 265
				vue.desactiverLienAuteur();
266
			}
267
		} else {
1531 mathias 268
			if (! observation.getIdAuteur().equals("0")) {
1282 aurelien 269
				vue.getLienAuteur().addClickHandler(new ClickHandler() {
270
					@Override
271
					public void onClick(ClickEvent event) {
272
						Config config = new Config();
1687 mathias 273
						Window.open(config.getUrl("profil") + observation.getIdAuteur(), "Consultation de l'annuaire", config.getInfo("popupOptions"));
1282 aurelien 274
					}
275
				});
276
 
277
				vue.activerLienAuteur();
278
			}
1531 mathias 279
 
280
			if (observation.getNumNomenclatural() != null && ! observation.getNumNomenclatural().equals("0") && ! observation.getNumNomenclatural().equals("")) {
281
				vue.activerLienNomRetenu();
282
				vue.getLienNomRetenu().addClickHandler(new ClickHandler() {
283
					@Override
284
					public void onClick(ClickEvent arg0) {
285
						Config config = new Config();
286
						String efloreUrlFicheTpl = config.getUrl("efloreTaxon");
1830 aurelien 287
						String efloreUrlFiche = efloreUrlFicheTpl.replaceAll("referentiel-nn-num_nom", observation.getReferentiel()+"-nn-"+observation.getNumNomenclatural());
1687 mathias 288
						Window.open(efloreUrlFiche, "Fiche eflore", config.getInfo("popupOptions"));
1531 mathias 289
					}
290
				});
291
			}
1078 gduche 292
		}
1667 jpm 293
 
294
		BusEvenementiel.getInstance().addHandler(EvenementChangementEtatUtilisateur.TYPE, new GestionnaireEvenementChangementEtatUtilisateur() {
295
			@Override
296
			public void onModificationEtatUtilisateur(EvenementChangementEtatUtilisateur evenementChangementEtatUtilisateur) {
297
				gererAffichageCourrielAuteur();
298
			}
299
		});
447 gduche 300
	}
1667 jpm 301
 
302
	public void gererAffichageCourrielAuteur() {
303
		GWT.log("Auteur courrriel :"+observation.getCourrielAuteur());
304
		Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
305
		if (utilisateur.etreAdmin()) {
306
			vue.getCourrielAuteur().setText(observation.getCourrielAuteur());
307
			vue.setCourrielAuteurHref(observation.getCourrielAuteur());
308
			vue.afficherCourrielAuteur();
309
		} else {
310
			vue.getCourrielAuteur().setText("");
311
			vue.setCourrielAuteurHref("");
312
			vue.cacherCourrielAuteur();
313
		}
314
	}
552 benjamin 315
 
316
	public void setInfosRechercheEnCacheEtLancerEvenement(InformationsRecherche informationsRecherche) {
317
		switch (modeRecherche) {
1667 jpm 318
			case MODE_IMAGE:
319
				CacheClient.getInstance().setPageCouranteRechercheImages(1);
320
				CacheClient.getInstance().setInformationsRechercheImage(informationsRecherche);
321
				BusEvenementiel.getInstance().fireEvent(new EvenementRechercheImage());
322
				break;
323
			case MODE_OBSERVATION:
324
				CacheClient.getInstance().setPageCouranteRechercheObservations(1);
325
				CacheClient.getInstance().setInformationsRechercheObservation(informationsRecherche);
326
				BusEvenementiel.getInstance().fireEvent(new EvenementRechercheObservation());
327
			default:
328
				break;
552 benjamin 329
		}
330
	}
447 gduche 331
}