Subversion Repositories eFlore/Applications.coel

Rev

Rev 321 | Rev 436 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 321 Rev 435
Line 5... Line 5...
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 -... Line 8...
-
 
8
 
8
 
9
 
9
 
10
import org.tela_botanica.client.ComposantId;
10
import org.tela_botanica.client.Mediateur;
11
import org.tela_botanica.client.Mediateur;
11
import org.tela_botanica.client.RegistreId;
12
import org.tela_botanica.client.RegistreId;
12
import org.tela_botanica.client.i18n.Constantes;
13
import org.tela_botanica.client.i18n.Constantes;
Line 18... Line 19...
18
import org.tela_botanica.client.util.UtilTruk;
19
import org.tela_botanica.client.util.UtilTruk;
Line 19... Line 20...
19
 
20
 
20
import com.extjs.gxt.ui.client.Registry;
21
import com.extjs.gxt.ui.client.Registry;
21
import com.extjs.gxt.ui.client.Style.Scroll;
22
import com.extjs.gxt.ui.client.Style.Scroll;
-
 
23
import com.extjs.gxt.ui.client.Style.VerticalAlignment;
-
 
24
import com.extjs.gxt.ui.client.util.Format;
22
import com.extjs.gxt.ui.client.Style.VerticalAlignment;
25
import com.extjs.gxt.ui.client.util.Params;
-
 
26
import com.extjs.gxt.ui.client.widget.ContentPanel;
23
import com.extjs.gxt.ui.client.widget.ContentPanel;
27
import com.extjs.gxt.ui.client.widget.Html;
24
import com.extjs.gxt.ui.client.widget.LayoutContainer;
28
import com.extjs.gxt.ui.client.widget.LayoutContainer;
25
import com.extjs.gxt.ui.client.widget.TabItem;
29
import com.extjs.gxt.ui.client.widget.TabItem;
-
 
30
import com.extjs.gxt.ui.client.widget.TabPanel;
26
import com.extjs.gxt.ui.client.widget.TabPanel;
31
import com.extjs.gxt.ui.client.widget.Text;
27
import com.extjs.gxt.ui.client.widget.form.FieldSet;
32
import com.extjs.gxt.ui.client.widget.form.FieldSet;
-
 
33
import com.extjs.gxt.ui.client.widget.form.LabelField;
-
 
34
import com.extjs.gxt.ui.client.widget.layout.ColumnData;
28
import com.extjs.gxt.ui.client.widget.form.LabelField;
35
import com.extjs.gxt.ui.client.widget.layout.ColumnLayout;
29
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
36
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
30
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
37
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
-
 
38
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
-
 
39
import com.extjs.gxt.ui.client.widget.layout.RowData;
31
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
40
import com.extjs.gxt.ui.client.widget.layout.RowLayout;
32
import com.extjs.gxt.ui.client.widget.layout.TableData;
41
import com.extjs.gxt.ui.client.widget.layout.TableData;
Line 33... Line 42...
33
import com.extjs.gxt.ui.client.widget.layout.TableLayout;
42
import com.extjs.gxt.ui.client.widget.layout.TableLayout;
-
 
43
 
34
 
44
import com.google.gwt.core.client.GWT;
Line 35... Line 45...
35
import com.google.gwt.core.client.GWT;
45
import com.google.gwt.i18n.client.DateTimeFormat;
Line -... Line 46...
-
 
46
import com.google.gwt.user.client.ui.Image;
-
 
47
 
-
 
48
public class PersonneDetailPanneauVue extends LayoutContainer implements Rafraichissable {
36
import com.google.gwt.user.client.ui.Image;
49
 
37
 
50
	
Line 38... Line 51...
38
public class PersonneDetailPanneauVue extends LayoutContainer implements Rafraichissable {
51
	private LayoutContainer lcDetailHaut;
39
 
52
	
Line 40... Line -...
40
	// Le panneau détail se compose de formulaires tabulés
-
 
41
	private TabPanel tabPanel;
-
 
42
	
-
 
43
	// Onglet 1 : identite & contact
53
	// Le panneau détail se compose de formulaires tabulés
44
	private TabItem tabIdentite;
54
	private TabPanel tabPanel;
Line 45... Line 55...
45
	
55
	
46
	private ContentPanel panneauIdentite;
56
	// Onglet 1 : identite & contact
Line 56... Line 66...
56
	
66
	
57
	// Onglet 3 : Informations naturalistes
67
	// Onglet 3 : Informations naturalistes
58
	private TabItem tabInfosNat;
68
	private TabItem tabInfosNat;
Line -... Line 69...
-
 
69
	private FieldSet fsSpec;
-
 
70
	
-
 
71
	//Onglet 4 : logos
-
 
72
	private TabItem tabLogos;
59
	private FieldSet fsSpec;
73
	
Line -... Line 74...
-
 
74
	
-
 
75
	private Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
-
 
76
	
-
 
77
	
-
 
78
	//Templates
-
 
79
	private String enteteTpl = "<div style='display:inline-block; padding-left:15px; width:70%; font-size:11px'>"+
-
 
80
							   "<h1>{nom}</h1>"+
-
 
81
							   "<a href='{mail}'>{mail}</a>" +
-
 
82
							   "</div><br/>";
-
 
83
	
-
 
84
	
-
 
85
	private String tabIdentiteTpl = "<div class='coel-fieldset'>" +
-
 
86
									"		<span><b>Nom Complet:</b></span> {nom_complet}<br />" +
-
 
87
									"		<span><b>Autres noms:</b></span> {nom_autre}<br />" +
-
 
88
									"		<span><b>Abréviation:</b></span> {abreviation}<br />" +
-
 
89
									"		<span><b>Autres Abréviations:</b></b></span> {abreviation_autre}<br /><br />" +
-
 
90
									"		<span><b>Date de naissance</b></span> {naissance_date}<br />" +
-
 
91
									"		<span><b>Lieu de naissance:</b></span> {naissance_lieu}<br /><br />" +
-
 
92
									"		<span><b>Date de décès:</b></span> {deces_date}<br />" +
-
 
93
									"		<span><b>Lieu de décès:</b></span> {deces_lieu}<br /><br />" +
-
 
94
									"</div>" +
-
 
95
									"<div class='coel-fieldset'>" +
-
 
96
									"		<span style='vertical-align:top'><b>Description:</b></span> {description}<br />" +
60
	
97
									"</div>";
Line -... Line 98...
-
 
98
	
-
 
99
	
-
 
100
	public PersonneDetailPanneauVue() {
-
 
101
		
-
 
102
		setLayout(new RowLayout());
-
 
103
		
-
 
104
		ContentPanel cp = new ContentPanel();
-
 
105
		cp.setLayout(new FlowLayout());
-
 
106
		
-
 
107
		lcDetailHaut = new LayoutContainer();
-
 
108
		lcDetailHaut.setLayout(new RowLayout());
-
 
109
		//this.add(lcDetailHaut, new RowData(1, 0.2));
-
 
110
		cp.setTopComponent(lcDetailHaut);
61
	private Mediateur mediateur = (Mediateur) Registry.get(RegistreId.MEDIATEUR);
111
		
62
	
112
		add(lcDetailHaut);
Line 63... Line 113...
63
	public PersonneDetailPanneauVue() {
113
	    
64
		
114
	    
65
		tabPanel = new TabPanel();
115
		tabPanel = new TabPanel();
Line 66... Line 116...
66
		this.add(tabPanel);
116
		this.add(tabPanel, new RowData(1, 1));
67
		
-
 
68
		//Constructeur de la classe
117
		
69
		Registry.register(RegistreId.PANNEAU_PERSONNE_DETAIL, this);
118
		//Constructeur de la classe
70
		setLayout(new FitLayout());
-
 
71
		
-
 
72
		tabIdentite = new TabItem("Identité");
-
 
73
		TableLayout tLayout = new TableLayout(2);
-
 
74
		tabIdentite.setLayout(tLayout);
-
 
75
		tabIdentite.setScrollMode(Scroll.AUTO);
-
 
76
		
-
 
77
		panneauIdentite = new ContentPanel();
-
 
78
		panneauIdentite.setWidth("400px");
-
 
79
		panneauIdentite.setHeaderVisible(false);
-
 
80
		panneauIdentite.setBorders(false);
-
 
81
		panneauIdentite.setBodyBorder(false);
-
 
82
		panneauImage = new ContentPanel();
-
 
83
		panneauImage.setLayout(new FlowLayout());
-
 
84
		panneauImage.setBorders(false);
-
 
85
		panneauImage.setWidth(350);
-
 
86
		panneauImage.setBodyBorder(false);
-
 
87
		panneauImage.setHeaderVisible(false);
-
 
88
		
-
 
89
		//Gérer l'alignement vertical en haut
-
 
Line 90... Line 119...
90
		TableData td = new TableData();
119
		Registry.register(RegistreId.PANNEAU_PERSONNE_DETAIL, this);
91
		td.setVerticalAlign(VerticalAlignment.TOP);
120
		//setLayout(new FitLayout());
Line 116... Line 145...
116
		fsSpec.setLayout(new FormLayout());
145
		fsSpec.setLayout(new FormLayout());
117
		tabInfosNat.setScrollMode(Scroll.AUTO);
146
		tabInfosNat.setScrollMode(Scroll.AUTO);
Line 118... Line 147...
118
		
147
		
Line -... Line 148...
-
 
148
		tabPanel.add(tabInfosNat);
-
 
149
		
-
 
150
		tabLogos = new TabItem("Logos");
-
 
151
		tabLogos.setLayout(new FlowLayout());
119
		tabPanel.add(tabInfosNat);
152
		
Line 120... Line 153...
120
		
153
		tabPanel.add(tabLogos);
Line 121... Line 154...
121
	}
154
	}
122
 
155
 
Line 123... Line -...
123
	
-
 
124
	private HashMap hmLabelFieldRegion = new HashMap();
156
	
125
	
-
 
126
	public void afficherDetailPersonne(Personne personne) {
-
 
127
		if (personne != null) {
-
 
128
			
-
 
129
			
-
 
130
			//MAJ Identité : Configurer les fieldSet
-
 
131
			panneauIdentite.removeAll();
-
 
132
			panneauImage.removeAll();
-
 
Line 133... Line 157...
133
			
157
	private HashMap hmLabelFieldRegion = new HashMap();
134
			fsIdentite.setHeading("Identité");
-
 
135
			//fsIdentite.setWidth("350px");
-
 
136
			
158
	
137
			fsContact.setHeading("Contact");
159
	public void afficherDetailPersonne(Personne personne) {
138
			//fsContact.setWidth("350px");
-
 
139
			
-
 
140
			panneauIdentite.add(fsIdentite);
160
		if (personne != null) {
141
			
161
			
142
			
162
			//MAJ Identité : Configurer les fieldSet
-
 
163
			
143
			//La personne peut avoir un ou plusieurs logo
164
			Params enteteParams = new Params();
144
			panneauImage.setHeight("100%");
-
 
145
			panneauImage.setPosition(0, 6);
165
			enteteParams.set("nom", (String) personne.get("fmt_nom_complet"));
146
			panneauImage.setBorders(false);
166
			enteteParams.set("mail", (String) personne.get("courriel_princ"));
147
			
167
			
148
			LinkedList<String> listeLogos = (LinkedList<String>) personne.getChaineDenormaliseAsMapOrList("truk_logo");
-
 
149
			if ((listeLogos != null)&&(listeLogos.size() > 0))	{
-
 
150
				panneauImage.setBorders(true);
-
 
151
				for (int i = 0; i < listeLogos.size(); i++)	{
-
 
152
					String logoUrl = listeLogos.get(i);
-
 
153
					if ((logoUrl!=null)&&(!logoUrl.trim().equals("")))	{
168
			LinkedList lstLogos = (LinkedList) personne.getChaineDenormaliseAsMapOrList("truk_logo");			
154
						//Si c'est le cas, on l'affiche sur la même ligne que fsIdentité
-
 
155
						Image img = new Image();
-
 
156
						img.setUrl(logoUrl);
-
 
157
									
169
			if (lstLogos!=null && lstLogos.size() > 0)	{
Line -... Line 170...
-
 
170
				
-
 
171
				tabLogos.removeAll();
-
 
172
				String urlLogoPrinc = (String) lstLogos.get(0);
-
 
173
				if (!urlLogoPrinc.trim().equals(""))	{
-
 
174
					enteteTpl = "<div style='position:absolute; right:0; width:30%; text-align:right'><img src='{image}' alt='logo' height='45px'/></div>" + enteteTpl;
-
 
175
					enteteParams.set("image", urlLogoPrinc);
-
 
176
				}
-
 
177
				
-
 
178
				Iterator<String> itLogo = lstLogos.iterator();
-
 
179
				while (itLogo.hasNext()){
158
						panneauImage.add(img);			
180
					String urlLogoCourant = itLogo.next();
-
 
181
					Image imgCourante = new Image(urlLogoCourant);
-
 
182
					tabLogos.add(imgCourante);		
159
						if (panneauImage.getWidth() < (img.getWidth() + 15))	{
183
				}
160
							panneauImage.setWidth(img.getWidth() + 15);
184
				
-
 
185
				tabLogos.enable();			
-
 
186
			} else {
-
 
187
				tabLogos.disable();
-
 
188
			}	
-
 
189
			
-
 
190
			lcDetailHaut.el().setInnerHtml(Format.substitute(enteteTpl, enteteParams));
-
 
191
			
Line 161... Line -...
161
						}
-
 
162
						
-
 
163
					}
192
			Params tabIdentiteParams = new Params();
164
				}
193
			tabIdentiteParams.set("nom_complet", personne.getString("fmt_nom_complet"));
165
				
194
			tabIdentiteParams.set("abreviation", personne.getString("abreviation"));
166
			}
-
 
167
			
-
 
168
			panneauIdentite.add(fsContact);
-
 
169
			
-
 
170
			fsIdentite.removeAll();
-
 
171
			fsContact.removeAll();
-
 
172
			fsAdressePerso.removeAll();
-
 
173
			fsSpec.removeAll();
-
 
174
			tabInfosNat.removeAll();
-
 
Line 175... Line 195...
175
			//Ajout des champs Identité
195
			tabIdentiteParams.set("naissance_date", personne.getString("naissance_date"));
176
			
196
			tabIdentiteParams.set("naissance_lieu", personne.getString("naissance_lieu"));
-
 
197
			tabIdentiteParams.set("deces_date", personne.getString("deces_date"));
177
			
198
			tabIdentiteParams.set("deces_lieu", personne.getString("deces_lieu"));
178
			
-
 
179
			// TODO: projet
-
 
180
			
-
 
181
			// nom complet
199
			tabIdentiteParams.set("description", personne.getString("description"));
182
			Object nomComplet = personne.obtenirValeurChamp("fmt_nom_complet");
-
 
183
			ajouterLabelField(fsIdentite,"Nom Complet", nomComplet);
-
 
184
			
200
			
185
			// Nom autre : champ truk; non-typé
-
 
186
			LinkedList<String> nomsAutre = (LinkedList<String>) personne.getChaineDenormaliseAsMapOrList("truk_nom_autre");
-
 
187
			if ((nomsAutre != null)&&(nomsAutre.size() > 0))	{
-
 
188
				
201
			fsAdressePerso.removeAll();
Line 189... Line 202...
189
				LabelField noms = new LabelField();
202
			fsSpec.removeAll();
190
				noms.setFieldLabel("Autres noms:");
203
			tabInfosNat.removeAll();
-
 
204
			
191
				String listeNoms = UtilTruk.traiterTrukListe(nomsAutre, ", ");				
205
			// Nom autre : champ truk; non-typé
192
				noms.setValue(listeNoms);
-
 
193
				fsIdentite.add(noms);				
-
 
194
			}
-
 
195
			
206
			LinkedList<String> nomsAutre = (LinkedList<String>) personne.getChaineDenormaliseAsMapOrList("truk_nom_autre");
196
			// abreviation
-
 
197
			Object abreviation = personne.obtenirValeurChamp("abreviation");
-
 
198
			ajouterLabelField(fsIdentite, "Abreviation", abreviation);
-
 
199
			
-
 
200
			// Abréviations, autre : non-typé
-
 
201
			LinkedList<String> abrevAutres = (LinkedList<String>) personne.getChaineDenormaliseAsMapOrList("truk_abreviation_autre");
-
 
202
			if ((abrevAutres != null)&&(abrevAutres.size() > 0))	{
-
 
203
				
-
 
204
				LabelField abreviations = new LabelField();
-
 
205
				abreviations.setFieldLabel("Autres abreviations:");
-
 
206
				String listeAbrev = UtilTruk.traiterTrukListe(abrevAutres, ", ");
-
 
207
				abreviations.setValue(listeAbrev);
-
 
208
				fsIdentite.add(abreviations);				
-
 
209
			}
-
 
210
			fsIdentite.addText("<hr>");
-
 
211
			
-
 
212
			// date naissance 
-
 
213
			// TODO : Mettre la date en format FR 10/12/09
-
 
214
			Object dateNaissance = personne.obtenirValeurChamp("naissance_date");
-
 
215
			ajouterLabelField(fsIdentite, "Né le", dateNaissance);
-
 
216
						
-
 
217
			// lieu naissance
-
 
218
			Object lieuNaissance = personne.obtenirValeurChamp("naissance_lieu");
-
 
219
			ajouterLabelField(fsIdentite, "A", lieuNaissance);
-
 
220
			
-
 
221
			// date deces
-
 
222
			Object dateDeces = personne.obtenirValeurChamp("deces_date");
-
 
223
			ajouterLabelField(fsIdentite, "Date décès", dateDeces);
-
 
224
			
-
 
225
			// lieu deces
-
 
226
			Object lieuDeces = personne.obtenirValeurChamp("deces_lieu");
-
 
227
			ajouterLabelField(fsIdentite, "Lieu de décès", lieuDeces);
-
 
228
			
-
 
229
			fsIdentite.addText("<hr>");
-
 
230
			
207
			String listeNoms = "";
-
 
208
			if ((nomsAutre != null)&&(nomsAutre.size() > 0))	{
Line -... Line 209...
-
 
209
				listeNoms = UtilTruk.traiterTrukListe(nomsAutre, ", ");				
Line 231... Line -...
231
			//Description
-
 
232
			String description = (String) personne.obtenirValeurChamp("description");
-
 
233
			if ((description!=null)&&(!description.trim().equals("")))	{
210
			}
234
				LabelField txtDescription = new LabelField();
211
			tabIdentiteParams.set("nom_autre", listeNoms);
Line -... Line 212...
-
 
212
			
235
				txtDescription.setFieldLabel("Description:");
213
			// Abréviations, autre : non-typé
236
				txtDescription.setValue(description);
214
			LinkedList<String> abrevAutres = (LinkedList<String>) personne.getChaineDenormaliseAsMapOrList("truk_abreviation_autre");
Line 237... Line 215...
237
				
215
			String listeAbrev = "";
238
				//rendreNonEditable(txtDescription);
216
			if ((abrevAutres != null)&&(abrevAutres.size() > 0))	{
Line 341... Line 319...
341
				urlLabelField.setFieldLabel("Url:");
319
				urlLabelField.setFieldLabel("Url:");
342
				urlLabelField.setValue(strUrl);
320
				urlLabelField.setValue(strUrl);
343
				fsContact.add(urlLabelField);
321
				fsContact.add(urlLabelField);
344
			}
322
			}
Line 345... Line -...
345
			
-
 
-
 
323
			
346
			
324
			tabIdentite.setStyleAttribute("padding", "15px");
Line 347... Line 325...
347
			panneauIdentite.add(fsContact);
325
			//tabIdentite.add(fsContact);
Line 348... Line 326...
348
			
326