Subversion Repositories eFlore/Applications.coel

Rev

Rev 197 | Rev 200 | 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
 
198 gduche 47
	//A ajouter :
48
	// Onglet Adresse
49
		// contient : adresse perso / adresse pro
50
 
51
	//Onglet Info Naturaliste
52
 
53
	// > Se baser sur la présentation thunderBird
54
 
55
 
150 gduche 56
	public PersonneDetailPanneauVue() {
189 gduche 57
 
198 gduche 58
		//Constructeur de la classe
150 gduche 59
		Registry.register(RegistreId.PANNEAU_PERSONNE_DETAIL, this);
189 gduche 60
		setLayout(new FitLayout());
150 gduche 61
 
197 gduche 62
		identite = new TabItem("Identité");
63
		identite.setLayout(new TableLayout(2));
64
		identite.setScrollMode(Scroll.AUTO);
189 gduche 65
 
197 gduche 66
		fsIdentite = new FieldSet();
67
		fsIdentite.setLayout(new FormLayout());
68
 
69
 
70
		fsContact = new FieldSet();
71
		fsContact.setLayout(new FormLayout());
72
 
73
		this.add(identite);
74
 
198 gduche 75
		//TODO : ajouter adresse
76
		//TODO : ajouter info naturaliste
77
 
150 gduche 78
	}
79
 
80
	public void afficherDetailPersonne(Personne personne) {
81
		if (personne != null) {
198 gduche 82
 
83
 
84
			//MAJ Identité : Configurer les fieldSet
197 gduche 85
			identite.removeAll();
150 gduche 86
 
197 gduche 87
			fsIdentite.setHeading("Identité");
88
			fsIdentite.setWidth("350px");
183 gduche 89
 
197 gduche 90
			fsContact.setHeading("Contact");
91
			fsContact.setWidth("350px");
183 gduche 92
 
197 gduche 93
			identite.add(fsIdentite);
94
 
198 gduche 95
			//La personne peut avoir un logo
197 gduche 96
			String logoUrl = (String) personne.obtenirValeurChamp("truk_logo");
198 gduche 97
 
197 gduche 98
			if ((logoUrl!=null)&&(!logoUrl.trim().equals("")))	{
198 gduche 99
				//Si c'est le cas, on l'affiche sur la même ligne que fsIdentité
197 gduche 100
				Image img = new Image();
101
				img.setUrl(logoUrl);
102
				img.setTitle("logo-personne");
198 gduche 103
 
104
				// FIXME : pour avoir un affichage correct, je force la redimension à 300px. Idéalement, ce serait un max-height qu'il faudrait.
105
				// FIXME : L'image devrait se mettre sur deux lignes au lieu d'une, ca décale tout ...
106
				img.setHeight("300px");
107
 
197 gduche 108
				identite.add(img);
189 gduche 109
 
197 gduche 110
			}	else	{
198 gduche 111
				//Sinon, on doit mettre une case vide pour garder une présentation en colonne de fsIdentite & fsContact
197 gduche 112
				identite.add(new Label());
189 gduche 113
			}
150 gduche 114
 
197 gduche 115
			identite.add(fsContact);
198 gduche 116
 
183 gduche 117
 
118
 
189 gduche 119
 
197 gduche 120
			fsIdentite.removeAll();
121
			fsContact.removeAll();
122
			//Ajout des champs Identité
123
 
124
 
125
 
126
			// TODO: projet
127
 
128
			// nom complet
129
			Object nomComplet = personne.obtenirValeurChamp("fmt_nom_complet");
130
			ajouterTextFieldNonEditable(fsIdentite,"Nom", nomComplet);
131
 
132
 
133
			// TODO : nom autre
134
 
135
			// abreviation
136
			Object abreviation = personne.obtenirValeurChamp("abreviation");
137
			ajouterTextFieldNonEditable(fsIdentite, "Abreviation", abreviation);
138
 
139
			// date naissance
140
			Object dateNaissance = personne.obtenirValeurChamp("date_naissance");
141
			ajouterTextFieldNonEditable(fsIdentite, "Date de naissance", dateNaissance);
142
 
143
			// lieu naissance
144
			Object lieuNaissance = personne.obtenirValeurChamp("lieu_naissance");
145
			ajouterTextFieldNonEditable(fsIdentite, "Lieu de naissance", lieuNaissance);
146
 
147
			// date deces
148
			Object dateDeces = personne.obtenirValeurChamp("date_deces");
149
			ajouterTextFieldNonEditable(fsIdentite, "Date de décès", dateDeces);
150
 
151
			// lieu deces
152
			Object lieuDeces = personne.obtenirValeurChamp("lieu_deces");
153
			ajouterTextFieldNonEditable(fsIdentite, "Lieu de décès", lieuDeces);
154
 
155
 
156
 
157
			//CONTACT
158
 
198 gduche 159
			//FIXME : courriel est un champ TRUK
160
			// on doit afficher N entrées
197 gduche 161
			String courriel =  (String) personne.obtenirValeurChamp("truk_courriel");
162
			Hyperlink lnkCourriel = new Hyperlink();
163
			lnkCourriel.setHTML("<b style=\"margin:0 50px 0 0 ; color:black;\">Courriel:</b><a href=\"mailto:" + courriel + "\">" + courriel + "</a>");
164
			fsContact.add(lnkCourriel);
165
 
166
			fsContact.addText("<br >");
167
 
198 gduche 168
 
169
			/*
170
			 * Adresses :
197 gduche 171
			String adresse01 = (String) personne.obtenirValeurChamp("adresse_01");
172
			ajouterTextFieldNonEditable(fsContact, "Adresse", adresse01);
173
 
174
 
175
			String adresse02 = (String) personne.obtenirValeurChamp("adresse_02");
176
			ajouterTextFieldNonEditable(fsContact, "", adresse02);
177
 
178
			String boitePostale = (String) personne.obtenirValeurChamp("bp");
179
			ajouterTextFieldNonEditable(fsContact, "Boite Postale", boitePostale);
180
 
181
			String codePostal = (String) personne.obtenirValeurChamp("code_postal");
182
			ajouterTextFieldNonEditable(fsContact, "Code postal", codePostal);
183
 
184
			String ville = (String) personne.obtenirValeurChamp("ville");
185
			ajouterTextFieldNonEditable(fsContact, "Ville", ville);
186
 
187
			String region = (String) personne.obtenirValeurChamp("region");
188
			ajouterTextFieldNonEditable(fsContact, "Région", region);
189
 
190
			String pays = (String) personne.obtenirValeurChamp("pays");
191
			ajouterTextFieldNonEditable(fsContact, "Pays", pays);
192
 
198 gduche 193
			fsContact.addText("<br >");	*/
197 gduche 194
 
195
 
196
 
150 gduche 197
			layout();
197 gduche 198
		}
199
	}
200
 
201
	public void ajouterTextFieldNonEditable(FieldSet fs, String tfLabel, Object tfValue)	{
202
 
203
		if ((tfValue!=null)&&(!tfValue.toString().trim().equals("")))	{
189 gduche 204
 
197 gduche 205
			TextField tf = new TextField();
206
 
207
			tf.setFieldLabel(tfLabel);
208
			if ((tfLabel==null)||("".equals(tfLabel)))	{
209
				tf.setHideLabel(true);
210
				tf.setStyleAttribute("margin", "0 0 0 105px");
211
			}
212
			tf.setValue(tfValue);
213
 
214
			// Non éditable : on empêche l'évènement par défaut
215
			tf.addKeyListener(new KeyListener()	{
216
 
217
			public void componentKeyPress(ComponentEvent ev)	{
218
				ev.stopEvent();
219
			}
220
			});
221
 
222
			//Ajout au fieldSet
223
			fs.add(tf);
150 gduche 224
		}
225
	}
197 gduche 226
 
183 gduche 227
	public void rafraichir(Object nouvelleDonnees) {
228
		if (nouvelleDonnees instanceof Personne) {
229
			afficherDetailPersonne((Personne) nouvelleDonnees);
150 gduche 230
		} else if (nouvelleDonnees instanceof StructureListe) {
231
			StructureListe listeInstitutions = (StructureListe) nouvelleDonnees;
232
			// Test pour savoir si la liste contient des éléments
233
			if (listeInstitutions.size() == 0) {
183 gduche 234
				afficherDetailPersonne(null);
150 gduche 235
			}
183 gduche 236
		}
150 gduche 237
	}
238
 
197 gduche 239
}