Subversion Repositories eFlore/Applications.coel

Rev

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

Rev Author Line No. Line
69 jpm 1
package org.tela_botanica.client.vues;
2
 
91 jpm 3
import java.util.ArrayList;
4
import java.util.Iterator;
69 jpm 5
import java.util.List;
6
 
172 jp_milcent 7
import org.tela_botanica.client.ComposantId;
119 jpm 8
import org.tela_botanica.client.Mediateur;
91 jpm 9
import org.tela_botanica.client.Modele;
10
import org.tela_botanica.client.RegistreId;
115 jpm 11
import org.tela_botanica.client.i18n.Constantes;
69 jpm 12
import org.tela_botanica.client.interfaces.Rafraichissable;
91 jpm 13
import org.tela_botanica.client.modeles.Configuration;
153 jpm 14
import org.tela_botanica.client.modeles.Information;
100 jpm 15
import org.tela_botanica.client.modeles.InterneValeur;
16
import org.tela_botanica.client.modeles.InterneValeurListe;
102 jpm 17
import org.tela_botanica.client.modeles.Personne;
119 jpm 18
import org.tela_botanica.client.modeles.Structure;
188 jp_milcent 19
import org.tela_botanica.client.modeles.StructureConservation;
192 jp_milcent 20
import org.tela_botanica.client.modeles.StructureValorisation;
91 jpm 21
import org.tela_botanica.client.modeles.Valeur;
22
import org.tela_botanica.client.modeles.ValeurListe;
69 jpm 23
 
111 jpm 24
import com.extjs.gxt.ui.client.Events;
91 jpm 25
import com.extjs.gxt.ui.client.Registry;
69 jpm 26
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
110 jpm 27
import com.extjs.gxt.ui.client.Style.Scroll;
111 jpm 28
import com.extjs.gxt.ui.client.event.ComponentEvent;
29
import com.extjs.gxt.ui.client.event.Listener;
100 jpm 30
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
31
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
103 jpm 32
import com.extjs.gxt.ui.client.event.SelectionListener;
33
import com.extjs.gxt.ui.client.event.ToolBarEvent;
69 jpm 34
import com.extjs.gxt.ui.client.store.ListStore;
172 jp_milcent 35
import com.extjs.gxt.ui.client.store.Store;
111 jpm 36
import com.extjs.gxt.ui.client.widget.Component;
102 jpm 37
import com.extjs.gxt.ui.client.widget.ContentPanel;
153 jpm 38
import com.extjs.gxt.ui.client.widget.Info;
69 jpm 39
import com.extjs.gxt.ui.client.widget.LayoutContainer;
100 jpm 40
import com.extjs.gxt.ui.client.widget.TabItem;
41
import com.extjs.gxt.ui.client.widget.TabPanel;
188 jp_milcent 42
import com.extjs.gxt.ui.client.widget.WidgetComponent;
69 jpm 43
import com.extjs.gxt.ui.client.widget.button.Button;
108 jpm 44
import com.extjs.gxt.ui.client.widget.form.CheckBox;
45
import com.extjs.gxt.ui.client.widget.form.CheckBoxGroup;
69 jpm 46
import com.extjs.gxt.ui.client.widget.form.ComboBox;
100 jpm 47
import com.extjs.gxt.ui.client.widget.form.DateField;
119 jpm 48
import com.extjs.gxt.ui.client.widget.form.Field;
100 jpm 49
import com.extjs.gxt.ui.client.widget.form.FieldSet;
69 jpm 50
import com.extjs.gxt.ui.client.widget.form.FormPanel;
172 jp_milcent 51
import com.extjs.gxt.ui.client.widget.form.HiddenField;
103 jpm 52
import com.extjs.gxt.ui.client.widget.form.LabelField;
102 jpm 53
import com.extjs.gxt.ui.client.widget.form.NumberField;
109 jpm 54
import com.extjs.gxt.ui.client.widget.form.Radio;
55
import com.extjs.gxt.ui.client.widget.form.RadioGroup;
164 jp_milcent 56
import com.extjs.gxt.ui.client.widget.form.TextArea;
69 jpm 57
import com.extjs.gxt.ui.client.widget.form.TextField;
58
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
59
import com.extjs.gxt.ui.client.widget.form.FormPanel.LabelAlign;
102 jpm 60
import com.extjs.gxt.ui.client.widget.grid.CellEditor;
61
import com.extjs.gxt.ui.client.widget.grid.CheckBoxSelectionModel;
62
import com.extjs.gxt.ui.client.widget.grid.CheckColumnConfig;
63
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
64
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
65
import com.extjs.gxt.ui.client.widget.grid.EditorGrid;
69 jpm 66
import com.extjs.gxt.ui.client.widget.layout.ColumnData;
67
import com.extjs.gxt.ui.client.widget.layout.ColumnLayout;
68
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
69
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
100 jpm 70
import com.extjs.gxt.ui.client.widget.layout.FormData;
69 jpm 71
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
110 jpm 72
import com.extjs.gxt.ui.client.widget.tips.ToolTipConfig;
102 jpm 73
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
74
import com.extjs.gxt.ui.client.widget.toolbar.TextToolItem;
75
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
91 jpm 76
import com.google.gwt.core.client.GWT;
100 jpm 77
import com.google.gwt.i18n.client.DateTimeFormat;
102 jpm 78
import com.google.gwt.i18n.client.NumberFormat;
192 jp_milcent 79
import com.google.gwt.user.client.Event;
133 jpm 80
import com.google.gwt.user.client.Window;
188 jp_milcent 81
import com.google.gwt.user.client.ui.HTML;
82
import com.google.gwt.user.client.ui.Widget;
69 jpm 83
 
84
public class FormStructureVue extends LayoutContainer implements Rafraichissable {
115 jpm 85
 
86
	private Constantes i18nC = null;
119 jpm 87
	private Mediateur mediateur = null;
88
	private Modele modele = null ;
89
 
156 jp_milcent 90
	private String mode = "AJOUT";
119 jpm 91
	private FormPanel structureFormPanneau;
133 jpm 92
	private int tabIndex = 100;
192 jp_milcent 93
	private TabPanel onglets;
94
 
95
	private TabItem identificationOnglet;
96
	private TabItem personnelOnglet = null;
97
	private TabItem conservationOnglet = null;
98
	private TabItem valorisationOnglet = null;
115 jpm 99
 
91 jpm 100
	private ListStore<Valeur> magazinLstpr = null;
101
	private ComboBox<Valeur> comboLstpr = null;
102
	private ListStore<Valeur> magazinLstpu = null;
103
	private ComboBox<Valeur> comboLstpu = null;
103 jpm 104
	private ListStore<Valeur> magazinLiStatut = null;
105
	private ComboBox<Valeur> comboLiStatut = null;
106
	private ListStore<Valeur> magazinLiFonction = null;
107
	private ComboBox<Valeur> comboLiFonction = null;
100 jpm 108
	private ComboBox<InterneValeur> comboAcronyme = null;
109
	private TextField<String> ihChp = null;
110
	private TextField<String> mnhnChp = null;
111
	private ComboBox<InterneValeur> comboTypeStructure = null;
192 jp_milcent 112
 
103 jpm 113
	private EditorGrid<Personne> grillePersonnel = null;
114
	private ListStore<Personne> personnelGrilleMagazin = null;
115
	private LabelField nbreTotalPersonnelChp = null;
115 jpm 116
	private CheckBoxGroup localStockageTrukCacGrpChp = null;
117
	private ContentPanel localStockageTrukCp = null;
118
	private CheckBoxGroup meubleStockageTrukCacGrpChp = null;
119
	private ContentPanel meubleStockageTrukCp = null;
120
	private CheckBoxGroup parametreStockageTrukCacGrpChp = null;
121
	private ContentPanel parametreStockageTrukCp = null;
111 jpm 122
	private ContentPanel collectionAutreTrukCp = null;
123
	private CheckBoxGroup collectionAutreTrukCacGrpChp = null;
115 jpm 124
	private CheckBoxGroup opRestauTrukCacGrpChp = null;
111 jpm 125
	private ContentPanel opRestauTrukCp = null;
115 jpm 126
	private CheckBoxGroup autreMaterielTrukCacGrpChp = null;
127
	private ContentPanel autreMaterielTrukCp = null;
111 jpm 128
	private ContentPanel traitementTrukCp = null;
129
	private CheckBoxGroup traitementTrukCacGrpChp = null;
115 jpm 130
	private ContentPanel poisonTraitementTrukCp = null;
111 jpm 131
	private ContentPanel insecteTraitementTrukCp = null;
132
	private CheckBoxGroup insecteTraitementTrukCacGrpChp = null;
115 jpm 133
	private CheckBoxGroup poisonTraitementTrukCacGrpChp = null;
192 jp_milcent 134
 
115 jpm 135
	private ContentPanel actionTrukCp = null;
136
	private CheckBoxGroup actionTrukCacGrpChp = null;
137
	private ContentPanel autreCollectionTrukCp = null;
119 jpm 138
	private CheckBoxGroup autreCollectionTrukCacGrpChp = null;
115 jpm 139
	private ContentPanel provenanceRechercheTrukCp = null;
140
	private CheckBoxGroup provenanceRechercheTrukCacGrpChp = null;
141
	private CheckBoxGroup typeRechercheTrukCacGrpChp = null;
119 jpm 142
	private ContentPanel typeRechercheTrukCp = null;
115 jpm 143
	private TextField<String> futureActionChp = null;
144
	private TextField<String> sansMotifAccesChp = null;
145
	private TextField<String> avecMotifAccesChp = null;
146
	private TextField<String> formationChp = null;
147
	private RadioGroup traitementAcquisitionMarkRGrpChp = null;
148
	private LabelField traitementAcquisitionMarkLabel = null;
149
	private RadioGroup materielConservationCeRGrpChp = null;
119 jpm 150
 
151
	private RadioGroup actionMarkRGrpChp;
152
	private TextField<String> nomStructureChp;
153
	private DateField dateFondationChp;
164 jp_milcent 154
	private TextArea adrChp;
119 jpm 155
	private TextField<String> cpChp;
156
	private TextField<String> villeChp;
157
	private TextField<String> regionChp;
158
	private TextField<String> telChp;
159
	private TextField<String> faxChp;
160
	private TextField<String> emailChp;
161
	private TextField<String> urlChp;
164 jp_milcent 162
	private ListStore<Valeur> magazinPays;
163
	private ComboBox<Valeur> comboPays;
172 jp_milcent 164
	private HiddenField<String> idStructureChp;
188 jp_milcent 165
	private RadioGroup formationMarkRGrpChp;
166
	private RadioGroup interetFormationMarkRGrpChp;
167
	private RadioGroup collectionCommuneMarkRGrpChp;
168
	private RadioGroup accesControleMarkRGrpChp;
169
	private RadioGroup restaurationMarkRGrpChp;
170
	private RadioGroup traitementMarkRGrpChp;
171
	private RadioGroup collectionAcquisitionMarkRGrpChp;
172
	private RadioGroup echantillonAcquisitionMarkRGrpChp;
173
	private NumberField nbreTotalPersonneStructureChp;
174
	private TextField<String> localStockageAutreChp;
175
	private TextField<String> meubleStockageAutreChp;
176
	private TextField<String> parametreStockageAutreChp;
177
	private TextField<String> collectionAutreAutreChp;
178
	private TextField<String> autreCollectionAutreChp;
179
	private TextField<String> opRestauAutreChp;
180
	private TextField<String> autreMaterielAutreChp;
181
	private TextField<String> poisonTraitementAutreChp;
182
	private TextField<String> traitementAutreChp;
183
	private TextField<String> insecteTraitementAutreChp;
184
	private TextField<String> actionAutreChp;
185
	private TextField<String> provenanceRechercheAutreChp;
186
	private TextField<String> typeRecherche;
187
	private RadioGroup futureActionMarkRGrpChp;
188
	private RadioGroup rechercheMarkRGrpChp;
189
	private RadioGroup sansMotifAccesMarkRGrpChp;
190
	private RadioGroup avecMotifAccesMarkRGrpChp;
191
	private TextField<String> publicationChp;
192
	private ContentPanel materielConservationCp;
192 jp_milcent 193
	private StructureConservation conservation;
194
	private StructureValorisation valorisation;
195
 
196
 
91 jpm 197
 
69 jpm 198
	public FormStructureVue() {
100 jpm 199
		//+-----------------------------------------------------------------------------------------------------------+
200
		// Initialisation de variables
115 jpm 201
		i18nC = GWT.create(Constantes.class);
69 jpm 202
		setLayout(new FitLayout());
119 jpm 203
		modele = Registry.get(RegistreId.MODELE);
204
		mediateur = Registry.get(RegistreId.MEDIATEUR);
205
 
100 jpm 206
		//+-----------------------------------------------------------------------------------------------------------+
110 jpm 207
		// Création du panneau du FORMULAIRE GÉNÉRAL
119 jpm 208
		structureFormPanneau = new FormPanel();
209
		structureFormPanneau.setFrame(true);
210
		structureFormPanneau.setIconStyle("icone-form-ajouter");
211
		structureFormPanneau.setCollapsible(false);
156 jp_milcent 212
		structureFormPanneau.setHeading(i18nC.titreAjoutFormStructurePanneau());
119 jpm 213
		structureFormPanneau.setButtonAlign(HorizontalAlignment.CENTER);
214
		structureFormPanneau.setLayout(new FlowLayout());
100 jpm 215
 
110 jpm 216
		//+-----------------------------------------------------------------------------------------------------------+
100 jpm 217
		// Création des onglets
192 jp_milcent 218
		onglets = new TabPanel();
110 jpm 219
		// NOTE : pour faire apparaître les scrollBar il faut définir la hauteur du panneau d'onglets à 100% (autoHeight ne semble pas fonctionner)
220
		onglets.setHeight("100%");
69 jpm 221
 
100 jpm 222
		//+-----------------------------------------------------------------------------------------------------------+
223
		// Onlget formulaire IDENTIFICATION
110 jpm 224
		onglets.add(creerOngletIdentification());
69 jpm 225
 
100 jpm 226
		//+-----------------------------------------------------------------------------------------------------------+
227
		// Onlget formulaire PERSONNEL
103 jpm 228
		onglets.add(creerOngletPersonnel());
91 jpm 229
 
100 jpm 230
		//+-----------------------------------------------------------------------------------------------------------+
231
		// Onlget formulaire CONSERVATION
108 jpm 232
		onglets.add(creerOngletConservation());
100 jpm 233
 
234
		//+-----------------------------------------------------------------------------------------------------------+
235
		// Onlget formulaire VALORISATION
111 jpm 236
		onglets.add(creerOngletValorisation());
100 jpm 237
 
238
		//+-----------------------------------------------------------------------------------------------------------+
239
		// Gestion du FORMULAIRE GÉNÉRAL
240
 
119 jpm 241
		// Sélection de l'onglet par défaut
192 jp_milcent 242
		onglets.setSelection(valorisationOnglet);
243
 
119 jpm 244
		// Ajout des onglets au formulaire général
245
		structureFormPanneau.add(onglets);
69 jpm 246
 
247
		// Ajout des boutons au panneau formulaire
248
		Button annulerBtn = new Button("Annuler");
172 jp_milcent 249
		annulerBtn.addSelectionListener(new SelectionListener<ComponentEvent>() {
250
 
251
			@Override
252
			public void componentSelected(ComponentEvent ce) {
253
				mediateur.clicMenu("Institutions");
254
			}
255
 
256
		});
119 jpm 257
		structureFormPanneau.addButton(annulerBtn);
69 jpm 258
		Button validerBtn = new Button("Valider");
119 jpm 259
		validerBtn.addSelectionListener(new SelectionListener<ComponentEvent>() {
260
 
261
			@Override
262
			public void componentSelected(ComponentEvent ce) {
263
				soumettreFormulaire();
264
			}
265
 
266
		});
267
		structureFormPanneau.addButton(validerBtn);
69 jpm 268
 
269
		// Ajout du panneau Formulaire à la disposition générale
119 jpm 270
		add(structureFormPanneau);
69 jpm 271
	}
108 jpm 272
 
119 jpm 273
	private void soumettreFormulaire() {
274
		GWT.log("Soumission du formulaire", null);
192 jp_milcent 275
		Structure structure = collecterStructureIdentification();
276
		StructureConservation conservation = collecterStructureConservation();
277
		StructureValorisation valorisation = collecterStructureValorisation();
156 jp_milcent 278
		if (mode == "AJOUT") {
164 jp_milcent 279
			//mediateur.ajouterStructure(this, structure);
156 jp_milcent 280
		} else if (mode == "MODIF") {
192 jp_milcent 281
			mediateur.modifierStructure(this, structure, conservation, valorisation);
156 jp_milcent 282
		}
188 jp_milcent 283
		//GWT.log("Info Structure envoyées :\n"+structure.toString(), null);
119 jpm 284
	}
285
 
192 jp_milcent 286
	private StructureValorisation collecterStructureValorisation() {
188 jp_milcent 287
		// Création de l'objet
192 jp_milcent 288
		StructureValorisation valorisation = new StructureValorisation();
289
 
290
		// ACTION
291
		if (actionMarkRGrpChp.getValue() != null) {
292
			valorisation.setAction(actionMarkRGrpChp.getValue().getValueAttribute());
293
		}
294
 
295
		// ACTION INFO
296
		valorisation.setActionInfo(creerChaineDenormalisee(actionTrukCacGrpChp.getValues()));
297
		valorisation.setActionInfo("AUTRE", actionAutreChp.getValue());
298
 
299
		// PUBLICATION
300
 
301
		// COLLECTION AUTRE
302
 
303
		// ACTION FUTURE
304
 
305
		// ACTION FUTURE INFO
306
 
307
 
308
		return valorisation;
309
	}
310
 
311
	private void peuplerStructureValorisation() {
312
		// ACTION
313
		actionMarkRGrpChp.get((valorisation.getAction().equals("1") ? 0 : 1)).setValue((valorisation.getAction().equals("1") ? true : false));
314
 
315
		// ACTION INFO
316
		peuplerCasesACocher(valorisation.getActionInfo(), actionTrukCacGrpChp, actionAutreChp);
317
 
318
		// PUBLICATION
319
 
320
		// COLLECTION AUTRE
321
 
322
		// ACTION FUTURE
323
 
324
		// ACTION FUTURE INFO
325
	}
326
 
327
	private StructureConservation collecterStructureConservation() {
328
		// Création de l'objet
188 jp_milcent 329
		StructureConservation conservation = new StructureConservation();
330
 
192 jp_milcent 331
		// FORMATION
188 jp_milcent 332
		if (formationMarkRGrpChp.getValue() != null) {
192 jp_milcent 333
			conservation.setFormation(formationMarkRGrpChp.getValue().getValueAttribute());
188 jp_milcent 334
		}
192 jp_milcent 335
		// FORMATION INFO
336
		conservation.setFormationInfo(formationChp.getValue());
337
		// FORMATION INTERET
188 jp_milcent 338
		if (interetFormationMarkRGrpChp.getValue() != null) {
339
			conservation.setFormationInteret(interetFormationMarkRGrpChp.getValue().getValueAttribute());
340
		}
192 jp_milcent 341
 
342
		// STOCKAGE LOCAL
343
		conservation.setStockageLocal(creerChaineDenormalisee(localStockageTrukCacGrpChp.getValues()));
344
		conservation.setStockageLocal("AUTRE", localStockageAutreChp.getValue());
345
 
346
		// STOCKAGE MEUBLE
347
		conservation.setStockageMeuble(creerChaineDenormalisee(meubleStockageTrukCacGrpChp.getValues()));
348
		conservation.setStockageMeuble("AUTRE", meubleStockageAutreChp.getValue());
349
 
350
		// STOCKAGE PAREMETRE
351
		conservation.setStockageParametre(creerChaineDenormalisee(parametreStockageTrukCacGrpChp.getValues()));
352
		conservation.setStockageParametre("AUTRE", parametreStockageAutreChp.getValue());
353
 
354
		// COLLECTION COMMUNE
355
		if (collectionCommuneMarkRGrpChp.getValue() != null) {
356
			conservation.setCollectionCommune(collectionCommuneMarkRGrpChp.getValue().getValueAttribute());
188 jp_milcent 357
		}
192 jp_milcent 358
		// COLLECTION AUTRE
359
		conservation.setCollectionAutre(creerChaineDenormalisee(collectionAutreTrukCacGrpChp.getValues()));
360
		conservation.setCollectionAutre("AUTRE", collectionAutreAutreChp.getValue());
361
 
362
		// ACCÈS CONTROLÉ
363
		if (accesControleMarkRGrpChp.getValue() != null) {
364
			conservation.setAccesControle(accesControleMarkRGrpChp.getValue().getValueAttribute());
365
		}
366
 
367
		// RESTAURATION
368
		if (restaurationMarkRGrpChp.getValue() != null) {
369
			conservation.setRestauration(restaurationMarkRGrpChp.getValue().getValueAttribute());
370
		}
371
		// RESTAURATION OPÉRATION
372
		conservation.setRestaurationOperation(creerChaineDenormalisee(opRestauTrukCacGrpChp.getValues()));
373
		conservation.setRestaurationOperation("AUTRE", opRestauAutreChp.getValue());
374
 
375
		// MATERIEL CONSERVATION
376
		if (materielConservationCeRGrpChp.getValue() != null) {
377
			conservation.setMaterielConservation(materielConservationCeRGrpChp.getValue().getValueAttribute());
378
		}
379
 
380
		// MATERIEL AUTRE
381
		conservation.setMaterielAutre(creerChaineDenormalisee(autreMaterielTrukCacGrpChp.getValues()));
382
		conservation.setMaterielAutre("AUTRE", autreMaterielAutreChp.getValue());
383
 
384
		// TRAITEMENT
385
		if (traitementMarkRGrpChp.getValue() != null) {
386
			conservation.setTraitement(traitementMarkRGrpChp.getValue().getValueAttribute());
387
		}
388
		// TRAIEMENTS
389
		conservation.setTraitements(creerChaineDenormalisee(traitementTrukCacGrpChp.getValues()));
390
		conservation.setTraitements("AUTRE", traitementAutreChp.getValue());
391
 
392
 
393
		// ACQUISITION COLLECTION
394
		if (collectionAcquisitionMarkRGrpChp.getValue() != null) {
395
			conservation.setAcquisitionCollection(collectionAcquisitionMarkRGrpChp.getValue().getValueAttribute());
396
		}
397
 
398
		// ACQUISITION ECHANTILLON
399
		if (echantillonAcquisitionMarkRGrpChp.getValue() != null) {
400
			conservation.setAcquisitionEchantillon(echantillonAcquisitionMarkRGrpChp.getValue().getValueAttribute());
401
		}
402
		// ACQUISITION TRAITEMENT
403
		if (traitementAcquisitionMarkRGrpChp.getValue() != null) {
404
			conservation.setAcquisitionTraitement(traitementAcquisitionMarkRGrpChp.getValue().getValueAttribute());
405
		}
406
		// ACQUISITION TRAITEMENT POISON
407
		conservation.setAcquisitionTraitementPoison(creerChaineDenormalisee(poisonTraitementTrukCacGrpChp.getValues()));
408
		conservation.setAcquisitionTraitementPoison("AUTRE", poisonTraitementAutreChp.getValue());
409
		// ACQUISITION TRAITEMENT INSECTE
410
		conservation.setAcquisitionTraitementInsecte(creerChaineDenormalisee(insecteTraitementTrukCacGrpChp.getValues()));
411
		conservation.setAcquisitionTraitementInsecte("AUTRE", insecteTraitementAutreChp.getValue());
412
 
188 jp_milcent 413
		// Retour de l'objet
414
		GWT.log(conservation.toString(), null);
415
		return conservation;
416
	}
417
 
192 jp_milcent 418
	private void peuplerStructureConservation() {
419
		// FORMATION
420
		// Bouton oui, à toujours l'index 0 donc on teste en fonction...
421
		formationMarkRGrpChp.get((conservation.getFormation().equals("1") ? 0 : 1)).setValue((conservation.getFormation().equals("1") ? true : false));
422
		// FORMATION INFO
423
		formationChp.setValue(conservation.getFormationInfo());
424
		// FORMATION INTERET
425
		interetFormationMarkRGrpChp.get((conservation.getFormationInteret().equals("1") ? 0 : 1)).setValue((conservation.getFormationInteret().equals("1") ? true : false));
426
 
427
		// STOCKAGE LOCAL
428
		peuplerCasesACocher(conservation.getStockageLocal(), localStockageTrukCacGrpChp,localStockageAutreChp);
429
 
430
		// STOCKAGE MEUBLE
431
		peuplerCasesACocher(conservation.getStockageMeuble(), meubleStockageTrukCacGrpChp, meubleStockageAutreChp);
432
 
433
		// STOCKAGE PAREMETRE
434
		peuplerCasesACocher(conservation.getStockageParametre(), parametreStockageTrukCacGrpChp, parametreStockageAutreChp);
188 jp_milcent 435
 
192 jp_milcent 436
		// COLLECTION COMMUNE
437
		collectionCommuneMarkRGrpChp.get((conservation.getCollectionCommune().equals("1") ? 0 : 1)).setValue((conservation.getCollectionCommune().equals("1") ? true : false));
438
		// COLLECTION AUTRE
439
		peuplerCasesACocher(conservation.getCollectionAutre(), collectionAutreTrukCacGrpChp, collectionAutreAutreChp);
440
 
441
		// ACCÈS CONTROLÉ
442
		accesControleMarkRGrpChp.get((conservation.getAccesControle().equals("1") ? 0 : 1)).setValue((conservation.getAccesControle().equals("1") ? true : false));
443
 
444
		// RESTAURATION
445
		restaurationMarkRGrpChp.get((conservation.getRestauration().equals("1") ? 0 : 1)).setValue((conservation.getRestauration().equals("1") ? true : false));
446
		// RESTAURATION OPÉRATION
447
		peuplerCasesACocher(conservation.getRestaurationOperation(), opRestauTrukCacGrpChp, opRestauAutreChp);
448
 
449
		// MATERIEL CONSERVATION
450
		peuplerBoutonsRadio(conservation.getMaterielConservation(), materielConservationCeRGrpChp);
451
 
452
		// MATERIEL AUTRE
453
		peuplerCasesACocher(conservation.getMaterielAutre(), autreMaterielTrukCacGrpChp, autreMaterielAutreChp);
454
 
455
		// TRAITEMENT
456
		traitementMarkRGrpChp.get((conservation.getTraitement().equals("1") ? 0 : 1)).setValue((conservation.getTraitement().equals("1") ? true : false));
457
		// TRAITEMENTS
458
		peuplerCasesACocher(conservation.getTraitements(), traitementTrukCacGrpChp, traitementAutreChp);
459
 
460
		// ACQUISITION COLLECTION
461
		collectionAcquisitionMarkRGrpChp.get((conservation.getAcquisitionCollection().equals("1") ? 0 : 1)).setValue((conservation.getAcquisitionCollection().equals("1") ? true : false));
462
 
463
		// ACQUISITION ECHANTILLON
464
		echantillonAcquisitionMarkRGrpChp.get((conservation.getAcquisitionEchantillon().equals("1") ? 0 : 1)).setValue((conservation.getAcquisitionEchantillon().equals("1") ? true : false));
465
 
466
		// ACQUISITION TRAITEMENT
467
		traitementAcquisitionMarkRGrpChp.get((conservation.getAcquisitionTraitement().equals("1") ? 0 : 1)).setValue((conservation.getAcquisitionTraitement().equals("1") ? true : false));
468
 
469
		// ACQUISITION TRAITEMENT POISON
470
		peuplerCasesACocher(conservation.getAcquisitionTraitementPoison(), poisonTraitementTrukCacGrpChp, poisonTraitementAutreChp);
471
		// ACQUISITION TRAITEMENT INSECTE
472
		peuplerCasesACocher(conservation.getAcquisitionTraitementInsecte(), insecteTraitementTrukCacGrpChp, insecteTraitementAutreChp);
188 jp_milcent 473
	}
474
 
192 jp_milcent 475
	private Structure collecterStructureIdentification() {
188 jp_milcent 476
		// IDENTIFICATION
119 jpm 477
		Structure structure = new Structure();
172 jp_milcent 478
		structure.setId(idStructureChp.getValue());
119 jpm 479
		structure.setNom(nomStructureChp.getValue());
164 jp_milcent 480
		// Récupération de l'acronyme (= identifiant alternatif)
481
		structure.setIdAlternatif(null);
482
		if (comboAcronyme.getValue() != null) {
483
			String typeAcronyme = comboAcronyme.getValue().getAbr();
484
			GWT.log("Acronyme : "+typeAcronyme, null);
485
			if (typeAcronyme == "IH") {
486
				structure.setIdAlternatif(typeAcronyme+"##"+ihChp.getValue());
487
			} else if (typeAcronyme == "MNHN") {
488
				structure.setIdAlternatif(typeAcronyme+"##"+mnhnChp.getValue());
489
			}
490
		}
491
		// Récupération statut de la structure
492
		structure.setTypePublic(null);
493
		structure.setTypePrive(null);
494
		if (comboTypeStructure.getValue() != null) {
495
			String typeStructure = comboTypeStructure.getValue().getAbr();
496
			GWT.log("Statut : "+typeStructure, null);
188 jp_milcent 497
			if (typeStructure == "stpu" && comboLstpu.getValue() != null) {
164 jp_milcent 498
				structure.setTypePublic(comboLstpu.getValue().getId());
188 jp_milcent 499
			} else if (typeStructure == "stpr" && comboLstpr.getValue() != null) {
164 jp_milcent 500
				structure.setTypePrive(comboLstpr.getValue().getId());
501
			}
502
		}
156 jp_milcent 503
		structure.setDateFondation(dateFondationChp.getValue());
164 jp_milcent 504
 
119 jpm 505
		structure.setAdresse(adrChp.getValue());
506
		structure.setCodePostal(cpChp.getValue());
507
		structure.setVille(villeChp.getValue());
508
		structure.setRegion(regionChp.getValue());
164 jp_milcent 509
		structure.setPays(null);
510
		if (comboPays.getValue() != null) {
511
			structure.setPays(comboPays.getValue().getAbreviation());
172 jp_milcent 512
		} else if (comboPays.getRawValue() != "") {
513
			structure.setPays(comboPays.getRawValue());
164 jp_milcent 514
		}
119 jpm 515
 
516
		structure.setTelephone(telChp.getValue());
517
		structure.setFax(faxChp.getValue());
518
		structure.setCourriel(emailChp.getValue());
188 jp_milcent 519
		structure.setUrl(Structure.URL_SITE, urlChp.getValue());
119 jpm 520
 
188 jp_milcent 521
		// CONSERVATION
522
 
156 jp_milcent 523
		return structure;
119 jpm 524
	}
525
 
192 jp_milcent 526
 
527
	private void peuplerStructureIdentification(Structure str) {
172 jp_milcent 528
		idStructureChp.setValue(str.getId());
156 jp_milcent 529
		nomStructureChp.setValue(str.getNom());
188 jp_milcent 530
		if (!str.getIdAlternatif().isEmpty()) {
531
			String[] acronyme = str.getIdAlternatif().split("##");
532
			if (acronyme[0].matches("^IH$")) {
533
				comboAcronyme.setValue(InterneValeurListe.getTypeAcronymeIH());
534
				ihChp.setValue(acronyme[1]);
535
			} else if (acronyme[0].matches("^MNHN$")) {
536
				comboAcronyme.setValue(InterneValeurListe.getTypeAcronymeMNHN());
537
				mnhnChp.setValue(acronyme[1]);
538
			}
539
		}
172 jp_milcent 540
		if (!str.getTypePrive().isEmpty()) {
541
			if (str.getTypePrive().matches("^[0-9]+$")) {
542
				comboTypeStructure.setValue(InterneValeurListe.getTypePrivee());
543
				comboLstpr.setValue(comboLstpr.getStore().findModel("id_valeur", str.getTypePrive()));
544
			}
545
		} else if (!str.getTypePublic().isEmpty()) {
546
			if (str.getTypePublic().matches("^[0-9]+$")) {
547
				comboTypeStructure.setValue(InterneValeurListe.getTypePublique());
548
				comboLstpu.setValue(comboLstpu.getStore().findModel("id_valeur", str.getTypePublic()));
549
			}
550
		}
156 jp_milcent 551
		dateFondationChp.setValue(str.getDateFondation());
552
 
553
		adrChp.setValue(str.getAdresse());
554
		cpChp.setValue(str.getCodePostal());
188 jp_milcent 555
		GWT.log("Classe :"+this.getClass(), null);
156 jp_milcent 556
		villeChp.setValue(str.getVille());
557
		regionChp.setValue(str.getRegion());
172 jp_milcent 558
		if (str.getPays().matches("^[A-Z]{2}$")) {
559
			comboPays.setValue(comboPays.getStore().findModel("abreviation", str.getPays()));
560
		} else {
561
			comboPays.setRawValue(str.getPays());
562
		}
156 jp_milcent 563
 
564
		telChp.setValue(str.getTelephone());
565
		faxChp.setValue(str.getFax());
566
		emailChp.setValue(str.getCourriel());
164 jp_milcent 567
		urlChp.setValue(str.getUrl("WEB"));
156 jp_milcent 568
	}
569
 
111 jpm 570
	private TabItem creerOngletValorisation() {
571
		valorisationOnglet = new TabItem();
572
		valorisationOnglet.setText("Valorisation");
573
		valorisationOnglet.setScrollMode(Scroll.AUTO);
574
		valorisationOnglet.setLayout(creerFormLayout(650, LabelAlign.TOP, null));
192 jp_milcent 575
		valorisationOnglet.addListener(Events.Select, new Listener<ComponentEvent>() {
576
			public void handleEvent(ComponentEvent be) {
577
				peuplerStructureValorisation();
578
			}
579
		});
111 jpm 580
 
119 jpm 581
		actionMarkRGrpChp = creerChoixUniqueRadioGroupe("action_mark", "ouiNon");
111 jpm 582
		actionMarkRGrpChp.setFieldLabel("Avez-vous réalisé des actions de valorisation de vos collections botaniques ou avez-vous été sollicités pour la valorisation de ces collections ?");
583
		valorisationOnglet.add(actionMarkRGrpChp);
584
 
119 jpm 585
 
111 jpm 586
		actionTrukCp = creerChoixMultipleCp("actionValorisation");
587
		actionTrukCp.hide();
115 jpm 588
		actionTrukCacGrpChp = new CheckBoxGroup();
589
		actionTrukCacGrpChp.setFieldLabel("Si oui, lesquelles ?");
111 jpm 590
		valorisationOnglet.add(actionTrukCp);
591
 
188 jp_milcent 592
		publicationChp = new TextField<String>();
111 jpm 593
		publicationChp.setFieldLabel("Quelques titres des ouvrages, articles scientifiques, ...");
594
		valorisationOnglet.add(publicationChp);
595
 
596
		autreCollectionTrukCp = creerChoixMultipleCp("autreCollection");
119 jpm 597
		autreCollectionTrukCacGrpChp = new CheckBoxGroup();
598
		autreCollectionTrukCacGrpChp.setFieldLabel("L'organisme dispose-t-il d'autres collections (permettant une valorisation pluridisciplinaire) ?");
111 jpm 599
		valorisationOnglet.add(autreCollectionTrukCp);
600
 
188 jp_milcent 601
		futureActionMarkRGrpChp = creerChoixUniqueRadioGroupe("future_action_mark", "ouiNon");
111 jpm 602
		futureActionMarkRGrpChp.setFieldLabel("Envisagez vous des actions de valorisation dans le cadre de votre politique culturelle ?");
603
		valorisationOnglet.add(futureActionMarkRGrpChp);
604
 
605
		futureActionChp = new TextField<String>();
606
		futureActionChp.setFieldLabel("Si oui, lesquelles ?");
607
		futureActionChp.hide();
608
		valorisationOnglet.add(futureActionChp);
609
 
188 jp_milcent 610
		rechercheMarkRGrpChp = creerChoixUniqueRadioGroupe("recherche_mark", "ouiNon");
111 jpm 611
		rechercheMarkRGrpChp.setFieldLabel("Vos collections botaniques sont-elles utilisées pour des recherches scientifiques ?");
612
		valorisationOnglet.add(rechercheMarkRGrpChp);
613
 
614
		provenanceRechercheTrukCp = creerChoixMultipleCp("continentEtFr");
615
		provenanceRechercheTrukCp.hide();
115 jpm 616
		provenanceRechercheTrukCacGrpChp = new CheckBoxGroup();
617
		provenanceRechercheTrukCacGrpChp.setFieldLabel("Si oui, par des chercheurs (professionnels ou amateurs) de quelle provenance ?");
111 jpm 618
		valorisationOnglet.add(provenanceRechercheTrukCp);
619
 
119 jpm 620
		typeRechercheTrukCp = creerChoixMultipleCp("typeRecherche");
621
		typeRechercheTrukCp.hide();
115 jpm 622
		typeRechercheTrukCacGrpChp = new CheckBoxGroup();
623
		typeRechercheTrukCacGrpChp.setFieldLabel("Et pour quelles recherches ?");
119 jpm 624
		valorisationOnglet.add(typeRechercheTrukCp);
111 jpm 625
 
188 jp_milcent 626
		sansMotifAccesMarkRGrpChp = creerChoixUniqueRadioGroupe("sans_motif_acces_mark", "ouiNon");
111 jpm 627
		sansMotifAccesMarkRGrpChp.setFieldLabel("Peut-on consulter vos collections botaniques sans motif de recherches scientifiques ?");
628
		valorisationOnglet.add(sansMotifAccesMarkRGrpChp);
629
 
630
		sansMotifAccesChp = new TextField<String>();
631
		sansMotifAccesChp.hide();
632
		sansMotifAccesChp.setFieldLabel("Si oui, quelles démarches doit-on faire pour les consulter ?");
633
		valorisationOnglet.add(sansMotifAccesChp);
634
 
188 jp_milcent 635
		avecMotifAccesMarkRGrpChp = creerChoixUniqueRadioGroupe("avec_motif_acces_mark", "ouiNon");
111 jpm 636
		avecMotifAccesMarkRGrpChp.setFieldLabel("Peut-on visiter vos collections botaniques avec des objectifs de recherches scientifiques ?");
637
		valorisationOnglet.add(avecMotifAccesMarkRGrpChp);
638
 
115 jpm 639
		valorisationOnglet.add(avecMotifAccesChp = new TextField<String>());
111 jpm 640
		avecMotifAccesChp.hide();
641
		avecMotifAccesChp.setFieldLabel("Si oui, quelles démarches doit-on faire pour les visiter ?");
642
 
643
		return valorisationOnglet;
644
	}
645
 
192 jp_milcent 646
 
108 jpm 647
	private TabItem creerOngletConservation() {
648
		conservationOnglet = new TabItem();
649
		conservationOnglet.setText("Conservation");
110 jpm 650
		conservationOnglet.setScrollMode(Scroll.AUTO);
108 jpm 651
		conservationOnglet.setLayout(creerFormLayout(650, LabelAlign.TOP, null));
192 jp_milcent 652
		conservationOnglet.addListener(Events.Select, new Listener<ComponentEvent>() {
653
			public void handleEvent(ComponentEvent be) {
654
				peuplerStructureConservation();
655
			}
656
		});
108 jpm 657
 
188 jp_milcent 658
		formationMarkRGrpChp = creerChoixUniqueRadioGroupe("formation_mark", "ouiNon");
659
		formationMarkRGrpChp.setFieldLabel("Le personnel s'occupant des collections a-t-il suivi des formations en conservations ?");
660
		conservationOnglet.add(formationMarkRGrpChp);
108 jpm 661
 
111 jpm 662
		formationChp = new TextField<String>();
663
		formationChp.hide();
664
		formationChp.setFieldLabel("Si oui, lesquelles ?");
108 jpm 665
		conservationOnglet.add(formationChp);
666
 
188 jp_milcent 667
		interetFormationMarkRGrpChp = creerChoixUniqueRadioGroupe("interet_formation_mark", "ouiNon");
668
		interetFormationMarkRGrpChp.setFieldLabel("Seriez vous intéressé par une formation à la conservation et à la restauration d'herbier ?");
669
		conservationOnglet.add(interetFormationMarkRGrpChp);
108 jpm 670
 
115 jpm 671
		localStockageTrukCp = creerChoixMultipleCp("localStockage");
672
		localStockageTrukCacGrpChp = new CheckBoxGroup();
673
		localStockageTrukCacGrpChp.setFieldLabel("Avez vous des locaux spécifiques de stockage des collections botaniques ?");
674
		conservationOnglet.add(localStockageTrukCp);
108 jpm 675
 
115 jpm 676
		meubleStockageTrukCp = creerChoixMultipleCp("meubleStockage");
677
		meubleStockageTrukCacGrpChp = new CheckBoxGroup();
678
		meubleStockageTrukCacGrpChp.setFieldLabel("Avez vous des meubles spécifiques au stockage des collections botaniques ?");
679
		conservationOnglet.add(meubleStockageTrukCp);
108 jpm 680
 
115 jpm 681
		parametreStockageTrukCp = creerChoixMultipleCp("parametreStockage");
682
		parametreStockageTrukCacGrpChp = new CheckBoxGroup();
683
		parametreStockageTrukCacGrpChp.setFieldLabel("Quels paramètres maîtrisez vous ?");
684
		conservationOnglet.add(parametreStockageTrukCp);
109 jpm 685
 
188 jp_milcent 686
		collectionCommuneMarkRGrpChp = creerChoixUniqueRadioGroupe("collection_commune_mark", "ouiNon");
111 jpm 687
		collectionCommuneMarkRGrpChp.setFieldLabel("Les collections botaniques sont-elles conservées avec d'autres collections  dans les mêmes locaux (problème de conservation en commun) ?");
688
		conservationOnglet.add(collectionCommuneMarkRGrpChp);
109 jpm 689
 
111 jpm 690
		collectionAutreTrukCp = creerChoixMultipleCp("autreCollection");
115 jpm 691
		collectionAutreTrukCacGrpChp = new CheckBoxGroup();
692
		collectionAutreTrukCacGrpChp.setFieldLabel("Si oui, lesquelles ?");
111 jpm 693
		collectionAutreTrukCp.hide();
694
		conservationOnglet.add(collectionAutreTrukCp);
110 jpm 695
 
188 jp_milcent 696
		accesControleMarkRGrpChp = creerChoixUniqueRadioGroupe("mark_acces_controle", "ouiNon");
115 jpm 697
		accesControleMarkRGrpChp.setFieldLabel("L'accès à vos collections botanique est-il contrôlé (ex. : manipulation réservées à des personnes compétentes) ?");
698
		conservationOnglet.add(accesControleMarkRGrpChp);
110 jpm 699
 
188 jp_milcent 700
		restaurationMarkRGrpChp = creerChoixUniqueRadioGroupe("restauration_mark", "ouiNon");
115 jpm 701
		restaurationMarkRGrpChp.setFieldLabel("Effectuez vous des opérations de restauration ou de remise en état de vos collections botaniques ?");
702
		conservationOnglet.add(restaurationMarkRGrpChp);
110 jpm 703
 
111 jpm 704
		opRestauTrukCp = creerChoixMultipleCp("opRestau");
115 jpm 705
		opRestauTrukCacGrpChp = new CheckBoxGroup();
706
		opRestauTrukCacGrpChp.setFieldLabel("Si oui, lesquelles ?");
111 jpm 707
		opRestauTrukCp.hide();
708
		conservationOnglet.add(opRestauTrukCp);
110 jpm 709
 
188 jp_milcent 710
		// Création d'un ContentPanel vide et du groupe de bouton radio
711
		// Le groupe de bouton radio recevra les boutons au moment de la réception des données (rafraichir()) et ser à ce moment là ajouter au ContenetPanel
712
		materielConservationCp = creerChoixMultipleCp("onep");
713
		conservationOnglet.add(materielConservationCp);
115 jpm 714
		materielConservationCeRGrpChp = creerChoixUniqueRadioGroupe("materiel_conservation_ce", "onep");
715
		materielConservationCeRGrpChp.setFieldLabel("Utilisez vous du matériel de conservation ?");
716
		materielConservationCeRGrpChp.setToolTip(new ToolTipConfig("Matériel de conservation", "matériel spécialisé pour la conservation des archives ou du patrimoine fragile. Ce matériel possède des propriétés mécaniques et chimiques qui font qu'il résiste dans le temps et que sa dégradation n'entraîne pas de dommages sur le matériel qu'il aide à conserver. Exemples : papier neutre, papier gommé, etc..."));
110 jpm 717
 
115 jpm 718
		autreMaterielTrukCp = creerChoixMultipleCp("autreMateriel");
719
		autreMaterielTrukCp.hide();
720
		autreMaterielTrukCacGrpChp = new CheckBoxGroup();
721
		autreMaterielTrukCacGrpChp.setFieldLabel("Si non, qu'utilisez vous comme matériel ?");
722
		conservationOnglet.add(autreMaterielTrukCp);
110 jpm 723
 
188 jp_milcent 724
		traitementMarkRGrpChp = creerChoixUniqueRadioGroupe("traitement_mark", "ouiNon");
725
		traitementMarkRGrpChp.setFieldLabel("Réalisez vous actuellement des traitements globaux contre les insectes ?");
726
		conservationOnglet.add(traitementMarkRGrpChp);
110 jpm 727
 
111 jpm 728
		traitementTrukCp = creerChoixMultipleCp("insecteTraitement");
115 jpm 729
		traitementTrukCp.hide();
730
		traitementTrukCacGrpChp = new CheckBoxGroup();
731
		traitementTrukCacGrpChp.setFieldLabel("Si oui, lesquels ?");
111 jpm 732
		conservationOnglet.add(traitementTrukCp);
110 jpm 733
 
188 jp_milcent 734
		collectionAcquisitionMarkRGrpChp = creerChoixUniqueRadioGroupe("collection_acquisition_mark", "ouiNon");
735
		collectionAcquisitionMarkRGrpChp.setFieldLabel("Actuellement, vos collections botaniques s'accroissent-elles de nouvelles acquisitions ?");
736
		conservationOnglet.add(collectionAcquisitionMarkRGrpChp);
110 jpm 737
 
188 jp_milcent 738
		echantillonAcquisitionMarkRGrpChp = creerChoixUniqueRadioGroupe("echantillon_acquisition_mark", "ouiNon");
739
		echantillonAcquisitionMarkRGrpChp.setFieldLabel("Actuellement, mettez vous en herbier de nouveaux échantillons ?");
740
		conservationOnglet.add(echantillonAcquisitionMarkRGrpChp);
110 jpm 741
 
115 jpm 742
		traitementAcquisitionMarkRGrpChp = creerChoixUniqueRadioGroupe("traitement_acquisition_mark", "ouiNon");
743
		traitementAcquisitionMarkRGrpChp.hide();
744
		traitementAcquisitionMarkRGrpChp.setFieldLabel("Si oui, faites-vous un traitement contre les insectes avant l'intégration dans vos collections ?");
745
		conservationOnglet.add(traitementAcquisitionMarkRGrpChp);
110 jpm 746
 
115 jpm 747
		traitementAcquisitionMarkLabel = new LabelField();
748
		traitementAcquisitionMarkLabel.hide();
749
		traitementAcquisitionMarkLabel.setFieldLabel("Si oui, lesquels ?");
750
		conservationOnglet.add(traitementAcquisitionMarkLabel);
110 jpm 751
 
115 jpm 752
		poisonTraitementTrukCp = creerChoixMultipleCp("poisonTraitement");
753
		poisonTraitementTrukCp.hide();
754
		poisonTraitementTrukCacGrpChp = new CheckBoxGroup();
755
		poisonTraitementTrukCacGrpChp.setFieldLabel("Empoisonnement");
756
		poisonTraitementTrukCacGrpChp.setLabelStyle("font-weight:normal;text-decoration:underline;");
757
		poisonTraitementTrukCacGrpChp.setLabelSeparator("");
758
		conservationOnglet.add(poisonTraitementTrukCp);
110 jpm 759
 
111 jpm 760
		insecteTraitementTrukCp = creerChoixMultipleCp("insecteTraitement");
115 jpm 761
		insecteTraitementTrukCp.hide();
762
		insecteTraitementTrukCacGrpChp = new CheckBoxGroup();
763
		insecteTraitementTrukCacGrpChp.setLabelStyle("font-weight:normal;text-decoration:underline;");
764
		insecteTraitementTrukCacGrpChp.setLabelSeparator("");
765
		insecteTraitementTrukCacGrpChp.setFieldLabel("Désinsectisation");
111 jpm 766
		conservationOnglet.add(insecteTraitementTrukCp);
110 jpm 767
 
108 jpm 768
		return conservationOnglet;
769
	}
770
 
103 jpm 771
	private TabItem creerOngletPersonnel() {
108 jpm 772
		personnelOnglet = new TabItem();
103 jpm 773
		personnelOnglet.setText("Personnel");
110 jpm 774
		personnelOnglet.setScrollMode(Scroll.AUTO);
775
		personnelOnglet.setLayout(creerFormLayout(400, LabelAlign.LEFT, null));
103 jpm 776
 
188 jp_milcent 777
		nbreTotalPersonneStructureChp = new NumberField();
103 jpm 778
		nbreTotalPersonneStructureChp.setFieldLabel("Nombre de personne travaillant dans l'institution");
779
		nbreTotalPersonneStructureChp.setFormat(NumberFormat.getFormat("#"));
780
		nbreTotalPersonneStructureChp.setToolTip("Ce champ doit contenir un nombre");
781
		personnelOnglet.add(nbreTotalPersonneStructureChp);
782
 
783
		personnelOnglet.add(this.creerGrillePersonnel());
784
 
785
		nbreTotalPersonnelChp = new LabelField();
786
		nbreTotalPersonnelChp.setFieldLabel("Nombre de personne travaillant sur les collections");
787
		nbreTotalPersonnelChp.setLabelSeparator(":");
788
		nbreTotalPersonnelChp.setValue(""+grillePersonnel.getStore().getCount());
789
		personnelOnglet.add(nbreTotalPersonnelChp);
790
 
791
		return personnelOnglet;
792
	}
793
 
102 jpm 794
	private ContentPanel creerGrillePersonnel() {
103 jpm 795
 
102 jpm 796
		List<Personne> personnes = new ArrayList<Personne>();
797
		personnes.add(new Personne(Valeur.FONCTION_DIRECTEUR));
798
		personnes.add(new Personne(Valeur.FONCTION_CONSERVATEUR));
799
 
103 jpm 800
		personnelGrilleMagazin = new ListStore<Personne>();
801
		personnelGrilleMagazin.add(personnes);
802
 
102 jpm 803
		List<ColumnConfig> configs = new ArrayList<ColumnConfig>();
804
 
805
		CheckBoxSelectionModel<Personne> sm = new CheckBoxSelectionModel<Personne>();
806
		configs.add(sm.getColumn());
103 jpm 807
 
808
		ColumnConfig column = new ColumnConfig("ce_truk_fonction", "Fonction", 100);
119 jpm 809
		modele.obtenirListeValeurs(((Configuration) Registry.get(RegistreId.CONFIG)).getListeId("fonction"));
103 jpm 810
		magazinLiFonction = new ListStore<Valeur>();
811
		magazinLiFonction.add(new ArrayList<Valeur>());
812
 
813
		comboLiFonction = new ComboBox<Valeur>();
814
		comboLiFonction.setTriggerAction(TriggerAction.ALL);
815
		comboLiFonction.setEditable(true);
816
		comboLiFonction.setDisplayField("nom");
817
		//comboLiStatut.setEmptyText("Sélectionez une fonction...");
818
		comboLiFonction.setStore(magazinLiFonction);
819
 
820
		CellEditor fonctionEditor = new CellEditor(comboLiFonction) {
821
			@Override
822
			public Object preProcessValue(Object value) {
823
				if (value == null) {
824
					return value;
825
				}
826
				//GWT.log("pre : "+value.toString(), null);
827
				return comboLiFonction.getStore().findModel("nom", (String) value);
828
			}
829
 
830
			@Override
831
			public Object postProcessValue(Object value) {
832
				if (value == null) {
833
					return value;
834
				}
835
				//GWT.log("post : "+value.toString(), null);
836
				return ((Valeur) value).get("nom");
837
			}
838
		};
839
		column.setEditor(fonctionEditor);
102 jpm 840
		configs.add(column);
841
 
842
		column = new ColumnConfig();
843
		column.setId("prenom");
103 jpm 844
		column.setHeader("Prénom");
845
		column.setWidth(100);
846
		TextField<String> prenomChp = new TextField<String>();
847
		prenomChp.setAllowBlank(false);
848
		prenomChp.getMessages().setBlankText("Ce champ est obligatoire.");
849
		prenomChp.setAutoValidate(true);
850
		column.setEditor(new CellEditor(prenomChp));
102 jpm 851
		configs.add(column);
852
 
853
		column = new ColumnConfig();
854
		column.setId("nom");
855
		column.setHeader("Nom");
103 jpm 856
		column.setWidth(100);
857
		TextField<String> nomChp = new TextField<String>();
858
		nomChp.setAllowBlank(false);
859
		nomChp.getMessages().setBlankText("Ce champ est obligatoire.");
860
		nomChp.setAutoValidate(true);
861
		column.setEditor(new CellEditor(nomChp));
102 jpm 862
		configs.add(column);
863
 
103 jpm 864
		column = new ColumnConfig("tel", "Téléphone", 100);
865
		TextField<String> telChp = new TextField<String>();
866
		column.setEditor(new CellEditor(telChp));
102 jpm 867
		configs.add(column);
868
 
869
		column = new ColumnConfig("fax", "Fax", 100);
103 jpm 870
		TextField<String> faxChp = new TextField<String>();
871
		column.setEditor(new CellEditor(faxChp));
102 jpm 872
		configs.add(column);
873
 
103 jpm 874
		column = new ColumnConfig("courriel", "Courriel", 100);
875
		TextField<String> emailChp = new TextField<String>();
876
		column.setEditor(new CellEditor(emailChp));
102 jpm 877
		configs.add(column);
878
 
119 jpm 879
		modele.obtenirListeValeurs(((Configuration) Registry.get(RegistreId.CONFIG)).getListeId("statut"));
103 jpm 880
		magazinLiStatut = new ListStore<Valeur>();
881
		magazinLiStatut.add(new ArrayList<Valeur>());
882
 
883
		comboLiStatut = new ComboBox<Valeur>();
884
		comboLiStatut.setTriggerAction(TriggerAction.ALL);
885
		comboLiStatut.setEditable(false);
886
		comboLiStatut.setDisplayField("nom");
887
		comboLiStatut.setEmptyText("Sélectionez un statut...");
888
		comboLiStatut.setStore(magazinLiStatut);
889
 
890
		CellEditor statutEditor = new CellEditor(comboLiStatut) {
891
			@Override
892
			public Object preProcessValue(Object value) {
893
				if (value == null) {
894
					return value;
895
				}
896
				//GWT.log("pre : "+value.toString(), null);
897
				return comboLiStatut.getStore().findModel("nom", (String) value);
898
			}
899
 
900
			@Override
901
			public Object postProcessValue(Object value) {
902
				if (value == null) {
903
					return value;
904
				}
905
				//GWT.log("post : "+value.toString(), null);
906
				return ((Valeur) value).get("nom");
907
			}
908
		};
909
		column = new ColumnConfig("statut", "Statut", 100);
910
		column.setEditor(statutEditor);
102 jpm 911
		configs.add(column);
912
 
103 jpm 913
		column = new ColumnConfig("tps_w", "Temps travail", 100);
914
		column.setNumberFormat(NumberFormat.getFormat("##"));
915
		NumberField tpsWChp = new NumberField();
916
		tpsWChp.setFormat(NumberFormat.getFormat("##"));
917
		tpsWChp.setToolTip("Ce champ doit contenir un nombre");
918
		column.setEditor(new CellEditor(tpsWChp));
919
		configs.add(column);
920
 
921
		column = new ColumnConfig("specialites", "Spécialités botaniques", 150);
922
		TextField<String> speChp = new TextField<String>();
923
		column.setEditor(new CellEditor(speChp));
924
		configs.add(column);
925
 
926
		CheckColumnConfig checkColumn = new CheckColumnConfig("mark_contact", "Contact ?", 60);
102 jpm 927
		configs.add(checkColumn);
928
 
929
		ContentPanel cp = new ContentPanel();
930
		cp.setHeading("Personnes travaillant sur les collections");
110 jpm 931
		cp.setIconStyle("icone-table");
932
		cp.setScrollMode(Scroll.AUTO);
103 jpm 933
		cp.setLayout(new FitLayout());
110 jpm 934
		cp.setSize(1100, 200);
102 jpm 935
		cp.setFrame(true);
936
 
937
		ToolBar toolBar = new ToolBar();
103 jpm 938
 
939
		TextToolItem ajouterPersonnelBtn = new TextToolItem("Ajouter", "icone-vcard-ajouter");
940
		ajouterPersonnelBtn.addSelectionListener(new SelectionListener<ToolBarEvent>() {
941
			@Override
942
			public void componentSelected(ToolBarEvent ce) {
943
				Personne personne = new Personne();
944
				grillePersonnel.stopEditing();
945
				personnelGrilleMagazin.insert(personne, 0);
946
				grillePersonnel.startEditing(0, 0);
947
				// Mise à jour du nombre de personnel travaillant sur les collections
948
				nbreTotalPersonnelChp.setValue(""+grillePersonnel.getStore().getCount());
949
				// Activation du bouton supprimer si la grille contient un élément
950
				if (grillePersonnel.getStore().getCount() > 0) {
951
					ce.component.enable();
952
				}
953
			}
954
		});
955
		toolBar.add(ajouterPersonnelBtn);
956
		toolBar.add(new SeparatorToolItem());
957
		TextToolItem supprimerPersonnelBtn = new TextToolItem("Supprimer", "icone-vcard-supprimer");
958
		supprimerPersonnelBtn.addSelectionListener(new SelectionListener<ToolBarEvent>() {
959
			@Override
960
			public void componentSelected(ToolBarEvent ce) {
961
				grillePersonnel.getStore().remove(grillePersonnel.getStore().getAt(0));
962
				// Mise à jour du nombre de personnel travaillant sur les collections
963
				nbreTotalPersonnelChp.setValue(""+grillePersonnel.getStore().getCount());
964
				// Désactivation du bouton supprimer si la grille contient plus d'élément
965
				if (grillePersonnel.getStore().getCount() == 0) {
966
					ce.item.disable();
967
				}
968
			}
969
		});
970
		toolBar.add(supprimerPersonnelBtn);
102 jpm 971
		cp.setTopComponent(toolBar);
972
 
973
		ColumnModel cm = new ColumnModel(configs);
974
 
103 jpm 975
		grillePersonnel = new EditorGrid<Personne>(personnelGrilleMagazin, cm);
976
		grillePersonnel.setBorders(true);
977
		grillePersonnel.setSelectionModel(sm);
978
		grillePersonnel.addPlugin(sm);
979
		grillePersonnel.addPlugin(checkColumn);
110 jpm 980
  		grillePersonnel.setAutoExpandColumn("specialites");
102 jpm 981
 
103 jpm 982
		cp.add(grillePersonnel);
102 jpm 983
		return cp;
984
	}
985
 
110 jpm 986
	private TabItem creerOngletIdentification() {
987
		//+-----------------------------------------------------------------------------------------------------------+
988
		// Onlget formulaire IDENTIFICATION
192 jp_milcent 989
		identificationOnglet = new TabItem();
990
		identificationOnglet.setId("identification");
991
		identificationOnglet.setText("Identification");
110 jpm 992
		identificationOnglet.setLayout(new FormLayout());
993
 
994
		//+-----------------------------------------------------------------------------------------------------------+
172 jp_milcent 995
		// Champs cachés
996
		idStructureChp = new HiddenField<String>();
997
 
998
		//+-----------------------------------------------------------------------------------------------------------+
110 jpm 999
		// Fieldset IDENTITÉ
1000
		FieldSet fieldSetIdentite = new FieldSet();
1001
		fieldSetIdentite.setHeading("Identité");
1002
		fieldSetIdentite.setCollapsible(true);
1003
		fieldSetIdentite.setLayout(creerFormLayout(200, LabelAlign.LEFT, 4));
1004
 
119 jpm 1005
		nomStructureChp = new TextField<String>();
133 jpm 1006
		nomStructureChp.setTabIndex(100);
110 jpm 1007
		nomStructureChp.setFieldLabel("Nom de la structure");
1008
		nomStructureChp.setAllowBlank(false);
1009
		nomStructureChp.getMessages().setBlankText("Ce champ est obligatoire.");
1010
		fieldSetIdentite.add(nomStructureChp, new FormData(450, 0));
1011
 
1012
		// Création du sous-formulaire : Acronyme
1013
		LayoutContainer ligne = new LayoutContainer();
1014
		ligne.setLayout(new ColumnLayout());
1015
		LayoutContainer gauche = new LayoutContainer();
1016
		gauche.setLayout(creerFormLayout(200, LabelAlign.LEFT, 0));
1017
		LayoutContainer droite = new LayoutContainer();
1018
		droite.setLayout(creerFormLayout(0, null, 0));
1019
 
1020
		ListStore<InterneValeur> acronymes = new ListStore<InterneValeur>();
1021
		acronymes.add(InterneValeurListe.getTypeAcronyme());
1022
 
133 jpm 1023
		comboAcronyme = new ComboBox<InterneValeur>();
1024
		comboAcronyme.setTabIndex(101);
110 jpm 1025
		comboAcronyme.setEmptyText("Sélectioner un type d'acronyme...");
1026
		comboAcronyme.setFieldLabel("Acronymes");
1027
		comboAcronyme.setDisplayField("nom");
1028
		comboAcronyme.setStore(acronymes);
1029
		comboAcronyme.setEditable(false);
1030
		comboAcronyme.setTypeAhead(true);
1031
		comboAcronyme.setTriggerAction(TriggerAction.ALL);
1032
		comboAcronyme.addSelectionChangedListener(new SelectionChangedListener<InterneValeur>() {
1033
			@Override
1034
			public void selectionChanged(SelectionChangedEvent<InterneValeur> se) {
1035
				String acronymeAbr = se.getSelectedItem().getAbr();
1036
				if (acronymeAbr.equals("IH")) {
1037
					mnhnChp.hide();
1038
					ihChp.show();
1039
				} else if (acronymeAbr.equals("MNHN")) {
1040
					ihChp.hide();
1041
					mnhnChp.show();
1042
				} else if (acronymeAbr.equals("")) {
1043
					ihChp.hide();
1044
					mnhnChp.hide();
1045
					comboAcronyme.clearSelections();
1046
				}
1047
			}
1048
        });
1049
		gauche.add(comboAcronyme);
1050
 
1051
		ihChp = new TextField<String>();
1052
		//ihChp.setEmptyText("Index Herbariorum");
133 jpm 1053
		ihChp.setTabIndex(102);
110 jpm 1054
		ihChp.setLabelSeparator("");
1055
		ihChp.setToolTip("Index Herbariorum : herbier de plus de 5000 échantillons");
1056
		ihChp.hide();
1057
		droite.add(ihChp);
1058
 
133 jpm 1059
		mnhnChp = new TextField<String>();
1060
		mnhnChp.setTabIndex(103);
110 jpm 1061
		//mnhnChp.setEmptyText("MNHN");
1062
		mnhnChp.setLabelSeparator("");
1063
		mnhnChp.setToolTip("Acronyme MNHN : herbier de moins de 5000 échantillons");
1064
		mnhnChp.hide();
1065
		droite.add(mnhnChp);
1066
 
1067
		ligne.add(gauche, new ColumnData(0.5));
1068
		ligne.add(droite, new ColumnData(0.5));
1069
		fieldSetIdentite.add(ligne);
1070
 
1071
		// Création du sous-formulaire : Type de Structure
1072
		LayoutContainer ligneTs = new LayoutContainer();
1073
		ligneTs.setLayout(new ColumnLayout());
1074
 
1075
		LayoutContainer gaucheTs = new LayoutContainer();
1076
		gaucheTs.setLayout(creerFormLayout(200, LabelAlign.LEFT, 0));
1077
 
1078
		LayoutContainer droiteTs = new LayoutContainer();
1079
		droiteTs.setLayout(creerFormLayout(0, null, 0));
1080
 
1081
		ListStore<InterneValeur> typesStructure = new ListStore<InterneValeur>();
1082
		typesStructure.add(InterneValeurListe.getTypeStructure());
1083
 
133 jpm 1084
		comboTypeStructure = new ComboBox<InterneValeur>();
1085
		comboTypeStructure.setTabIndex(104);
110 jpm 1086
		comboTypeStructure.setEmptyText("Sélectioner un type de structure...");
1087
		comboTypeStructure.setFieldLabel("Statut des structures");
1088
		comboTypeStructure.setDisplayField("nom");
1089
		comboTypeStructure.setStore(typesStructure);
1090
		comboTypeStructure.setEditable(false);
1091
		comboTypeStructure.setTypeAhead(true);
1092
		comboTypeStructure.setTriggerAction(TriggerAction.ALL);
1093
		comboTypeStructure.addSelectionChangedListener(new SelectionChangedListener<InterneValeur>() {
1094
			@Override
1095
			public void selectionChanged(SelectionChangedEvent<InterneValeur> se) {
1096
				String typeAbr = se.getSelectedItem().getAbr();
1097
				if (typeAbr.equals("stpu")) {
1098
					comboLstpr.hide();
1099
					comboLstpu.show();
1100
				} else if (typeAbr.equals("stpr")) {
1101
					comboLstpu.hide();
1102
					comboLstpr.show();
1103
				} else if (typeAbr.equals("")) {
1104
					comboLstpr.hide();
1105
					comboLstpu.hide();
1106
					comboTypeStructure.clearSelections();
1107
				}
1108
			}
1109
        });
1110
		gaucheTs.add(comboTypeStructure);
1111
 
119 jpm 1112
		modele.obtenirListeValeurs(((Configuration) Registry.get(RegistreId.CONFIG)).getListeId("stpu"));
110 jpm 1113
		magazinLstpu = new ListStore<Valeur>();
1114
		magazinLstpu.add(new ArrayList<Valeur>());
133 jpm 1115
		comboLstpu = new ComboBox<Valeur>();
1116
		comboLstpu.setTabIndex(105);
110 jpm 1117
		//comboLstpu.setFieldLabel("Statut des structures publiques");
1118
		comboLstpu.setLabelSeparator("");
1119
		comboLstpu.setDisplayField("nom");
1120
		comboLstpu.setEditable(false);
1121
		comboLstpu.setTriggerAction(TriggerAction.ALL);
1122
		comboLstpu.setStore(magazinLstpu);
1123
		comboLstpu.hide();
1124
		droiteTs.add(comboLstpu);
1125
 
119 jpm 1126
		modele.obtenirListeValeurs(((Configuration) Registry.get(RegistreId.CONFIG)).getListeId("stpr"));
110 jpm 1127
		magazinLstpr = new ListStore<Valeur>();
1128
		magazinLstpr.add(new ArrayList<Valeur>());
133 jpm 1129
		comboLstpr = new ComboBox<Valeur>();
1130
		comboLstpr.setTabIndex(106);
110 jpm 1131
		//comboLstpr.setFieldLabel("Statut des structures privées");
1132
		comboLstpr.setLabelSeparator("");
1133
		comboLstpr.setDisplayField("nom");
1134
		comboLstpr.setEditable(false);
1135
		comboLstpr.setTriggerAction(TriggerAction.ALL);
1136
		comboLstpr.setStore(magazinLstpr);
1137
		comboLstpr.hide();
1138
		droiteTs.add(comboLstpr);
1139
 
1140
		ligneTs.add(gaucheTs, new ColumnData(0.5));
1141
		ligneTs.add(droiteTs, new ColumnData(0.5));
1142
		fieldSetIdentite.add(ligneTs);
1143
 
119 jpm 1144
		dateFondationChp = new DateField();
133 jpm 1145
		dateFondationChp.setTabIndex(107);
110 jpm 1146
		dateFondationChp.setFieldLabel("Date de fondation");
1147
		dateFondationChp.getPropertyEditor().getFormat();
1148
		dateFondationChp.getPropertyEditor().setFormat(DateTimeFormat.getFormat("dd/MM/yyyy"));
1149
		dateFondationChp.getMessages().setInvalidText("La valeur saisie n'est pas une date valide. La date doit être au format «jj/mm/aaaa».");
1150
		fieldSetIdentite.add(dateFondationChp);
1151
 
1152
		identificationOnglet.add(fieldSetIdentite);
1153
 
1154
		//+-----------------------------------------------------------------------------------------------------------+
1155
		// Fieldset ADRESSE
1156
		LayoutContainer principalFdAdresse = new LayoutContainer();
1157
		principalFdAdresse.setLayout(new ColumnLayout());
1158
 
1159
		LayoutContainer gaucheFdAdresse = new LayoutContainer();
1160
		gaucheFdAdresse.setLayout(creerFormLayout(100, LabelAlign.LEFT, 0));
1161
 
1162
		LayoutContainer droiteFdAdresse = new LayoutContainer();
1163
		droiteFdAdresse.setLayout(creerFormLayout(100, LabelAlign.LEFT, 0));
1164
 
1165
		FieldSet fieldSetAdresse = new FieldSet();
1166
		fieldSetAdresse.setHeading("Adresse");
1167
		fieldSetAdresse.setCollapsible(true);
1168
 
1169
		fieldSetAdresse.setLayout(creerFormLayout(100, LabelAlign.LEFT, 4));
1170
 
164 jp_milcent 1171
		adrChp = new TextArea();
133 jpm 1172
		adrChp.setTabIndex(108);
110 jpm 1173
		adrChp.setFieldLabel("Adresse");
1174
		fieldSetAdresse.add(adrChp, new FormData(550, 0));
1175
 
133 jpm 1176
		cpChp = new TextField<String>();
1177
		cpChp.setTabIndex(109);
110 jpm 1178
		cpChp.setFieldLabel("Code postal");
1179
		gaucheFdAdresse.add(cpChp);
1180
 
133 jpm 1181
		villeChp = new TextField<String>();
1182
		villeChp.setTabIndex(110);
110 jpm 1183
		villeChp.setFieldLabel("Ville");
1184
		droiteFdAdresse.add(villeChp);
1185
 
133 jpm 1186
		regionChp = new TextField<String>();
1187
		regionChp.setTabIndex(111);
110 jpm 1188
		regionChp.setFieldLabel("Région");
1189
		gaucheFdAdresse.add(regionChp);
1190
 
164 jp_milcent 1191
		//paysChp = new TextField<String>();
1192
		//paysChp.setTabIndex(112);
1193
		//paysChp.setFieldLabel("Pays");
1194
		modele.obtenirListeValeurs(((Configuration) Registry.get(RegistreId.CONFIG)).getListeId("pays"));
1195
		magazinPays = new ListStore<Valeur>();
1196
		magazinPays.add(new ArrayList<Valeur>());
1197
		comboPays = new ComboBox<Valeur>();
1198
		comboPays.setTabIndex(112);
1199
		comboPays.setFieldLabel("Pays");
172 jp_milcent 1200
		comboPays.setEmptyText("Sélectioner un pays...");
164 jp_milcent 1201
		comboPays.setEditable(true);
1202
		comboPays.setLabelSeparator("");
1203
		comboPays.setDisplayField("nom");
172 jp_milcent 1204
		comboPays.setTemplate(getTemplatePays());
1205
		comboPays.setTypeAhead(true);
164 jp_milcent 1206
		comboPays.setTriggerAction(TriggerAction.ALL);
1207
		comboPays.setStore(magazinPays);
1208
		droiteFdAdresse.add(comboPays);
110 jpm 1209
 
1210
		principalFdAdresse.add(gaucheFdAdresse, new ColumnData(.5));
1211
		principalFdAdresse.add(droiteFdAdresse, new ColumnData(.5));
1212
		fieldSetAdresse.add(principalFdAdresse);
1213
		identificationOnglet.add(fieldSetAdresse);
1214
 
1215
		//+-----------------------------------------------------------------------------------------------------------+
1216
		// Fieldset TÉLÉPHONE et EMAIL
1217
		LayoutContainer principalFdTelMail = new LayoutContainer();
1218
		principalFdTelMail.setLayout(new ColumnLayout());
1219
 
1220
		LayoutContainer gaucheFdTelMail = new LayoutContainer();
1221
		gaucheFdTelMail.setLayout(creerFormLayout(100, LabelAlign.LEFT, 0));
1222
 
1223
		LayoutContainer droiteFdTelMail = new LayoutContainer();
1224
		droiteFdTelMail.setLayout(creerFormLayout(100, LabelAlign.LEFT, 0));
1225
 
1226
		FieldSet fieldSetTelMail = new FieldSet();
1227
		fieldSetTelMail.setHeading("Communication");
1228
		fieldSetTelMail.setCollapsible(true);
1229
 
1230
		fieldSetTelMail.setLayout(creerFormLayout(200, LabelAlign.LEFT, 4));
1231
 
133 jpm 1232
		telChp = new TextField<String>();
1233
		telChp.setTabIndex(113);
110 jpm 1234
		telChp.setFieldLabel("Téléphone");
1235
		gaucheFdTelMail.add(telChp);
1236
 
133 jpm 1237
		faxChp = new TextField<String>();
1238
		faxChp.setTabIndex(114);
110 jpm 1239
		faxChp.setFieldLabel("Fax");
1240
		droiteFdTelMail.add(faxChp);
1241
 
133 jpm 1242
		emailChp = new TextField<String>();
1243
		emailChp.setTabIndex(115);
110 jpm 1244
		emailChp.setFieldLabel("Courriel");
1245
		emailChp.setToolTip("Saisir le courriel de l'organisation, pas de courriel individuel. Ex. : accueil@organisation.org");
1246
		gaucheFdTelMail.add(emailChp);
1247
 
133 jpm 1248
		urlChp = new TextField<String>();
1249
		urlChp.setTabIndex(116);
110 jpm 1250
		urlChp.setFieldLabel("Site web");
1251
		droiteFdTelMail.add(urlChp);
1252
 
1253
		principalFdTelMail.add(gaucheFdTelMail, new ColumnData(.5));
1254
		principalFdTelMail.add(droiteFdTelMail, new ColumnData(.5));
1255
		fieldSetTelMail.add(principalFdTelMail);
1256
		identificationOnglet.add(fieldSetTelMail);
1257
 
1258
		return identificationOnglet;
1259
	}
1260
 
172 jp_milcent 1261
	private native String getTemplatePays() /*-{
1262
		return  [
1263
		'<tpl for=".">',
1264
		'<div class="x-combo-list-item">{nom} ({abreviation})</div>',
1265
		'</tpl>'
1266
		].join("");
1267
		}-*/;
1268
 
192 jp_milcent 1269
 
1270
 
1271
	private void peuplerCasesACocher(String donnees, CheckBoxGroup groupeCac, TextField<String> champAutre) {
1272
		String[] valeurs = donnees.split(";;");
1273
		for (int i = 0; i < valeurs.length; i++) {
1274
			if (valeurs[i].startsWith("AUTRE##")) {
1275
				champAutre.setValue(valeurs[i].replaceFirst("^AUTRE##", ""));
1276
			} else {
1277
				List<CheckBox> cases = groupeCac.getAll();
1278
				for (int j = 0; j < cases.size(); j++) {
1279
					if (cases.get(j).getId().equals("val-"+valeurs[i])) {
1280
						cases.get(j).setValue(true);
1281
					}
1282
				}
1283
			}
1284
		}
1285
	}
1286
 
1287
	private void peuplerBoutonsRadio(String valeur, RadioGroup groupeBr) {
1288
		List<Radio> boutons = groupeBr.getAll();
1289
		String id = valeur+"_"+groupeBr.getName().replace("_grp", "");
1290
		for (int i = 0; i < boutons.size(); i++) {
1291
			if (boutons.get(i).getId().equals(id)) {
1292
				boutons.get(i).setValue(true);
1293
			}
1294
		}
1295
	}
1296
 
1297
	private String creerChaineDenormalisee(List<CheckBox> liste) {
1298
		String identifiants = "";
1299
		int taille = liste.size();
1300
		for (int i = 0; i < taille; i++) {
1301
			CheckBox cac = liste.get(i);
1302
			if (cac.isEnabled()) {
1303
				identifiants = identifiants.concat(";;"+cac.getData("id"));
1304
			}
1305
		}
1306
		return identifiants.replaceFirst("^;;", "");
1307
	}
1308
 
108 jpm 1309
	/** Méthode simplifiant la création de FormLayout.
110 jpm 1310
	 * Chacun des paramètres peut prendre la valeur null pour utiliser la valeur par défaut.
108 jpm 1311
	 *
110 jpm 1312
	 * @param labelWidth largeur des labels.
108 jpm 1313
	 * @param labelAlign alignement des labels
1314
	 * @param padding padding du layout
1315
	 * @return
1316
	 */
1317
	private FormLayout creerFormLayout(Integer labelWidth, LabelAlign labelAlign, Integer padding) {
1318
		FormLayout formLayout = new FormLayout();
110 jpm 1319
		if (labelWidth != null) {
1320
			formLayout.setLabelWidth(labelWidth);
1321
		}
1322
		if (labelAlign != null) {
1323
			formLayout.setLabelAlign(labelAlign);
1324
		}
108 jpm 1325
		if (padding != null) {
1326
			formLayout.setPadding(padding);
1327
		}
1328
		return formLayout;
1329
	}
1330
 
109 jpm 1331
	/** Méthode simplifiant la création de bouton radio oui/non
1332
	 *
1333
	 * @param listeNom nom de la liste de valeur
1334
	 * @return
1335
	 */
115 jpm 1336
	private RadioGroup creerChoixUniqueRadioGroupe(String groupeNom, String listeNom) {
1337
		groupeNom += "_grp";
1338
		// NOTE : il semblerait qu'il faille aussi utiliser setName() pour éviter tout problème...
1339
		RadioGroup radioGroup = new RadioGroup(groupeNom);
1340
		radioGroup.setName(groupeNom);
119 jpm 1341
 
188 jp_milcent 1342
		if (listeNom.equals("ouiNon")) {
115 jpm 1343
			ValeurListe ouiNonListe = new ValeurListe();
188 jp_milcent 1344
			ouiNonListe.ajouter(new Valeur("1", "Oui", "NULL", "NULL"));
1345
			ouiNonListe.ajouter(new Valeur("0", "Non", "NULL", "NULL"));
115 jpm 1346
			creerChoixUniqueBoutonRadio(radioGroup, ouiNonListe);
1347
		}
109 jpm 1348
 
115 jpm 1349
		return radioGroup;
109 jpm 1350
	}
1351
 
115 jpm 1352
	private void creerChoixUniqueBoutonRadio(RadioGroup radioGroupe, ValeurListe listeValeurs) {
1353
		for (Iterator<String> it = listeValeurs.keySet().iterator(); it.hasNext();) {
1354
			Valeur val = listeValeurs.get(it.next());
1355
 
1356
			Radio radioBtn = new Radio();
119 jpm 1357
			radioBtn.setName(radioGroupe.getName().replace("_grp", ""));
188 jp_milcent 1358
			radioBtn.setId(val.getId()+"_"+radioBtn.getName());
115 jpm 1359
			radioBtn.setBoxLabel(val.getNom());
188 jp_milcent 1360
			radioBtn.setValueAttribute(val.getId());
119 jpm 1361
			radioBtn.addListener(Events.Change, new Listener<ComponentEvent>() {
115 jpm 1362
 
119 jpm 1363
				public void handleEvent(ComponentEvent be) {
133 jpm 1364
					//Window.alert(((Radio) be.component).getName());
1365
					afficherChampSupplementaire(((Radio) be.component));
115 jpm 1366
				}
1367
 
1368
			});
119 jpm 1369
 
115 jpm 1370
			if (! val.getDescription().equals("NULL")) {
1371
				radioBtn.setToolTip(new ToolTipConfig(val.getNom(), val.getDescription()));
1372
			}
188 jp_milcent 1373
			radioGroupe.add(radioBtn);
115 jpm 1374
		}
1375
	}
1376
 
1377
	private void afficherChampSupplementaire(Radio radioBtn) {
119 jpm 1378
		//GWT.log("Nom btn : "+radioBtn.getName()+" - Nom group : "+radioBtn.getGroup().getName(), null);
115 jpm 1379
		// Valeur du bouton radio déclenchant l'affichage des composants cachés
1380
		String valeurPourAfficher = "oui";
111 jpm 1381
 
115 jpm 1382
		// Construction de la liste des composants à afficher/cacher
1383
		String radioGroupeNom = radioBtn.getGroup().getName();
1384
		ArrayList<Object> composants = new ArrayList<Object>();
1385
		if (radioGroupeNom.equals("action_mark_grp")) {
1386
			composants.add(actionTrukCp);
1387
		} else if (radioGroupeNom.equals("future_action_mark_grp")) {
1388
			composants.add(futureActionChp);
1389
		} else if (radioGroupeNom.equals("sans_motif_acces_mark_grp")) {
1390
			composants.add(sansMotifAccesChp);
1391
		} else if (radioGroupeNom.equals("avec_motif_acces_mark_grp")) {
1392
			composants.add(avecMotifAccesChp);
1393
		} else if (radioGroupeNom.equals("recherche_mark_grp")) {
1394
			composants.add(provenanceRechercheTrukCp);
119 jpm 1395
			composants.add(typeRechercheTrukCp);
115 jpm 1396
		} else if (radioGroupeNom.equals("formation_mark_grp")) {
1397
			composants.add(formationChp);
1398
		} else if (radioGroupeNom.equals("collection_commune_mark_grp")) {
1399
			composants.add(collectionAutreTrukCp);
1400
		} else if (radioGroupeNom.equals("restauration_mark_grp")) {
1401
			composants.add(opRestauTrukCp);
1402
		} else if (radioGroupeNom.equals("traitement_mark_grp")) {
1403
			composants.add(traitementTrukCp);
1404
		} else if (radioGroupeNom.equals("echantillon_acquisition_mark_grp")) {
1405
			composants.add(traitementAcquisitionMarkRGrpChp);
1406
		} else if (radioGroupeNom.equals("traitement_acquisition_mark_grp")) {
1407
			composants.add(traitementAcquisitionMarkLabel);
1408
			composants.add(poisonTraitementTrukCp);
1409
			composants.add(insecteTraitementTrukCp);
1410
		} else if (radioGroupeNom.equals("materiel_conservation_ce_grp")) {
1411
			composants.add(autreMaterielTrukCp);
1412
			valeurPourAfficher = "non";
1413
		}
111 jpm 1414
 
115 jpm 1415
		// Nous affichons/cachons les composant de la liste
1416
		final int tailleMax = composants.size();
1417
		//GWT.log("Id : "+radioBtn.getId()+" - Class : "+radioBtn.getClass().toString()+"- Taille : "+tailleMax, null);
119 jpm 1418
		//Window.alert("Radio grp nom : "+radioGroupeNom+" - Id btn : "+radioBtn.getId()+" - Class : "+radioBtn.getClass().toString()+"- Taille : "+tailleMax);
111 jpm 1419
		for (int i = 0; i < tailleMax; i++) {
1420
			// En fonction du type de bouton cliquer, on affiche ou cache les champs
115 jpm 1421
			String type = radioBtn.getBoxLabel().toLowerCase();
119 jpm 1422
			//GWT.log(type, null);
115 jpm 1423
			if (radioBtn.getValue() == true) {
1424
				if (type.equals(valeurPourAfficher)) {
1425
					((Component) composants.get(i)).show();
1426
				} else {
1427
					((Component) composants.get(i)).hide();
1428
				}
111 jpm 1429
			}
1430
			// Si on a à faire à un ContentPanel, on l'actualise pour déclencher l'affichage
115 jpm 1431
			if (composants.get(i) instanceof ContentPanel) {
1432
				((ContentPanel) composants.get(i)).layout();
111 jpm 1433
			}
1434
		}
1435
 
1436
	}
1437
 
109 jpm 1438
	/** Méthode simplifiant la création de choix multiple sous forme de case à cocher.
1439
	 * Apelle un service retournant la liste des valeurs représentant les cases à cocher.
1440
	 * Ajoute ou pas un champ "Autre".
1441
	 *
1442
	 * @param listeNom nom de la liste de valeur
1443
	 * @return
1444
	 */
1445
	private ContentPanel creerChoixMultipleCp(String listeNom) {
119 jpm 1446
		modele.obtenirListeValeurs(((Configuration) Registry.get(RegistreId.CONFIG)).getListeId(listeNom));
109 jpm 1447
		ContentPanel cp = new ContentPanel();
1448
		cp.setLayout(creerFormLayout(650, LabelAlign.TOP, 0));
1449
		cp.setHeaderVisible(false);
1450
		return cp;
1451
	}
1452
 
1453
	/** Méthode simplifiant la création de choix multiple sous forme de case à cocher.
1454
	 * Apelle un service retournant la liste des valeurs représentant les cases à cocher.
1455
	 * Ajoute ou pas un champ "Autre".
1456
	 *
1457
	 * @param cp panneau conteant le groupe de case à cocher
1458
	 * @param cacGroup le groupe de case à cocher
1459
	 * @param listeValeurs la liste de valeurs à transformer en case à cocher
1460
	 * @param boolAutreChp booléen indiquant si oui ou non le champ autre doit apparaître
1461
	 * @return
1462
	 */
188 jp_milcent 1463
	private void creerChoixMultipleCac(ContentPanel cp, CheckBoxGroup cacGroupe, ValeurListe listeValeurs, Field<String> autreChp) {
110 jpm 1464
		cacGroupe.setAutoWidth(true);
188 jp_milcent 1465
		cacGroupe.setData("liste_id", listeValeurs.getId());
109 jpm 1466
		for (Iterator<String> it = listeValeurs.keySet().iterator(); it.hasNext();) {
111 jpm 1467
			Valeur val = listeValeurs.get(it.next());
1468
			String nom =  val.get("nom");
109 jpm 1469
			CheckBox cac = new CheckBox();
115 jpm 1470
			cac.setId("val-"+val.getId());
188 jp_milcent 1471
			cac.setData("id", val.getId());
111 jpm 1472
			cac.setBoxLabel(nom);
1473
			if (! val.getDescription().equals("NULL")) {
1474
				cac.setToolTip(new ToolTipConfig(val.getNom(), val.getDescription()));
109 jpm 1475
			}
1476
			cacGroupe.add(cac);
1477
		}
1478
		cp.add(cacGroupe);
1479
 
188 jp_milcent 1480
		if (autreChp != null) {
109 jpm 1481
			ContentPanel autreCp = new ContentPanel();
1482
			autreCp.setLayout(creerFormLayout(75, LabelAlign.TOP, 0));
1483
			autreCp.setHeaderVisible(false);
188 jp_milcent 1484
			autreChp.setId("autre-"+listeValeurs.getId());
119 jpm 1485
			autreChp.setFieldLabel("Autre");
1486
			autreChp.setLabelStyle("font-weight:normal;");
1487
			autreCp.add(autreChp);
109 jpm 1488
			cp.add(autreCp);
1489
		}
1490
 
1491
		cp.layout();
1492
	}
1493
 
192 jp_milcent 1494
 
69 jpm 1495
	public void rafraichir(Object nouvelleDonnees) {
153 jpm 1496
		if (nouvelleDonnees instanceof Information) {
1497
			Information info = (Information) nouvelleDonnees;
156 jp_milcent 1498
			if (info.getMessages() != null) {
1499
				GWT.log(info.getMessages().toString(), null);
1500
			}
172 jp_milcent 1501
			if (info.getType().equals("modif_structure")) {
1502
				Info.display("Modification d'une institution", info.toString());
1503
			} else if (info.getType().equals("ajout_structure")) {
153 jpm 1504
				Info.display("Ajout d'une Institution", info.toString());
156 jp_milcent 1505
			} else if (info.getType().equals("selection_structure")) {
172 jp_milcent 1506
				Info.display("Modification d'une institution", info.toString());
156 jp_milcent 1507
				mode = "MODIF";
172 jp_milcent 1508
				GWT.log(mode, null);
188 jp_milcent 1509
				String titre = i18nC.titreModifFormStructurePanneau();
1510
				if (info.getDonnee(0) != null) {
1511
					Structure str = (Structure) info.getDonnee(0);
1512
					titre += " - ID : "+str.getId();
192 jp_milcent 1513
					peuplerStructureIdentification(str);
188 jp_milcent 1514
				}
1515
				if (info.getDonnee(1) != null) {
192 jp_milcent 1516
					conservation = (StructureConservation) info.getDonnee(1);
1517
					if (onglets.getSelectedItem().equals(conservationOnglet)) {
1518
						peuplerStructureConservation();
1519
					}
188 jp_milcent 1520
				}
192 jp_milcent 1521
				if (info.getDonnee(2) != null) {
1522
					valorisation = (StructureValorisation) info.getDonnee(2);
1523
					peuplerStructureValorisation();
1524
				}
188 jp_milcent 1525
				structureFormPanneau.setHeading(titre);
153 jpm 1526
			}
119 jpm 1527
		} else if (nouvelleDonnees instanceof ValeurListe) {
91 jpm 1528
			ValeurListe listeValeurs = (ValeurListe) nouvelleDonnees;
1529
 
1530
			List<Valeur> liste = new ArrayList<Valeur>();
1531
			for (Iterator<String> it = listeValeurs.keySet().iterator(); it.hasNext();) {
1532
				liste.add(listeValeurs.get(it.next()));
1533
			}
1534
			// Test pour savoir si la liste contient des éléments
1535
			if (liste.size() > 0) {
1536
				Configuration config = (Configuration) Registry.get(RegistreId.CONFIG);
1537
				if (listeValeurs.getId().equals(config.getListeId("stpr"))) {
1538
					magazinLstpr.removeAll();
1539
					magazinLstpr.add(liste);
1540
					comboLstpr.setStore(magazinLstpr);
1541
				}
1542
				if (listeValeurs.getId().equals(config.getListeId("stpu"))) {
1543
					magazinLstpu.removeAll();
1544
					magazinLstpu.add(liste);
1545
					comboLstpu.setStore(magazinLstpu);
1546
				}
103 jpm 1547
				if (listeValeurs.getId().equals(config.getListeId("statut"))) {
1548
					magazinLiStatut.removeAll();
1549
					magazinLiStatut.add(liste);
1550
					comboLiStatut.setStore(magazinLiStatut);
1551
				}
1552
				if (listeValeurs.getId().equals(config.getListeId("fonction"))) {
1553
					magazinLiFonction.removeAll();
1554
					magazinLiFonction.add(liste);
1555
					comboLiFonction.setStore(magazinLiFonction);
1556
				}
164 jp_milcent 1557
				if (listeValeurs.getId().equals(config.getListeId("pays"))) {
1558
					magazinPays.removeAll();
1559
					magazinPays.add(liste);
1560
					comboPays.setStore(magazinPays);
1561
				}
108 jpm 1562
				if (listeValeurs.getId().equals(config.getListeId("localStockage"))) {
188 jp_milcent 1563
					localStockageAutreChp = new TextField<String>();
1564
					creerChoixMultipleCac(localStockageTrukCp, localStockageTrukCacGrpChp, listeValeurs, localStockageAutreChp);
108 jpm 1565
				}
1566
				if (listeValeurs.getId().equals(config.getListeId("meubleStockage"))) {
188 jp_milcent 1567
					meubleStockageAutreChp = new TextField<String>();
1568
					creerChoixMultipleCac(meubleStockageTrukCp, meubleStockageTrukCacGrpChp, listeValeurs, meubleStockageAutreChp);
108 jpm 1569
				}
109 jpm 1570
				if (listeValeurs.getId().equals(config.getListeId("parametreStockage"))) {
188 jp_milcent 1571
					parametreStockageAutreChp = new TextField<String>();
1572
					creerChoixMultipleCac(parametreStockageTrukCp, parametreStockageTrukCacGrpChp, listeValeurs, parametreStockageAutreChp);
109 jpm 1573
				}
110 jpm 1574
				if (listeValeurs.getId().equals(config.getListeId("autreCollection"))) {
111 jpm 1575
					if (collectionAutreTrukCp.getItemByItemId("collectionAutreTrukCacGrpChp") == null) {
1576
						collectionAutreTrukCacGrpChp.setId("collectionAutreTrukCacGrpChp");
188 jp_milcent 1577
						collectionAutreAutreChp = new TextField<String>();
1578
						creerChoixMultipleCac(collectionAutreTrukCp, collectionAutreTrukCacGrpChp, listeValeurs, collectionAutreAutreChp);
111 jpm 1579
					}
1580
					if (autreCollectionTrukCp.getItemByItemId("autreCollectionTrukCacGrpChp") == null) {
119 jpm 1581
						autreCollectionTrukCacGrpChp.setId("autreCollectionTrukCacGrpChp");
188 jp_milcent 1582
						autreCollectionAutreChp = new TextField<String>();
1583
						creerChoixMultipleCac(autreCollectionTrukCp, autreCollectionTrukCacGrpChp, listeValeurs, autreCollectionAutreChp);
111 jpm 1584
					}
110 jpm 1585
				}
1586
				if (listeValeurs.getId().equals(config.getListeId("opRestau"))) {
188 jp_milcent 1587
					opRestauAutreChp = new TextField<String>();
1588
					creerChoixMultipleCac(opRestauTrukCp, opRestauTrukCacGrpChp, listeValeurs, opRestauAutreChp);
110 jpm 1589
				}
1590
				if (listeValeurs.getId().equals(config.getListeId("onep"))) {
115 jpm 1591
					creerChoixUniqueBoutonRadio(materielConservationCeRGrpChp, listeValeurs);
188 jp_milcent 1592
					materielConservationCp.add(materielConservationCeRGrpChp);
1593
					materielConservationCp.layout();
110 jpm 1594
				}
1595
				if (listeValeurs.getId().equals(config.getListeId("autreMateriel"))) {
188 jp_milcent 1596
					autreMaterielAutreChp = new TextField<String>();
1597
					creerChoixMultipleCac(autreMaterielTrukCp, autreMaterielTrukCacGrpChp, listeValeurs, autreMaterielAutreChp);
110 jpm 1598
				}
1599
				if (listeValeurs.getId().equals(config.getListeId("poisonTraitement"))) {
188 jp_milcent 1600
					poisonTraitementAutreChp = new TextField<String>();
1601
					creerChoixMultipleCac(poisonTraitementTrukCp, poisonTraitementTrukCacGrpChp, listeValeurs, poisonTraitementAutreChp);
110 jpm 1602
				}
1603
				if (listeValeurs.getId().equals(config.getListeId("insecteTraitement"))) {
115 jpm 1604
					if (traitementTrukCp.getItemByItemId("traitementTrukCacGrpChp") == null) {
1605
						traitementTrukCacGrpChp.setId("traitementTrukCacGrpChp");
188 jp_milcent 1606
						traitementAutreChp = new TextField<String>();
1607
						creerChoixMultipleCac(traitementTrukCp, traitementTrukCacGrpChp, listeValeurs, traitementAutreChp);
110 jpm 1608
					}
115 jpm 1609
					if (insecteTraitementTrukCp.getItemByItemId("insecteTraitementTrukCacGrpChp") == null) {
1610
						insecteTraitementTrukCacGrpChp.setId("insecteTraitementTrukCacGrpChp");
188 jp_milcent 1611
						insecteTraitementAutreChp = new TextField<String>();
1612
						creerChoixMultipleCac(insecteTraitementTrukCp, insecteTraitementTrukCacGrpChp, listeValeurs, insecteTraitementAutreChp);
110 jpm 1613
					}
1614
				}
111 jpm 1615
				if (listeValeurs.getId().equals(config.getListeId("actionValorisation"))) {
188 jp_milcent 1616
					actionAutreChp = new TextField<String>();
1617
					creerChoixMultipleCac(actionTrukCp, actionTrukCacGrpChp, listeValeurs, actionAutreChp);
111 jpm 1618
				}
1619
				if (listeValeurs.getId().equals(config.getListeId("continentEtFr"))) {
188 jp_milcent 1620
					provenanceRechercheAutreChp = new TextField<String>();
1621
					creerChoixMultipleCac(provenanceRechercheTrukCp, provenanceRechercheTrukCacGrpChp, listeValeurs, provenanceRechercheAutreChp);
111 jpm 1622
				}
1623
				if (listeValeurs.getId().equals(config.getListeId("typeRecherche"))) {
188 jp_milcent 1624
					typeRecherche = new TextField<String>();
1625
					creerChoixMultipleCac(typeRechercheTrukCp, typeRechercheTrukCacGrpChp, listeValeurs, typeRecherche);
111 jpm 1626
				}
110 jpm 1627
				//GWT.log("La liste #"+listeValeurs.getId()+" a été reçue!", null);
91 jpm 1628
			} else {
1629
				GWT.log("La liste #"+listeValeurs.getId()+" ne contient aucune valeurs!", null);
1630
			}
1631
		}
69 jpm 1632
	}
100 jpm 1633
 
115 jpm 1634
}