Subversion Repositories eFlore/Applications.coel

Rev

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

Rev Author Line No. Line
935 jpm 1
package org.tela_botanica.client.vues.personne;
150 gduche 2
 
253 gduche 3
import java.util.Collection;
197 gduche 4
import java.util.HashMap;
5
import java.util.Iterator;
253 gduche 6
import java.util.LinkedList;
1284 gduche 7
import java.util.List;
189 gduche 8
 
435 gduche 9
import org.tela_botanica.client.ComposantId;
305 gduche 10
import org.tela_botanica.client.Mediateur;
150 gduche 11
import org.tela_botanica.client.RegistreId;
907 jpm 12
import org.tela_botanica.client.configuration.Configuration;
150 gduche 13
import org.tela_botanica.client.interfaces.Rafraichissable;
1369 cyprien 14
import org.tela_botanica.client.modeles.Valeur;
305 gduche 15
import org.tela_botanica.client.modeles.ValeurListe;
935 jpm 16
import org.tela_botanica.client.modeles.personne.Personne;
1284 gduche 17
import org.tela_botanica.client.modeles.publication.Publication;
18
import org.tela_botanica.client.modeles.publication.PublicationAPersonne;
19
import org.tela_botanica.client.modeles.publication.PublicationAPersonneListe;
1322 gduche 20
import org.tela_botanica.client.synchronisation.Sequenceur;
1292 cyprien 21
import org.tela_botanica.client.util.Debug;
936 jpm 22
import org.tela_botanica.client.vues.DetailVue;
527 gduche 23
 
150 gduche 24
import com.extjs.gxt.ui.client.Registry;
25
import com.extjs.gxt.ui.client.Style.Scroll;
435 gduche 26
import com.extjs.gxt.ui.client.util.Format;
27
import com.extjs.gxt.ui.client.util.Params;
215 aurelien 28
import com.extjs.gxt.ui.client.widget.ContentPanel;
527 gduche 29
import com.extjs.gxt.ui.client.widget.Html;
189 gduche 30
import com.extjs.gxt.ui.client.widget.TabItem;
31
import com.extjs.gxt.ui.client.widget.TabPanel;
197 gduche 32
import com.extjs.gxt.ui.client.widget.form.FieldSet;
246 gduche 33
import com.extjs.gxt.ui.client.widget.form.LabelField;
527 gduche 34
import com.extjs.gxt.ui.client.widget.layout.AnchorLayout;
150 gduche 35
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
197 gduche 36
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
37
import com.google.gwt.user.client.ui.Image;
150 gduche 38
 
527 gduche 39
public class PersonneDetailVue extends DetailVue implements Rafraichissable {
150 gduche 40
 
269 gduche 41
	private TabPanel tabPanel;
527 gduche 42
	private Html entete;
915 jpm 43
 
215 aurelien 44
	private TabItem tabIdentite;
200 gduche 45
	private TabItem tabAdresse;
215 aurelien 46
	private TabItem tabInfosNat;
435 gduche 47
	private TabItem tabLogos;
1284 gduche 48
	private TabItem tabPublications;
49
 
915 jpm 50
	private Configuration config = (Configuration) Registry.get(RegistreId.CONFIG);
51
	private Personne personneAAfficher = null;
52
 
1284 gduche 53
	private String tableauPublicationsLieesTpl = "";
54
	private String lignePublicationLieeTpl = "";
915 jpm 55
 
1322 gduche 56
	private Sequenceur sequenceur = new Sequenceur();
435 gduche 57
 
527 gduche 58
	public PersonneDetailVue(Mediateur mediateur) {
59
		super(mediateur);
1369 cyprien 60
 
820 gduche 61
		setLayout(new FitLayout());
62
 
527 gduche 63
		entete = new Html();
64
		entete.setId(ComposantId.ZONE_DETAIL_ENTETE);
820 gduche 65
 
527 gduche 66
		ContentPanel panneauPrincipal = new ContentPanel();
67
		panneauPrincipal.setLayout(new FitLayout());
68
		panneauPrincipal.setHeaderVisible(false);
69
		panneauPrincipal.setBodyBorder(true);
70
		panneauPrincipal.setTopComponent(entete);
820 gduche 71
 
915 jpm 72
		tabIdentite = new TabItem(i18nC.personneIdentite());
1369 cyprien 73
		tabIdentite.setTitle(i18nC.personneIdentite());
527 gduche 74
		tabIdentite.setLayout(new AnchorLayout());
820 gduche 75
		tabIdentite.setScrollMode(Scroll.AUTO);
76
 
915 jpm 77
		tabAdresse = new TabItem(i18nC.personneAdresses());
1369 cyprien 78
		tabAdresse.setTitle(i18nC.personneAdresses());
472 gduche 79
		tabAdresse.setLayout(new FitLayout());
80
		tabAdresse.setScrollMode(Scroll.AUTO);
820 gduche 81
 
915 jpm 82
		tabInfosNat = new TabItem(i18nC.personneInfoNat());
1369 cyprien 83
		tabInfosNat.setTitle(i18nC.personneInfoNat());
321 gduche 84
		tabInfosNat.setScrollMode(Scroll.AUTO);
820 gduche 85
 
1284 gduche 86
		tabPublications = new TabItem(i18nC.tabPublications());
1369 cyprien 87
		tabPublications.setTitle(i18nC.tabPublications());
1284 gduche 88
		tabPublications.setScrollMode(Scroll.AUTO);
89
		tabPublications.setLayout(new FlowLayout());
90
 
915 jpm 91
		tabLogos = new TabItem(i18nC.personneLogos());
1369 cyprien 92
		tabLogos.setTitle(i18nC.personneLogos());
680 gduche 93
		tabLogos.setScrollMode(Scroll.AUTO);
435 gduche 94
		tabLogos.setLayout(new FlowLayout());
820 gduche 95
 
527 gduche 96
		tabPanel = new TabPanel();
97
		tabPanel.setId(ComposantId.ZONE_DETAIL_CORPS);
98
		tabPanel.setBodyBorder(false);
820 gduche 99
 
527 gduche 100
		tabPanel.add(tabIdentite);
101
		tabPanel.add(tabAdresse);
102
		tabPanel.add(tabInfosNat);
1284 gduche 103
		tabPanel.add(tabPublications);
435 gduche 104
		tabPanel.add(tabLogos);
820 gduche 105
 
527 gduche 106
		panneauPrincipal.add(tabPanel);
107
		add(panneauPrincipal);
150 gduche 108
	}
109
 
110
	public void afficherDetailPersonne(Personne personne) {
111
		if (personne != null) {
527 gduche 112
			String tplEntete = initialiserTplEntete();
1284 gduche 113
 
114
			//Sélection des publication à personne
1367 cyprien 115
			mediateur.selectionnerPublicationAPersonne(this, null, personne.getId(), new LinkedList(), null);
820 gduche 116
 
435 gduche 117
			Params enteteParams = new Params();
118
			enteteParams.set("nom", (String) personne.get("fmt_nom_complet"));
947 gduche 119
			enteteParams.set("mail", (String) personne.getCourrielPrinc());
820 gduche 120
 
1513 jpm 121
			tabLogos.removeAll();
820 gduche 122
			LinkedList lstLogos = (LinkedList) personne
123
					.getChaineDenormaliseAsMapOrList("truk_logo");
124
			if (lstLogos != null && lstLogos.size() > 0) {
125
 
1513 jpm 126
 
435 gduche 127
				String urlLogoPrinc = (String) lstLogos.get(0);
820 gduche 128
				if (!urlLogoPrinc.trim().equals("")) {
129
					tplEntete = "<div id='personne-logo-div'><img src='{image}' alt='logo' /></div>"
130
							+ tplEntete;
435 gduche 131
					enteteParams.set("image", urlLogoPrinc);
253 gduche 132
				}
820 gduche 133
 
435 gduche 134
				Iterator<String> itLogo = lstLogos.iterator();
820 gduche 135
				while (itLogo.hasNext()) {
435 gduche 136
					String urlLogoCourant = itLogo.next();
137
					Image imgCourante = new Image(urlLogoCourant);
820 gduche 138
					tabLogos.add(imgCourante);
435 gduche 139
				}
527 gduche 140
				tabLogos.enable();
820 gduche 141
 
435 gduche 142
			} else {
472 gduche 143
				enteteParams.set("image", "");
435 gduche 144
				tabLogos.disable();
472 gduche 145
			}
820 gduche 146
 
915 jpm 147
			entete.el().setInnerHtml(Format.substitute(tplEntete, enteteParams));
820 gduche 148
 
527 gduche 149
			String tplIdentite = initialiserTplIdentite();
820 gduche 150
 
435 gduche 151
			Params tabIdentiteParams = new Params();
828 gduche 152
			tabIdentiteParams.set("nom_complet", personne.getString("fmt_nom_complet"));
153
			tabIdentiteParams.set("abreviation", personne.getString("abreviation"));
1590 delphine 154
			tabIdentiteParams.set("naissance_date", personne.getAnneeOuDateNaiss().equals("") ? "" : personne.getAnneeOuDateNaiss());
828 gduche 155
			tabIdentiteParams.set("naissance_lieu", personne.getString("naissance_lieu"));
156
			String tplDeces = "";
157
			if (personne.estDecedee())	{
158
				tplDeces = " <h2>Décès:</h2>"
159
						+ " <span><b>"
915 jpm 160
						+ i18nC.personneDateDeces()
828 gduche 161
						+ ":</b></span> {deces_date}<br />"
162
						+ " 	 <span><b>"
915 jpm 163
						+ i18nC.personneLieuDeces()
828 gduche 164
						+ ":</b></span> {deces_lieu}<br /><br />";
165
 
1590 delphine 166
				tabIdentiteParams.set("deces_date", personne.getAnneeOuDateDeces().equals("") ? "" : personne.getAnneeOuDateDeces());
828 gduche 167
				tabIdentiteParams.set("deces_lieu", personne.getString("deces_lieu"));
168
			}
169
 
170
			Params paramsDeces = new Params();
171
			paramsDeces.set("tplDeces", tplDeces);
172
			tplIdentite = Format.substitute(tplIdentite, paramsDeces);
173
 
174
			tabIdentiteParams.set("description", personne.getString("description"));
820 gduche 175
 
321 gduche 176
			tabInfosNat.removeAll();
820 gduche 177
 
178
			tabIdentiteParams.set("nom_autre", construireTxtTruck(personne.getString("truk_nom_autre")));
179
			tabIdentiteParams.set("abreviation_autre", construireTxtTruck(personne.getString("truk_abreviation_autre")));
180
 
977 gduche 181
			tplIdentite += construireTxtListeOntologie(personne.getString("truk_telephone"));
820 gduche 182
 
183
			// Courriel :Champ truk de la forme
184
			// "Adresse@adr.com;; adr2@adr.fr ..."
185
			LinkedList<String> listeCourriel = (LinkedList<String>) personne
186
					.getChaineDenormaliseAsMapOrList("truk_courriel");
187
			if ((listeCourriel != null) && (listeCourriel.size() > 0)) {
253 gduche 188
				String strLabelCourriel = "Courriel";
820 gduche 189
				if (listeCourriel.size() > 1) {
190
					strLabelCourriel += "s";
253 gduche 191
				}
820 gduche 192
 
253 gduche 193
				String valeurCourriel = "";
194
				Iterator<String> itCourriel = listeCourriel.iterator();
820 gduche 195
				while (itCourriel.hasNext()) {
253 gduche 196
					String valeurCourante = itCourriel.next();
820 gduche 197
					valeurCourriel += "<br /><a href=\"mailto:"
198
							+ valeurCourante + "\">" + valeurCourante + "</a>";
253 gduche 199
				}
527 gduche 200
				tplIdentite += valeurCourriel;
253 gduche 201
			}
472 gduche 202
 
260 gduche 203
			// Url Site Webs
820 gduche 204
			LinkedList listeUrl = (LinkedList) personne
205
					.getChaineDenormaliseAsMapOrList("truk_url");
206
			if (listeUrl != null && listeUrl.size() > 0) {
207
 
527 gduche 208
				tplIdentite += "<br /><br /><b>Sites web:</b><br /><span style='display:inline-block'>";
260 gduche 209
				String strUrl = "";
210
				Iterator<String> urlIt = listeUrl.iterator();
820 gduche 211
				while (urlIt.hasNext()) {
260 gduche 212
					String urlCourante = urlIt.next();
820 gduche 213
					strUrl += "<a href=\"" + urlCourante + "\">" + urlCourante
214
							+ "</a> <br/>";
260 gduche 215
				}
527 gduche 216
				tplIdentite += strUrl + "</span><br />";
820 gduche 217
			}
218
 
527 gduche 219
			tplIdentite += "</div>";
820 gduche 220
 
527 gduche 221
			afficherOnglet(tplIdentite, tabIdentiteParams, tabIdentite);
820 gduche 222
 
223
			String tabAdresseTpl = "<div class='{css_corps}'>"
224
					+ "	<div class='{css_fieldset}'>"
225
					+ "		<h2>Adresse personnelle:</h2>"
977 gduche 226
					+ "		<b>Adresse:</b> {adresse01} <br />"
227
					+ "		<b>Boite postale: </b>{boitePostale}<br />"
228
					+ "		<b>Code postal:</b>{codePostal} <br />"
1292 cyprien 229
					+ "		<b>Pays :</b><span style='uppercase'>{pays}</span><br />"
820 gduche 230
					+ "</div>";
231
			// Adresses :
472 gduche 232
			Params paramAdresseTpl = new Params();
820 gduche 233
			paramAdresseTpl.set("adresse01", (String) personne
234
					.obtenirValeurChamp("adresse_01"));
235
			paramAdresseTpl.set("boitePostale", (String) personne
236
					.obtenirValeurChamp("bp"));
237
			paramAdresseTpl.set("codePostal", (String) personne
238
					.obtenirValeurChamp("code_postal"));
239
			paramAdresseTpl.set("ville", (String) personne
240
					.obtenirValeurChamp("ville"));
1292 cyprien 241
			paramAdresseTpl.set("pays", construireTxtListeOntologie((String) personne
242
					.obtenirValeurChamp("ce_truk_pays")));
820 gduche 243
 
472 gduche 244
			afficherOnglet(tabAdresseTpl, paramAdresseTpl, tabAdresse);
245
			tabAdresse.setStyleAttribute("padding", "15px");
215 aurelien 246
 
472 gduche 247
			// Infos naturalistes :Biographie, Spécialité (typé)
820 gduche 248
			String tplInfosNat = "<div class='{css_corps}'>"
249
					+ "	<div class='{css_fieldset}'>" + "		<h2>"
1284 gduche 250
					+ i18nC.personneBiographie() + "</h2>"
251
					+ "			{biographie}" + "		"
252
					+ "<h2>" + i18nC.personneSpecialite() + "</h2>"
253
					+ "			{specialites}" + "	<h2>"
915 jpm 254
					+ i18nC.personneRecolte() + "</h2>"
820 gduche 255
					+ "		{recoltes}" + "  </div>" + "</div>";
527 gduche 256
			Params prmInfosNat = new Params();
820 gduche 257
 
1284 gduche 258
			prmInfosNat.set("biographie", personne.get("biographie"));
259
 
797 gduche 260
			String specialite = construireTxtTruck(personne.getSpecialite());
261
			prmInfosNat.set("specialites", specialite);
820 gduche 262
 
263
			String recolte = construireTxtListeOntologie(personne.getString("truk_recolte"));
797 gduche 264
			prmInfosNat.set("recoltes", recolte);
820 gduche 265
 
797 gduche 266
			afficherOnglet(tplInfosNat, prmInfosNat, tabInfosNat);
267
			tabAdresse.setStyleAttribute("padding", "15px");
820 gduche 268
 
150 gduche 269
			layout();
820 gduche 270
		}
197 gduche 271
	}
820 gduche 272
 
273
	public String initialiserTplEntete() {
274
		return "<div id='{css_id}'>" + "<h1>{nom}</h1>"
275
				+ "<h2><a href='{mail}'>{mail}</a></h2>" + "</div>";
472 gduche 276
	}
820 gduche 277
 
527 gduche 278
	public String initialiserTplIdentite() {
820 gduche 279
		return "<div class='{css_corps}'>" + "	<div class='{css_fieldset}'>"
280
				+ "	 <h2>Noms:</h2>" + "	 <span><b>"
915 jpm 281
				+ i18nC.personneNomComplet()
820 gduche 282
				+ ":</b></span> {nom_complet}<br />"
283
				+ "	 <span><b>"
915 jpm 284
				+ i18nC.personneNomAutre()
820 gduche 285
				+ ":</b></span> {nom_autre}<br />"
286
				+ "	 <span><b>"
915 jpm 287
				+ i18nC.personneAbreviation()
820 gduche 288
				+ ":</b></span> {abreviation}<br />"
289
				+ " 	 <span><b>"
915 jpm 290
				+ i18nC.personneAbreviationAutre()
820 gduche 291
				+ ":</b></b></span> {abreviation_autre}<br /><br />"
292
				+ "	 <h2>Naissance:</h2>"
293
				+ " 	 <span><b>"
915 jpm 294
				+ i18nC.personneDateNaissance()
828 gduche 295
				+ ":</b></span> {naissance_date}<br />"
820 gduche 296
				+ " 	 <span><b>"
915 jpm 297
				+ i18nC.personneLieuNaissance()
820 gduche 298
				+ ":</b></span> {naissance_lieu}<br /><br />"
828 gduche 299
				+ "{tplDeces}"
820 gduche 300
				+ " 	</div>"
301
				+ "</div>"
302
				+ "<div class='{css_corps}'>"
303
				+ "	<div class='css_fieldset'> "
304
				+ "	<h2>Description:</h2>"
305
				+ " 		{description}<br />" + "	</div>" + "<br />";
527 gduche 306
	}
200 gduche 307
 
1284 gduche 308
	private void initialiserTableauPublicationsLieesTpl() {
309
 
310
		tableauPublicationsLieesTpl =
311
			"<div class='{css_corps}'>" +
312
			"	<h2>{i18n_titre_publication}</h2>"+
313
			"	<table>"+
314
			"	<thead>"+
315
			"		<tr>" +
316
			"			<th>{i18n_relation}</th>" +
317
			"			<th>{i18n_auteur}</th>" +
318
			"			<th>{i18n_titre}</th>" +
319
			"			<th>{i18n_revue}</th>" +
320
			"			<th>{i18n_editeur}</th>" +
321
			"			<th>{i18n_annee}</th>" +
322
			"			<th>{i18n_nvt}</th>" +
323
			"			<th>{i18n_fascicule}</th>" +
324
			"			<th>{i18n_page}</th>" +
325
			"		</tr>"+
326
			"	</thead>"+
327
			"	<tbody>"+
328
			"		{lignes}"+
329
			"	</tbody>"+
330
			"</table>";
331
	}
332
 
333
	private void initialiserLignePublicationLieeTpl() {
334
		lignePublicationLieeTpl =
335
			"<tr>"+
336
			"	<td>{relation}</td>"+
337
			"	<td>{auteur}</td>"+
338
			"	<td>{titre}</td>"+
339
			"	<td>{revue}</td>"+
340
			"	<td>{editeur}</td>"+
341
			"	<td>{annee}</td>"+
342
			"	<td>{nvt}</td>"+
343
			"	<td>{fascicule}</td>"+
344
			"	<td>{page}</td>"+
345
			"</tr>";
346
	}
347
	/**
348
	 * @author greg
349
	 * Rempli l'onglet des publications liées
350
	 * @param listePublications la liste des publications
351
	 */
352
	private void afficherPublications(PublicationAPersonneListe listePublications)	{
353
		List<PublicationAPersonne> publicationsLiees = listePublications.toList();
354
		Iterator<PublicationAPersonne> iterateur = publicationsLiees.iterator();
355
 
356
		//Onglet Publications
357
		initialiserTableauPublicationsLieesTpl();
358
		Params paramsPublis = new Params();
359
 
360
		String contenuLignes = "";
361
		while (iterateur.hasNext())	{
362
			initialiserLignePublicationLieeTpl();
363
 
364
			PublicationAPersonne publicationAPersonneCourante = iterateur.next();
365
			Publication publication = publicationAPersonneCourante.getPublicationLiee();
366
 
367
			Params ligneParams = new Params();
368
			ligneParams.set("relation", construireTxtListeOntologie(publicationAPersonneCourante.getRole()));
369
			ligneParams.set("auteur", publication.getAuteur());
370
			ligneParams.set("titre", publication.getTitre());
371
			ligneParams.set("revue", publication.getCollection());
372
			ligneParams.set("editeur", publication.getEditeur());
373
			ligneParams.set("annee", publication.getAnneeParution());
374
			ligneParams.set("nvt", publication.getIndicationNvt());
375
			ligneParams.set("fascicule", publication.getFascicule());
376
			ligneParams.set("page", publication.getPages());
377
			contenuLignes += Format.substitute(lignePublicationLieeTpl, ligneParams);
378
		}
379
 
380
		paramsPublis.set("lignes", contenuLignes);
381
		paramsPublis.set("i18n_titre_publication", i18nC.tabPublications());
382
		paramsPublis.set("i18n_relation", i18nC.publicationAuteurs());
383
		paramsPublis.set("i18n_auteur", i18nC.publicationAuteurs());
384
		paramsPublis.set("i18n_titre", i18nC.publicationTitre());
385
		paramsPublis.set("i18n_revue", i18nC.publicationRevueCollection());
386
		paramsPublis.set("i18n_editeur", i18nC.publicationEditeur());
387
		paramsPublis.set("i18n_annee", i18nC.publicationDateParution());
388
		paramsPublis.set("i18n_nvt", i18nC.publicationNvt());
389
		paramsPublis.set("i18n_fascicule", i18nC.publicationFascicule());
390
		paramsPublis.set("i18n_page", i18nC.publicationPage());
391
		afficherOnglet(tableauPublicationsLieesTpl, paramsPublis, tabPublications);
392
 
393
	}
394
 
305 gduche 395
	public void rafraichir(Object nouvellesDonnees) {
820 gduche 396
 
1322 gduche 397
		if (nouvellesDonnees instanceof ValeurListe)	{
398
			ajouterListeValeursAOntologie((ValeurListe) nouvellesDonnees);
399
		} else if (nouvellesDonnees instanceof Personne) {
400
			afficherDetailPersonne((Personne) nouvellesDonnees);
1284 gduche 401
		} else if (nouvellesDonnees instanceof PublicationAPersonneListe)	{
402
			afficherPublications((PublicationAPersonneListe) nouvellesDonnees);
1373 cyprien 403
			layout();
305 gduche 404
		}
150 gduche 405
	}
406
 
197 gduche 407
}