Subversion Repositories eFlore/Applications.coel

Rev

Rev 472 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 472 Rev 527
Line 4... Line 4...
4
import java.util.HashMap;
4
import java.util.HashMap;
5
import java.util.Iterator;
5
import java.util.Iterator;
6
import java.util.LinkedList;
6
import java.util.LinkedList;
7
import java.util.MissingResourceException;
7
import java.util.MissingResourceException;
Line 8... Line -...
8
 
-
 
9
 
-
 
10
import org.tela_botanica.client.ComposantClass;
8
 
11
import org.tela_botanica.client.ComposantId;
9
import org.tela_botanica.client.ComposantId;
12
import org.tela_botanica.client.Mediateur;
10
import org.tela_botanica.client.Mediateur;
13
import org.tela_botanica.client.RegistreId;
11
import org.tela_botanica.client.RegistreId;
14
import org.tela_botanica.client.interfaces.Rafraichissable;
12
import org.tela_botanica.client.interfaces.Rafraichissable;
15
import org.tela_botanica.client.modeles.Configuration;
13
import org.tela_botanica.client.modeles.Configuration;
16
import org.tela_botanica.client.modeles.Personne;
14
import org.tela_botanica.client.modeles.Personne;
17
import org.tela_botanica.client.modeles.Valeur;
15
import org.tela_botanica.client.modeles.Valeur;
18
import org.tela_botanica.client.modeles.ValeurListe;
16
import org.tela_botanica.client.modeles.ValeurListe;
-
 
17
import org.tela_botanica.client.util.UtilTruk;
19
import org.tela_botanica.client.util.UtilTruk;
18
 
20
import com.extjs.gxt.ui.client.Registry;
19
import com.extjs.gxt.ui.client.Registry;
21
import com.extjs.gxt.ui.client.Style.Scroll;
20
import com.extjs.gxt.ui.client.Style.Scroll;
22
import com.extjs.gxt.ui.client.util.Format;
21
import com.extjs.gxt.ui.client.util.Format;
23
import com.extjs.gxt.ui.client.util.Params;
22
import com.extjs.gxt.ui.client.util.Params;
24
import com.extjs.gxt.ui.client.widget.ContentPanel;
23
import com.extjs.gxt.ui.client.widget.ContentPanel;
25
import com.extjs.gxt.ui.client.widget.HtmlContainer;
-
 
26
import com.extjs.gxt.ui.client.widget.LayoutContainer;
24
import com.extjs.gxt.ui.client.widget.Html;
27
import com.extjs.gxt.ui.client.widget.TabItem;
25
import com.extjs.gxt.ui.client.widget.TabItem;
28
import com.extjs.gxt.ui.client.widget.TabPanel;
26
import com.extjs.gxt.ui.client.widget.TabPanel;
29
import com.extjs.gxt.ui.client.widget.form.FieldSet;
27
import com.extjs.gxt.ui.client.widget.form.FieldSet;
-
 
28
import com.extjs.gxt.ui.client.widget.form.LabelField;
30
import com.extjs.gxt.ui.client.widget.form.LabelField;
29
import com.extjs.gxt.ui.client.widget.layout.AnchorLayout;
31
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
30
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
32
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
31
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
33
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
32
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
34
import com.extjs.gxt.ui.client.widget.layout.RowData;
-
 
35
import com.extjs.gxt.ui.client.widget.layout.RowLayout;
33
import com.extjs.gxt.ui.client.widget.layout.RowData;
Line 36... Line 34...
36
import com.google.gwt.user.client.ui.Image;
34
import com.google.gwt.user.client.ui.Image;
Line 37... Line -...
37
 
-
 
38
public class PersonneDetailVue extends LayoutContainer implements Rafraichissable {
-
 
39
 
-
 
40
	
35
 
-
 
36
public class PersonneDetailVue extends DetailVue implements Rafraichissable {
Line 41... Line -...
41
	private LayoutContainer lcDetailHaut;
-
 
42
	
37
 
43
	// Le panneau détail se compose de formulaires tabulés
-
 
44
	private TabPanel tabPanel;
-
 
45
	
-
 
46
	// Onglet 1 : identite & contact
38
	
47
	private TabItem tabIdentite;
-
 
48
	
-
 
49
	
39
	private TabPanel tabPanel;
50
	// Onglet 2 : Adresses
-
 
51
	private TabItem tabAdresse;
-
 
52
	
-
 
53
	// Onglet 3 : Informations naturalistes
40
	private Html entete;
Line 54... Line -...
54
	private TabItem tabInfosNat;
-
 
55
	private FieldSet fsSpec;
-
 
56
	
-
 
57
	//Onglet 4 : logos
41
	
Line -... Line 42...
-
 
42
	private TabItem tabIdentite;
58
	private TabItem tabLogos;
43
	private TabItem tabAdresse;
Line 59... Line 44...
59
	
44
	private TabItem tabInfosNat;
60
	
45
	private TabItem tabLogos;
Line 61... Line 46...
61
	private Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
46
	
62
	
47
	public PersonneDetailVue(Mediateur mediateur) {
63
	public PersonneDetailVue() {
-
 
64
		
48
		
65
		setLayout(new RowLayout());
-
 
66
		
-
 
67
		ContentPanel cp = new ContentPanel();
-
 
68
		cp.setLayout(new FlowLayout());
-
 
69
		
49
		super(mediateur);
70
		lcDetailHaut = new LayoutContainer();
50
		setLayout(new FitLayout()); 
71
		lcDetailHaut.setLayout(new RowLayout());
-
 
72
		//this.add(lcDetailHaut, new RowData(1, 0.2));
-
 
73
		cp.setTopComponent(lcDetailHaut);
-
 
74
		
-
 
Line 75... Line 51...
75
		add(lcDetailHaut);
51
		
76
	    
52
		entete = new Html();
77
	    
53
		entete.setId(ComposantId.ZONE_DETAIL_ENTETE);
78
		tabPanel = new TabPanel();
-
 
79
		this.add(tabPanel, new RowData(1, 1));
-
 
Line 80... Line -...
80
		
-
 
81
		//Constructeur de la classe
54
		
82
		Registry.register(RegistreId.PANNEAU_PERSONNE_DETAIL, this);
55
		ContentPanel panneauPrincipal = new ContentPanel();
83
		//setLayout(new FitLayout());
56
		panneauPrincipal.setLayout(new FitLayout());
84
		
-
 
Line 85... Line -...
85
		tabIdentite = new TabItem(mediateur.i18nC.personneIdentite());
-
 
86
		tabIdentite.setLayout(new FitLayout());
57
		panneauPrincipal.setHeaderVisible(false);
87
		tabIdentite.setScrollMode(Scroll.AUTO);
-
 
88
				
-
 
89
		tabPanel.add(tabIdentite);
58
		panneauPrincipal.setBodyBorder(true);
Line 90... Line -...
90
		
-
 
91
		//Onglet Adresse:
-
 
92
		tabAdresse = new TabItem(mediateur.i18nC.personneAdresses());
59
		panneauPrincipal.setTopComponent(entete);
93
		tabAdresse.setLayout(new FitLayout());
60
		
Line -... Line 61...
-
 
61
		tabIdentite = new TabItem(mediateur.i18nC.personneIdentite());
-
 
62
		tabIdentite.setLayout(new AnchorLayout());
-
 
63
		tabIdentite.setScrollMode(Scroll.AUTO);	
-
 
64
		
-
 
65
		tabAdresse = new TabItem(mediateur.i18nC.personneAdresses());
-
 
66
		tabAdresse.setLayout(new FitLayout());
-
 
67
		tabAdresse.setScrollMode(Scroll.AUTO);
94
		tabAdresse.setScrollMode(Scroll.AUTO);
68
		
-
 
69
		tabInfosNat = new TabItem(mediateur.i18nC.personneInfoNat());
-
 
70
		tabInfosNat.setScrollMode(Scroll.AUTO);
-
 
71
		
95
		tabPanel.add(tabAdresse);
72
		tabLogos = new TabItem(mediateur.i18nC.personneLogos());
Line 96... Line -...
96
		
-
 
97
		//Onglet info naturalistes
73
		tabLogos.setLayout(new FlowLayout());
Line 98... Line 74...
98
		tabInfosNat = new TabItem(mediateur.i18nC.personneInfoNat());
74
		
99
		fsSpec = new FieldSet();
75
		tabPanel = new TabPanel();
Line 100... Line 76...
100
		fsSpec.setLayout(new FormLayout());
76
		tabPanel.setId(ComposantId.ZONE_DETAIL_CORPS);
101
		tabInfosNat.setScrollMode(Scroll.AUTO);
-
 
102
		
-
 
103
		tabPanel.add(tabInfosNat);
-
 
Line 104... Line -...
104
		
-
 
105
		tabLogos = new TabItem(mediateur.i18nC.personneLogos());
77
		tabPanel.setBodyBorder(false);
106
		tabLogos.setLayout(new FlowLayout());
-
 
107
		
78
		
108
		tabPanel.add(tabLogos);
79
		tabPanel.add(tabIdentite);
Line 109... Line 80...
109
	}
80
		tabPanel.add(tabAdresse);
110
 
81
		tabPanel.add(tabInfosNat);
Line 111... Line 82...
111
	
82
		tabPanel.add(tabLogos);
112
	private HashMap hmLabelFieldRegion = new HashMap();
83
		
113
	
84
		panneauPrincipal.add(tabPanel);
-
 
85
		add(panneauPrincipal);
114
	public void afficherDetailPersonne(Personne personne) {
86
	}
115
		if (personne != null) {
87
 
116
			
88
	private HashMap hmLabelFieldRegion = new HashMap();
Line 117... Line 89...
117
			String enteteTpl = "<div id='{css_id}'>"+
89
	
118
			   "<h1>{nom}</h1>"+
90
	public void afficherDetailPersonne(Personne personne) {
119
			   "<h2><a href='{mail}'>{mail}</a></h2>" +
91
		if (personne != null) {
120
			   "</div>";
92
			
121
			
93
			String tplEntete = initialiserTplEntete();
122
			//MAJ Identité : Configurer les fieldSet
94
			
-
 
95
			Params enteteParams = new Params();
Line 123... Line -...
123
			Params enteteParams = new Params();
-
 
124
			enteteParams.set("css_id", ComposantId.ZONE_DETAIL_ENTETE);
96
			enteteParams.set("nom", (String) personne.get("fmt_nom_complet"));
125
			enteteParams.set("nom", (String) personne.get("fmt_nom_complet"));
97
			enteteParams.set("mail", (String) personne.get("courriel_princ"));
126
			enteteParams.set("mail", (String) personne.get("courriel_princ"));
98
			
127
			
99
			LinkedList lstLogos = (LinkedList) personne.getChaineDenormaliseAsMapOrList("truk_logo");			
Line 128... Line 100...
128
			LinkedList lstLogos = (LinkedList) personne.getChaineDenormaliseAsMapOrList("truk_logo");			
100
			if (lstLogos!=null && lstLogos.size() > 0)	{
Line 129... Line 101...
129
			if (lstLogos!=null && lstLogos.size() > 0)	{
101
				
130
				
-
 
131
				tabLogos.removeAll();
-
 
132
				String urlLogoPrinc = (String) lstLogos.get(0);
-
 
133
				if (!urlLogoPrinc.trim().equals(""))	{
-
 
134
					enteteTpl = "<div style='position:absolute; right:0; width:30%; text-align:right'><img src='{image}' alt='logo' height='45px'/></div>" + enteteTpl;
-
 
135
					enteteParams.set("image", urlLogoPrinc);
-
 
136
				}
-
 
137
				
-
 
138
				Iterator<String> itLogo = lstLogos.iterator();
-
 
139
				while (itLogo.hasNext()){
-
 
140
					String urlLogoCourant = itLogo.next();
-
 
141
					Image imgCourante = new Image(urlLogoCourant);
-
 
Line 142... Line 102...
142
					tabLogos.add(imgCourante);		
102
				tabLogos.removeAll();
143
				}
-
 
144
				
103
				String urlLogoPrinc = (String) lstLogos.get(0);
145
				tabLogos.enable();			
104
				if (!urlLogoPrinc.trim().equals(""))	{
146
			} else {
105
					//TODO : changer le style et déplacer dans CSS
147
				enteteParams.set("image", "");
106
					tplEntete = "<div style='position:absolute; right:0; width:30%; text-align:right'><img src='{image}' alt='logo' height='40px'/></div>" + tplEntete;
148
				tabLogos.disable();
107
					enteteParams.set("image", urlLogoPrinc);
Line 206... Line 165...
206
					}
165
					}
207
					catch (MissingResourceException e)	{
166
					catch (MissingResourceException e)	{
208
						label = key;
167
						label = key;
209
					}
168
					}
Line 210... Line 169...
210
					
169
					
211
					tabIdentiteTpl += "<b>" + label + ":</b> " + key;
170
					tplIdentite += "<b>" + label + ":</b> " + key;
212
					tabIdentiteTpl += "<br />";
171
					tplIdentite += "<br />";
213
				}
172
				}
Line 214... Line -...
214
			}
-
 
215
			
-
 
216
			// FAX > TYPE Téléphone
173
			}
217
			
174
			
218
			// Courriel :Champ truk de la forme "Adresse@adr.com;; adr2@adr.fr ..."
175
			// Courriel :Champ truk de la forme "Adresse@adr.com;; adr2@adr.fr ..."
219
			LinkedList<String> listeCourriel = (LinkedList<String>) personne.getChaineDenormaliseAsMapOrList("truk_courriel");
176
			LinkedList<String> listeCourriel = (LinkedList<String>) personne.getChaineDenormaliseAsMapOrList("truk_courriel");
220
			if ((listeCourriel!=null)&&(listeCourriel.size() > 0))	{
177
			if ((listeCourriel!=null)&&(listeCourriel.size() > 0))	{
Line 226... Line 183...
226
				String valeurCourriel = "";
183
				String valeurCourriel = "";
227
				Iterator<String> itCourriel = listeCourriel.iterator();
184
				Iterator<String> itCourriel = listeCourriel.iterator();
228
				while (itCourriel.hasNext())	{
185
				while (itCourriel.hasNext())	{
229
					String valeurCourante = itCourriel.next();
186
					String valeurCourante = itCourriel.next();
230
					valeurCourriel += "<br /><a href=\"mailto:" + valeurCourante + "\">" + valeurCourante + "</a>";
187
					valeurCourriel += "<br /><a href=\"mailto:" + valeurCourante + "\">" + valeurCourante + "</a>";
231
										
-
 
232
				}
188
				}
233
				
-
 
234
				tabIdentiteTpl += valeurCourriel;
189
				tplIdentite += valeurCourriel;
235
			}
190
			}
Line 236... Line 191...
236
 
191
 
237
			// Url Site Webs
192
			// Url Site Webs
238
			LinkedList listeUrl = (LinkedList) personne.getChaineDenormaliseAsMapOrList("truk_url");
193
			LinkedList listeUrl = (LinkedList) personne.getChaineDenormaliseAsMapOrList("truk_url");
Line 239... Line 194...
239
			if (listeUrl!=null && listeUrl.size() > 0)	{
194
			if (listeUrl!=null && listeUrl.size() > 0)	{
240
				
195
				
241
				tabIdentiteTpl += "<br /><br /><b>Sites web:</b><br /><span style='display:inline-block'>";
196
				tplIdentite += "<br /><br /><b>Sites web:</b><br /><span style='display:inline-block'>";
242
				String strUrl = "";
197
				String strUrl = "";
243
				Iterator<String> urlIt = listeUrl.iterator();
198
				Iterator<String> urlIt = listeUrl.iterator();
244
				while (urlIt.hasNext())	{
199
				while (urlIt.hasNext())	{
245
					String urlCourante = urlIt.next();
200
					String urlCourante = urlIt.next();
246
					strUrl += "<a href=\""+urlCourante+"\">" + urlCourante + "</a> <br/>";
-
 
247
				}
201
					strUrl += "<a href=\""+urlCourante+"\">" + urlCourante + "</a> <br/>";
248
				
202
				}
Line 249... Line 203...
249
				tabIdentiteTpl += strUrl + "</span><br />";
203
				tplIdentite += strUrl + "</span><br />";
Line 250... Line 204...
250
			}			
204
			}			
251
			
-
 
Line 252... Line 205...
252
			tabIdentiteTpl += "</div>";
205
			
-
 
206
			tplIdentite += "</div>";
253
			
207
			
254
			afficherOnglet(tabIdentiteTpl, tabIdentiteParams, tabIdentite);
208
			afficherOnglet(tplIdentite, tabIdentiteParams, tabIdentite);
255
			tabIdentite.setStyleAttribute("padding", "15px");
209
			
256
			
210
			String tabAdresseTpl = 	"<div class='css_corps'>" +
257
			String tabAdresseTpl = 	"<div id='css_id'>" +
211
									"	<div class='css_fieldset'>" +
258
									"	<h1>Adresse personnelle:</h1>" +
212
									"		<h1>Adresse personnelle:</h1>" +
259
									"	{adresse01} <br />" +
213
									"		{adresse01} <br />" +
260
									"	{adresse02} <br />" +
214
									"		{adresse02} <br />" +
261
									"	{boitePostale}<br />" +
215
									"		{boitePostale}<br />" +
262
									"	{codePostal} {region}<br />" +
216
									"		{codePostal} {region}<br />" +
263
									"	<span style='uppercase'>{pays}</span><br />" +
217
									"		<span style='uppercase'>{pays}</span><br />" +
Line 275... Line 229...
275
			afficherOnglet(tabAdresseTpl, paramAdresseTpl, tabAdresse);
229
			afficherOnglet(tabAdresseTpl, paramAdresseTpl, tabAdresse);
276
			tabAdresse.setStyleAttribute("padding", "15px");
230
			tabAdresse.setStyleAttribute("padding", "15px");
Line 277... Line 231...
277
 
231
 
Line -... Line 232...
-
 
232
			// Infos naturalistes :Biographie, Spécialité (typé)
-
 
233
			
278
			// Infos naturalistes :Biographie, Spécialité (typé)
234
			String tplInfosNat = "<div class='css_corps'>" +
-
 
235
								 "	<div class='css_fieldset'>" +
-
 
236
								 "		<h1>Spécialités</h1>"+
-
 
237
								 "			{specialites}" +
-
 
238
								 "		<h1>Récolte</h1>" + 
279
			
239
								 "  </div>" +
Line -... Line 240...
-
 
240
								 "</div>";
280
			fsSpec.setHeading("Spécialités");
241
			Params prmInfosNat = new Params();
281
			tabInfosNat.add(fsSpec);
242
			
Line 282... Line 243...
282
			
243
			String strSpecialites = "";
283
			HashMap hmSpecialite = (HashMap) personne.getChaineDenormaliseAsMapOrList("ce_truk_specialite");
244
			HashMap hmSpecialite = (HashMap) personne.getChaineDenormaliseAsMapOrList("ce_truk_specialite");
Line 299... Line 260...
299
					
260
					
Line 300... Line 261...
300
					specLabel.setFieldLabel( label + ":");
261
					specLabel.setFieldLabel( label + ":");
Line 301... Line 262...
301
					
262
					
302
					specLabel.setValue(hmSpecialite.get(key));
263
					specLabel.setValue(hmSpecialite.get(key));
303
					
264
					
-
 
265
					strSpecialites += specLabel + "<br />";
-
 
266
				}
-
 
267
			}
-
 
268
			prmInfosNat.set("specialites", strSpecialites);
Line 304... Line 269...
304
					fsSpec.add(specLabel);
269
			
305
				}
270
			String strRecolte  ="";
306
			}
271
 
307
			
272
			
308
			// Récolte
273
			System.out.println(personne.getString("truk_recolte"));
309
			LinkedList<String> lstRecolte = (LinkedList) personne.getChaineDenormaliseAsMapOrList("truk_recolte");
274
			LinkedList<String> lstRecolte = (LinkedList) personne.getChaineDenormaliseAsMapOrList("truk_recolte");
Line 341... Line 306...
341
				
306
				
342
				tabInfosNat.add(fsRecolte);
307
				tabInfosNat.add(fsRecolte);
Line 343... Line 308...
343
			}
308
			}
344
			
-
 
345
			changerLabelRegions();
309
			
346
			// tabInfosNat
310
			changerLabelRegions();
347
			layout();
311
			layout();
Line 348... Line -...
348
		} 
-
 
349
	}
312
		} 
Line 350... Line 313...
350
	
313
	}
351
	protected void afficherOnglet(String template, Params parametres, TabItem onglet) {
-
 
352
		String cHtml = Format.substitute(template, parametres);
314
	
353
		
-
 
354
		Params cssParams = new Params();
-
 
355
		cssParams.set("css_corps", ComposantClass.DETAIL_CORPS_CONTENU);
-
 
356
		cssParams.set("css_label", ComposantClass.LABEL);
315
	public String initialiserTplEntete()	{
357
		cssParams.set("css_indentation", ComposantClass.INDENTATION);
-
 
358
		cssParams.set("css_fieldset", ComposantClass.FIELDSET);
-
 
359
		cssParams.set("css_clear", ComposantClass.CLEAR);
316
		
360
		cHtml = Format.substitute(cHtml, cssParams);
-
 
361
		
317
		return "<div id='{css_id}'>"+
Line -... Line 318...
-
 
318
			   "<h1>{nom}</h1>"+
-
 
319
			   "<h2><a href='{mail}'>{mail}</a></h2>" +
-
 
320
			   "</div>";
-
 
321
	}
-
 
322
	
-
 
323
	
-
 
324
	public String initialiserTplIdentite() {
-
 
325
	
-
 
326
		return "<div class='{css_corps}'>" +
-
 
327
			   "	<div class='{css_fieldset}'>" +
-
 
328
				"	 <h2>Noms:</h2>" +
-
 
329
				"	 <span><b>" + mediateur.i18nC.personneNomComplet() + ":</b></span> {nom_complet}<br />" +
-
 
330
				"	 <span><b>" + mediateur.i18nC.personneNomAutre() + ":</b></span> {nom_autre}<br />" +
-
 
331
				"	 <span><b>" + mediateur.i18nC.personneAbreviation() + ":</b></span> {abreviation}<br />" +
-
 
332
				" 	 <span><b>" + mediateur.i18nC.personneAbreviationAutre() + ":</b></b></span> {abreviation_autre}<br /><br />" +
-
 
333
				"	 <h2>Naissance:</h2>" +
-
 
334
				" 	 <span><b>" + mediateur.i18nC.personneDateNaissance() + "</b></span> {naissance_date}<br />" +
-
 
335
				" 	 <span><b>" + mediateur.i18nC.personneLieuNaissance() + ":</b></span> {naissance_lieu}<br /><br />" +
-
 
336
				"	<h2>Décès:</h2>" +
-
 
337
				" 	 <span><b>" + mediateur.i18nC.personneDateDeces() + ":</b></span> {deces_date}<br />" +
-
 
338
				" 	 <span><b>" + mediateur.i18nC.personneLieuDeces() + ":</b></span> {deces_lieu}<br /><br />" +
-
 
339
				" 	</div>" +
-
 
340
				"</div>" +
-
 
341
				"<div class='{css_corps}'>" +
-
 
342
				"	<div class='css_fieldset'> " +
362
		HtmlContainer corpsConteneurDuHtml = new HtmlContainer(cHtml);
343
				"	<h2>Description:</h2>" + 
Line 363... Line 344...
363
		onglet.removeAll();
344
				" 		{description}<br />" +
364
		onglet.add(corpsConteneurDuHtml);		
345
				"	</div>" +