Subversion Repositories eFlore/Applications.del

Rev

Go to most recent revision | Details | 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 {
1132 aurelien 141
			String dateFormatee =  DateTimeFormat.getFormat("dd/MM/yyyy").format(UtilitairesServiceResultat.parserDateObservation(dateNonFormatee));
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();
1078 gduche 153
		//if (this.avecLiens) {
154
			gererEvenements();
155
		//}
447 gduche 156
	}
157
 
158
	@Override
159
	protected void gererEvenements() {
1078 gduche 160
		if (this.avecLiens) {
1667 jpm 161
			if (!observation.getIdAuteur().equals("0")) {
1282 aurelien 162
				vue.getLienAuteur().addClickHandler(new ClickHandler() {
163
					@Override
164
					public void onClick(ClickEvent arg0) {
165
						InformationsRecherche informationsRecherche = new InformationsRecherche();
166
						informationsRecherche.setAuteur(vue.getAuteur().getText());
167
						setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
168
						History.fireCurrentHistoryState();
169
					}
170
				});
1078 gduche 171
			}
1214 gduche 172
 
1282 aurelien 173
			vue.getLienDateReleve().addClickHandler(new ClickHandler() {
1079 gduche 174
				@Override
1282 aurelien 175
				public void onClick(ClickEvent arg0) {
176
					InformationsRecherche informationsRecherche = new InformationsRecherche();
177
					informationsRecherche.setDate(vue.getDateReleve().getText());
178
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
179
					History.fireCurrentHistoryState();
180
				}
181
			});
182
 
183
			vue.getLienDateTransmission().addClickHandler(new ClickHandler() {
184
				@Override
185
				public void onClick(ClickEvent arg0) {
186
					InformationsRecherche informationsRecherche = new InformationsRecherche();
187
					informationsRecherche.setDate(vue.getDateReleve().getText());
188
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
189
					History.fireCurrentHistoryState();
190
				}
191
			});
192
 
193
			vue.getLienFamille().addClickHandler(new ClickHandler() {
194
				@Override
195
				public void onClick(ClickEvent arg0) {
196
					InformationsRecherche informationsRecherche = new InformationsRecherche();
197
					informationsRecherche.setFamille(vue.getFamille().getText());
198
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
199
					History.fireCurrentHistoryState();
200
				}
201
			});
202
 
203
			vue.getLienLocalite().addClickHandler(new ClickHandler() {
204
				@Override
205
				public void onClick(ClickEvent arg0) {
206
					InformationsRecherche informationsRecherche = new InformationsRecherche();
207
					informationsRecherche.setCommune(vue.getLocalite().getText());
208
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
209
					History.fireCurrentHistoryState();
210
				}
211
			});
212
 
213
			vue.getLienMotsClefs().addClickHandler(new ClickHandler() {
214
				@Override
215
				public void onClick(ClickEvent arg0) {
216
					InformationsRecherche informationsRecherche = new InformationsRecherche();
217
					informationsRecherche.setMotClef(vue.getMotsClefs().getText());
218
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
219
					History.fireCurrentHistoryState();
220
				}
221
			});
222
 
223
			vue.getLienNomCommun().addClickHandler(new ClickHandler() {
224
				@Override
225
				public void onClick(ClickEvent arg0) {
226
					InformationsRecherche informationsRecherche = new InformationsRecherche();
227
					informationsRecherche.setRechercheLibre(vue.getNomCommun().getText());
228
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
229
					History.fireCurrentHistoryState();
230
				}
231
			});
232
 
233
			vue.getLienNomRetenu().addClickHandler(new ClickHandler() {
234
				@Override
235
				public void onClick(ClickEvent arg0) {
236
					InformationsRecherche informationsRecherche = new InformationsRecherche();
237
					informationsRecherche.setRechercheLibre(vue.getNomRetenu().getText());
238
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
239
					History.fireCurrentHistoryState();
240
				}
241
			});
242
 
243
			vue.getLienMilieu().addClickHandler(new ClickHandler() {
244
				@Override
245
				public void onClick(ClickEvent arg0) {
246
					InformationsRecherche informationsRecherche = new InformationsRecherche();
247
					informationsRecherche.setRechercheLibre(vue.getMilieu().getText());
248
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
249
					History.fireCurrentHistoryState();
250
				}
251
			});
252
 
253
			vue.getLienCommentaire().addClickHandler(new ClickHandler() {
254
				@Override
255
				public void onClick(ClickEvent arg0) {
256
					InformationsRecherche informationsRecherche = new InformationsRecherche();
257
					informationsRecherche.setRechercheLibre(vue.getCommentaire().getText());
258
					setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
259
					History.fireCurrentHistoryState();
260
				}
261
			});
1531 mathias 262
 
1342 gduche 263
			vue.setLienIdentiplante(this.observation.getId());
1282 aurelien 264
			vue.activerLiens();
265
 
1667 jpm 266
			if (observation.getIdAuteur().equals("0")) {
1282 aurelien 267
				vue.desactiverLienAuteur();
268
			}
269
		} else {
1531 mathias 270
			if (! observation.getIdAuteur().equals("0")) {
1282 aurelien 271
				vue.getLienAuteur().addClickHandler(new ClickHandler() {
272
					@Override
273
					public void onClick(ClickEvent event) {
274
						Config config = new Config();
1687 mathias 275
						Window.open(config.getUrl("profil") + observation.getIdAuteur(), "Consultation de l'annuaire", config.getInfo("popupOptions"));
1282 aurelien 276
					}
277
				});
278
 
279
				vue.activerLienAuteur();
280
			}
1531 mathias 281
 
282
			if (observation.getNumNomenclatural() != null && ! observation.getNumNomenclatural().equals("0") && ! observation.getNumNomenclatural().equals("")) {
283
				vue.activerLienNomRetenu();
284
				vue.getLienNomRetenu().addClickHandler(new ClickHandler() {
285
					@Override
286
					public void onClick(ClickEvent arg0) {
287
						Config config = new Config();
288
						String efloreUrlFicheTpl = config.getUrl("efloreTaxon");
289
						String efloreUrlFiche = efloreUrlFicheTpl.replaceAll("referentiel-nn-num_nom", observation.getReferentiel().substring(0,5) + "-nn-" + observation.getNumNomenclatural());
1687 mathias 290
						Window.open(efloreUrlFiche, "Fiche eflore", config.getInfo("popupOptions"));
1531 mathias 291
					}
292
				});
293
			}
1078 gduche 294
		}
1667 jpm 295
 
296
		BusEvenementiel.getInstance().addHandler(EvenementChangementEtatUtilisateur.TYPE, new GestionnaireEvenementChangementEtatUtilisateur() {
297
			@Override
298
			public void onModificationEtatUtilisateur(EvenementChangementEtatUtilisateur evenementChangementEtatUtilisateur) {
299
				gererAffichageCourrielAuteur();
300
			}
301
		});
447 gduche 302
	}
1667 jpm 303
 
304
	public void gererAffichageCourrielAuteur() {
305
		GWT.log("Auteur courrriel :"+observation.getCourrielAuteur());
306
		Utilisateur utilisateur = CacheClient.getInstance().getUtilisateur();
307
		if (utilisateur.etreAdmin()) {
308
			vue.getCourrielAuteur().setText(observation.getCourrielAuteur());
309
			vue.setCourrielAuteurHref(observation.getCourrielAuteur());
310
			vue.afficherCourrielAuteur();
311
		} else {
312
			vue.getCourrielAuteur().setText("");
313
			vue.setCourrielAuteurHref("");
314
			vue.cacherCourrielAuteur();
315
		}
316
	}
552 benjamin 317
 
318
	public void setInfosRechercheEnCacheEtLancerEvenement(InformationsRecherche informationsRecherche) {
319
		switch (modeRecherche) {
1667 jpm 320
			case MODE_IMAGE:
321
				CacheClient.getInstance().setPageCouranteRechercheImages(1);
322
				CacheClient.getInstance().setInformationsRechercheImage(informationsRecherche);
323
				BusEvenementiel.getInstance().fireEvent(new EvenementRechercheImage());
324
				break;
325
			case MODE_OBSERVATION:
326
				CacheClient.getInstance().setPageCouranteRechercheObservations(1);
327
				CacheClient.getInstance().setInformationsRechercheObservation(informationsRecherche);
328
				BusEvenementiel.getInstance().fireEvent(new EvenementRechercheObservation());
329
			default:
330
				break;
552 benjamin 331
		}
332
	}
447 gduche 333
}