Subversion Repositories eFlore/Applications.coel

Rev

Rev 189 | Rev 198 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
150 gduche 1
package org.tela_botanica.client.vues;
2
 
189 gduche 3
 
4
 
197 gduche 5
import java.util.HashMap;
6
import java.util.Iterator;
189 gduche 7
 
197 gduche 8
 
150 gduche 9
import org.tela_botanica.client.RegistreId;
10
import org.tela_botanica.client.interfaces.Rafraichissable;
11
import org.tela_botanica.client.modeles.Personne;
12
import org.tela_botanica.client.modeles.StructureListe;
13
 
14
import com.extjs.gxt.ui.client.Registry;
15
import com.extjs.gxt.ui.client.Style.Scroll;
197 gduche 16
import com.extjs.gxt.ui.client.event.ComponentEvent;
17
import com.extjs.gxt.ui.client.event.KeyListener;
150 gduche 18
import com.extjs.gxt.ui.client.util.Params;
19
import com.extjs.gxt.ui.client.widget.Html;
197 gduche 20
import com.extjs.gxt.ui.client.widget.LayoutContainer;
189 gduche 21
import com.extjs.gxt.ui.client.widget.TabItem;
22
import com.extjs.gxt.ui.client.widget.TabPanel;
197 gduche 23
import com.extjs.gxt.ui.client.widget.form.FieldSet;
24
import com.extjs.gxt.ui.client.widget.form.TextField;
150 gduche 25
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
197 gduche 26
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
27
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
28
import com.extjs.gxt.ui.client.widget.layout.TableLayout;
29
import com.google.gwt.dom.client.LinkElement;
30
import com.google.gwt.dom.client.NodeList;
31
import com.google.gwt.user.client.Window;
189 gduche 32
import com.google.gwt.user.client.ui.Hyperlink;
197 gduche 33
import com.google.gwt.user.client.ui.Image;
189 gduche 34
import com.google.gwt.user.client.ui.Label;
35
import com.google.gwt.user.client.ui.Widget;
36
import com.google.gwt.user.client.ui.HTMLTable.CellFormatter;
150 gduche 37
 
189 gduche 38
public class PersonneDetailPanneauVue extends TabPanel implements Rafraichissable {
150 gduche 39
 
197 gduche 40
	// Le panneau détail se compose de formulaires tabulés
189 gduche 41
 
197 gduche 42
	// Onglet 1 : identite & contact
43
	private TabItem identite;
44
	private FieldSet fsIdentite;
45
	private FieldSet fsContact;
189 gduche 46
 
150 gduche 47
	public PersonneDetailPanneauVue() {
189 gduche 48
 
150 gduche 49
		Registry.register(RegistreId.PANNEAU_PERSONNE_DETAIL, this);
189 gduche 50
		setLayout(new FitLayout());
150 gduche 51
 
197 gduche 52
		identite = new TabItem("Identité");
53
		identite.setLayout(new TableLayout(2));
54
		identite.setScrollMode(Scroll.AUTO);
189 gduche 55
 
197 gduche 56
		fsIdentite = new FieldSet();
57
 
58
		fsIdentite.setLayout(new FormLayout());
59
 
60
 
61
		fsContact = new FieldSet();
62
 
63
		fsContact.setLayout(new FormLayout());
64
 
65
 
66
		this.add(identite);
67
 
150 gduche 68
	}
69
 
70
	public void afficherDetailPersonne(Personne personne) {
71
		if (personne != null) {
197 gduche 72
			identite.removeAll();
150 gduche 73
 
197 gduche 74
			fsIdentite.setHeading("Identité");
75
			fsIdentite.setWidth("350px");
76
			fsIdentite.setStyleAttribute("padding", "1px");
183 gduche 77
 
197 gduche 78
			fsContact.setHeading("Contact");
79
			fsContact.setWidth("350px");
183 gduche 80
 
197 gduche 81
 
82
			identite.add(fsIdentite);
83
 
84
			String logoUrl = (String) personne.obtenirValeurChamp("truk_logo");
85
			if ((logoUrl!=null)&&(!logoUrl.trim().equals("")))	{
189 gduche 86
 
197 gduche 87
				Image img = new Image();
88
				img.setUrl(logoUrl);
89
				img.setTitle("logo-personne");
90
				identite.add(img);
189 gduche 91
 
197 gduche 92
			}	else	{
93
				identite.add(new Label());
189 gduche 94
			}
150 gduche 95
 
197 gduche 96
			identite.add(fsContact);
183 gduche 97
 
98
 
189 gduche 99
 
197 gduche 100
 
101
 
102
			fsIdentite.removeAll();
103
			fsContact.removeAll();
104
			//Ajout des champs Identité
105
 
106
 
107
 
108
			// TODO: projet
109
 
110
			// nom complet
111
			Object nomComplet = personne.obtenirValeurChamp("fmt_nom_complet");
112
			ajouterTextFieldNonEditable(fsIdentite,"Nom", nomComplet);
113
 
114
 
115
			// TODO : nom autre
116
 
117
			// abreviation
118
			Object abreviation = personne.obtenirValeurChamp("abreviation");
119
			ajouterTextFieldNonEditable(fsIdentite, "Abreviation", abreviation);
120
 
121
			// date naissance
122
			Object dateNaissance = personne.obtenirValeurChamp("date_naissance");
123
			ajouterTextFieldNonEditable(fsIdentite, "Date de naissance", dateNaissance);
124
 
125
			// lieu naissance
126
			Object lieuNaissance = personne.obtenirValeurChamp("lieu_naissance");
127
			ajouterTextFieldNonEditable(fsIdentite, "Lieu de naissance", lieuNaissance);
128
 
129
			// date deces
130
			Object dateDeces = personne.obtenirValeurChamp("date_deces");
131
			ajouterTextFieldNonEditable(fsIdentite, "Date de décès", dateDeces);
132
 
133
			// lieu deces
134
			Object lieuDeces = personne.obtenirValeurChamp("lieu_deces");
135
			ajouterTextFieldNonEditable(fsIdentite, "Lieu de décès", lieuDeces);
136
 
137
 
138
 
139
			//CONTACT
140
 
141
			String courriel =  (String) personne.obtenirValeurChamp("truk_courriel");
142
			Hyperlink lnkCourriel = new Hyperlink();
143
			lnkCourriel.setHTML("<b style=\"margin:0 50px 0 0 ; color:black;\">Courriel:</b><a href=\"mailto:" + courriel + "\">" + courriel + "</a>");
144
			fsContact.add(lnkCourriel);
145
 
146
			fsContact.addText("<br >");
147
 
148
			String adresse01 = (String) personne.obtenirValeurChamp("adresse_01");
149
			ajouterTextFieldNonEditable(fsContact, "Adresse", adresse01);
150
 
151
 
152
			String adresse02 = (String) personne.obtenirValeurChamp("adresse_02");
153
			ajouterTextFieldNonEditable(fsContact, "", adresse02);
154
 
155
			String boitePostale = (String) personne.obtenirValeurChamp("bp");
156
			ajouterTextFieldNonEditable(fsContact, "Boite Postale", boitePostale);
157
 
158
			String codePostal = (String) personne.obtenirValeurChamp("code_postal");
159
			ajouterTextFieldNonEditable(fsContact, "Code postal", codePostal);
160
 
161
			String ville = (String) personne.obtenirValeurChamp("ville");
162
			ajouterTextFieldNonEditable(fsContact, "Ville", ville);
163
 
164
			String region = (String) personne.obtenirValeurChamp("region");
165
			ajouterTextFieldNonEditable(fsContact, "Région", region);
166
 
167
			String pays = (String) personne.obtenirValeurChamp("pays");
168
			ajouterTextFieldNonEditable(fsContact, "Pays", pays);
169
 
170
			fsContact.addText("<br >");
171
 
172
 
173
 
150 gduche 174
			layout();
197 gduche 175
		}
176
	}
177
 
178
	public void ajouterTextFieldNonEditable(FieldSet fs, String tfLabel, Object tfValue)	{
179
 
180
		if ((tfValue!=null)&&(!tfValue.toString().trim().equals("")))	{
189 gduche 181
 
197 gduche 182
			TextField tf = new TextField();
183
 
184
			tf.setFieldLabel(tfLabel);
185
			if ((tfLabel==null)||("".equals(tfLabel)))	{
186
				tf.setHideLabel(true);
187
				tf.setStyleAttribute("margin", "0 0 0 105px");
188
			}
189
			tf.setValue(tfValue);
190
 
191
			// Non éditable : on empêche l'évènement par défaut
192
			tf.addKeyListener(new KeyListener()	{
193
 
194
			public void componentKeyPress(ComponentEvent ev)	{
195
				ev.stopEvent();
196
			}
197
			});
198
 
199
			//Ajout au fieldSet
200
			fs.add(tf);
150 gduche 201
		}
202
	}
197 gduche 203
 
204
	/*public void visualiserPersonneIdentite()	{
205
 
206
		//FieldSet identité
207
 
208
		FieldSet fsId = new FieldSet();
209
		fsId.setHeading("Identité");
210
		fsId.setLayout(new FormLayout());
211
 
212
		visualiser(champsIdentite, fsId);
213
 
214
		/*NodeList nl = (NodeList) fsId.getElement().getChildNodes();
215
		Window.alert(String.valueOf(nl.getLength()));*/
216
 
217
		/*identite.add(fsId);
218
 
219
		//TEST
220
		Widget w = (TextField) fsId.getWidget(0);
221
 
222
 
223
		//FieldSet contact
224
		FieldSet fsContact = new FieldSet();
225
		fsContact.setHeading("Contact");
226
 
227
 
228
 
229
	}
230
 
231
	public void visualiser(HashMap champs, LayoutContainer lContent)	{
232
 
233
		Iterator<String> itNomChamps = champs.keySet().iterator();
234
		while (itNomChamps.hasNext())	{
235
			TextField<String> nom = new TextField();
236
			String cle = itNomChamps.next();
237
			nom.setFieldLabel(cle);
238
			nom.setValue((String) champs.get(cle));
239
 
240
			//Dans le cas de la visualisation, on ne veut aucun évènement sur la saisie clavier.
241
			nom.addKeyListener(new KeyListener(){
242
				public void componentKeyPress(ComponentEvent ev)	{
243
					ev.stopEvent();
244
				}
245
 
246
			});
247
 
248
			lContent.add(nom);
249
 
250
	}
251
 
252
	}/*/
253
 
254
 
183 gduche 255
	public void rafraichir(Object nouvelleDonnees) {
256
		if (nouvelleDonnees instanceof Personne) {
257
			afficherDetailPersonne((Personne) nouvelleDonnees);
150 gduche 258
		} else if (nouvelleDonnees instanceof StructureListe) {
259
			StructureListe listeInstitutions = (StructureListe) nouvelleDonnees;
260
			// Test pour savoir si la liste contient des éléments
261
			if (listeInstitutions.size() == 0) {
183 gduche 262
				afficherDetailPersonne(null);
150 gduche 263
			}
183 gduche 264
		}
150 gduche 265
	}
266
 
197 gduche 267
}