Subversion Repositories eFlore/Applications.coel

Rev

Rev 153 | Rev 164 | 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
 
119 jpm 7
import org.tela_botanica.client.Mediateur;
91 jpm 8
import org.tela_botanica.client.Modele;
9
import org.tela_botanica.client.RegistreId;
115 jpm 10
import org.tela_botanica.client.i18n.Constantes;
69 jpm 11
import org.tela_botanica.client.interfaces.Rafraichissable;
91 jpm 12
import org.tela_botanica.client.modeles.Configuration;
153 jpm 13
import org.tela_botanica.client.modeles.Information;
100 jpm 14
import org.tela_botanica.client.modeles.InterneValeur;
15
import org.tela_botanica.client.modeles.InterneValeurListe;
102 jpm 16
import org.tela_botanica.client.modeles.Personne;
119 jpm 17
import org.tela_botanica.client.modeles.Structure;
91 jpm 18
import org.tela_botanica.client.modeles.Valeur;
19
import org.tela_botanica.client.modeles.ValeurListe;
69 jpm 20
 
111 jpm 21
import com.extjs.gxt.ui.client.Events;
91 jpm 22
import com.extjs.gxt.ui.client.Registry;
69 jpm 23
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
110 jpm 24
import com.extjs.gxt.ui.client.Style.Scroll;
111 jpm 25
import com.extjs.gxt.ui.client.event.ComponentEvent;
26
import com.extjs.gxt.ui.client.event.Listener;
100 jpm 27
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
28
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
103 jpm 29
import com.extjs.gxt.ui.client.event.SelectionListener;
30
import com.extjs.gxt.ui.client.event.ToolBarEvent;
69 jpm 31
import com.extjs.gxt.ui.client.store.ListStore;
111 jpm 32
import com.extjs.gxt.ui.client.widget.Component;
102 jpm 33
import com.extjs.gxt.ui.client.widget.ContentPanel;
153 jpm 34
import com.extjs.gxt.ui.client.widget.Info;
69 jpm 35
import com.extjs.gxt.ui.client.widget.LayoutContainer;
100 jpm 36
import com.extjs.gxt.ui.client.widget.TabItem;
37
import com.extjs.gxt.ui.client.widget.TabPanel;
69 jpm 38
import com.extjs.gxt.ui.client.widget.button.Button;
108 jpm 39
import com.extjs.gxt.ui.client.widget.form.CheckBox;
40
import com.extjs.gxt.ui.client.widget.form.CheckBoxGroup;
69 jpm 41
import com.extjs.gxt.ui.client.widget.form.ComboBox;
100 jpm 42
import com.extjs.gxt.ui.client.widget.form.DateField;
119 jpm 43
import com.extjs.gxt.ui.client.widget.form.Field;
100 jpm 44
import com.extjs.gxt.ui.client.widget.form.FieldSet;
69 jpm 45
import com.extjs.gxt.ui.client.widget.form.FormPanel;
103 jpm 46
import com.extjs.gxt.ui.client.widget.form.LabelField;
102 jpm 47
import com.extjs.gxt.ui.client.widget.form.NumberField;
109 jpm 48
import com.extjs.gxt.ui.client.widget.form.Radio;
49
import com.extjs.gxt.ui.client.widget.form.RadioGroup;
69 jpm 50
import com.extjs.gxt.ui.client.widget.form.TextField;
51
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
52
import com.extjs.gxt.ui.client.widget.form.FormPanel.LabelAlign;
102 jpm 53
import com.extjs.gxt.ui.client.widget.grid.CellEditor;
54
import com.extjs.gxt.ui.client.widget.grid.CheckBoxSelectionModel;
55
import com.extjs.gxt.ui.client.widget.grid.CheckColumnConfig;
56
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
57
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
58
import com.extjs.gxt.ui.client.widget.grid.EditorGrid;
69 jpm 59
import com.extjs.gxt.ui.client.widget.layout.ColumnData;
60
import com.extjs.gxt.ui.client.widget.layout.ColumnLayout;
61
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
62
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
100 jpm 63
import com.extjs.gxt.ui.client.widget.layout.FormData;
69 jpm 64
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
110 jpm 65
import com.extjs.gxt.ui.client.widget.tips.ToolTipConfig;
102 jpm 66
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
67
import com.extjs.gxt.ui.client.widget.toolbar.TextToolItem;
68
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
91 jpm 69
import com.google.gwt.core.client.GWT;
100 jpm 70
import com.google.gwt.i18n.client.DateTimeFormat;
102 jpm 71
import com.google.gwt.i18n.client.NumberFormat;
133 jpm 72
import com.google.gwt.user.client.Window;
69 jpm 73
 
74
public class FormStructureVue extends LayoutContainer implements Rafraichissable {
115 jpm 75
 
76
	private Constantes i18nC = null;
119 jpm 77
	private Mediateur mediateur = null;
78
	private Modele modele = null ;
79
 
156 jp_milcent 80
	private String mode = "AJOUT";
119 jpm 81
	private FormPanel structureFormPanneau;
133 jpm 82
	private int tabIndex = 100;
115 jpm 83
 
91 jpm 84
	private ListStore<Valeur> magazinLstpr = null;
85
	private ComboBox<Valeur> comboLstpr = null;
86
	private ListStore<Valeur> magazinLstpu = null;
87
	private ComboBox<Valeur> comboLstpu = null;
103 jpm 88
	private ListStore<Valeur> magazinLiStatut = null;
89
	private ComboBox<Valeur> comboLiStatut = null;
90
	private ListStore<Valeur> magazinLiFonction = null;
91
	private ComboBox<Valeur> comboLiFonction = null;
100 jpm 92
	private ComboBox<InterneValeur> comboAcronyme = null;
93
	private TextField<String> ihChp = null;
94
	private TextField<String> mnhnChp = null;
95
	private ComboBox<InterneValeur> comboTypeStructure = null;
108 jpm 96
	private TabItem personnelOnglet = null;
103 jpm 97
	private EditorGrid<Personne> grillePersonnel = null;
98
	private ListStore<Personne> personnelGrilleMagazin = null;
99
	private LabelField nbreTotalPersonnelChp = null;
108 jpm 100
	private TabItem conservationOnglet = null;
115 jpm 101
	private CheckBoxGroup localStockageTrukCacGrpChp = null;
102
	private ContentPanel localStockageTrukCp = null;
103
	private CheckBoxGroup meubleStockageTrukCacGrpChp = null;
104
	private ContentPanel meubleStockageTrukCp = null;
105
	private CheckBoxGroup parametreStockageTrukCacGrpChp = null;
106
	private ContentPanel parametreStockageTrukCp = null;
111 jpm 107
	private ContentPanel collectionAutreTrukCp = null;
108
	private CheckBoxGroup collectionAutreTrukCacGrpChp = null;
115 jpm 109
	private CheckBoxGroup opRestauTrukCacGrpChp = null;
111 jpm 110
	private ContentPanel opRestauTrukCp = null;
115 jpm 111
	private CheckBoxGroup autreMaterielTrukCacGrpChp = null;
112
	private ContentPanel autreMaterielTrukCp = null;
111 jpm 113
	private ContentPanel traitementTrukCp = null;
114
	private CheckBoxGroup traitementTrukCacGrpChp = null;
115 jpm 115
	private ContentPanel poisonTraitementTrukCp = null;
111 jpm 116
	private ContentPanel insecteTraitementTrukCp = null;
117
	private CheckBoxGroup insecteTraitementTrukCacGrpChp = null;
115 jpm 118
	private CheckBoxGroup poisonTraitementTrukCacGrpChp = null;
111 jpm 119
	private TabItem valorisationOnglet = null;
115 jpm 120
	private ContentPanel actionTrukCp = null;
121
	private CheckBoxGroup actionTrukCacGrpChp = null;
122
	private ContentPanel autreCollectionTrukCp = null;
119 jpm 123
	private CheckBoxGroup autreCollectionTrukCacGrpChp = null;
115 jpm 124
	private ContentPanel provenanceRechercheTrukCp = null;
125
	private CheckBoxGroup provenanceRechercheTrukCacGrpChp = null;
126
	private CheckBoxGroup typeRechercheTrukCacGrpChp = null;
119 jpm 127
	private ContentPanel typeRechercheTrukCp = null;
115 jpm 128
	private TextField<String> futureActionChp = null;
129
	private TextField<String> sansMotifAccesChp = null;
130
	private TextField<String> avecMotifAccesChp = null;
131
	private TextField<String> formationChp = null;
132
	private RadioGroup traitementAcquisitionMarkRGrpChp = null;
133
	private LabelField traitementAcquisitionMarkLabel = null;
134
	private RadioGroup materielConservationCeRGrpChp = null;
119 jpm 135
 
136
	private RadioGroup actionMarkRGrpChp;
137
	private TextField<String> nomStructureChp;
138
	private DateField dateFondationChp;
139
	private TextField<String> adrChp;
140
	private TextField<String> cpChp;
141
	private TextField<String> villeChp;
142
	private TextField<String> regionChp;
143
	private TextField<String> paysChp;
144
	private TextField<String> telChp;
145
	private TextField<String> faxChp;
146
	private TextField<String> emailChp;
147
	private TextField<String> urlChp;
91 jpm 148
 
69 jpm 149
	public FormStructureVue() {
100 jpm 150
		//+-----------------------------------------------------------------------------------------------------------+
151
		// Initialisation de variables
115 jpm 152
		i18nC = GWT.create(Constantes.class);
69 jpm 153
		setLayout(new FitLayout());
119 jpm 154
		modele = Registry.get(RegistreId.MODELE);
155
		mediateur = Registry.get(RegistreId.MEDIATEUR);
156
 
100 jpm 157
		//+-----------------------------------------------------------------------------------------------------------+
110 jpm 158
		// Création du panneau du FORMULAIRE GÉNÉRAL
119 jpm 159
		structureFormPanneau = new FormPanel();
160
		structureFormPanneau.setFrame(true);
161
		structureFormPanneau.setIconStyle("icone-form-ajouter");
162
		structureFormPanneau.setCollapsible(false);
156 jp_milcent 163
		structureFormPanneau.setHeading(i18nC.titreAjoutFormStructurePanneau());
119 jpm 164
		structureFormPanneau.setButtonAlign(HorizontalAlignment.CENTER);
165
		structureFormPanneau.setLayout(new FlowLayout());
100 jpm 166
 
110 jpm 167
		//+-----------------------------------------------------------------------------------------------------------+
100 jpm 168
		// Création des onglets
102 jpm 169
		TabPanel onglets = new TabPanel();
110 jpm 170
		// NOTE : pour faire apparaître les scrollBar il faut définir la hauteur du panneau d'onglets à 100% (autoHeight ne semble pas fonctionner)
171
		onglets.setHeight("100%");
69 jpm 172
 
100 jpm 173
		//+-----------------------------------------------------------------------------------------------------------+
174
		// Onlget formulaire IDENTIFICATION
110 jpm 175
		onglets.add(creerOngletIdentification());
69 jpm 176
 
100 jpm 177
		//+-----------------------------------------------------------------------------------------------------------+
178
		// Onlget formulaire PERSONNEL
103 jpm 179
		onglets.add(creerOngletPersonnel());
91 jpm 180
 
100 jpm 181
		//+-----------------------------------------------------------------------------------------------------------+
182
		// Onlget formulaire CONSERVATION
108 jpm 183
		onglets.add(creerOngletConservation());
100 jpm 184
 
185
		//+-----------------------------------------------------------------------------------------------------------+
186
		// Onlget formulaire VALORISATION
111 jpm 187
		onglets.add(creerOngletValorisation());
100 jpm 188
 
189
		//+-----------------------------------------------------------------------------------------------------------+
190
		// Gestion du FORMULAIRE GÉNÉRAL
191
 
119 jpm 192
		// Sélection de l'onglet par défaut
193
		//onglets.setSelection(valorisationOnglet);
194
		// Ajout des onglets au formulaire général
195
		structureFormPanneau.add(onglets);
69 jpm 196
 
197
		// Ajout des boutons au panneau formulaire
198
		Button annulerBtn = new Button("Annuler");
119 jpm 199
		structureFormPanneau.addButton(annulerBtn);
69 jpm 200
		Button validerBtn = new Button("Valider");
119 jpm 201
		validerBtn.addSelectionListener(new SelectionListener<ComponentEvent>() {
202
 
203
			@Override
204
			public void componentSelected(ComponentEvent ce) {
205
				soumettreFormulaire();
206
			}
207
 
208
		});
209
		structureFormPanneau.addButton(validerBtn);
69 jpm 210
 
211
		// Ajout du panneau Formulaire à la disposition générale
119 jpm 212
		add(structureFormPanneau);
69 jpm 213
	}
108 jpm 214
 
119 jpm 215
	private void soumettreFormulaire() {
216
		GWT.log("Soumission du formulaire", null);
156 jp_milcent 217
		Structure structure = collecterDonnees();
218
		if (mode == "AJOUT") {
219
			mediateur.ajouterStructure(this, structure);
220
		} else if (mode == "MODIF") {
221
			mediateur.modifierStructure(this, structure);
222
		}
119 jpm 223
	}
224
 
156 jp_milcent 225
	private Structure collecterDonnees() {
119 jpm 226
		Structure structure = new Structure();
227
		structure.setNom(nomStructureChp.getValue());
156 jp_milcent 228
		structure.setDateFondation(dateFondationChp.getValue());
229
 
119 jpm 230
		structure.setAdresse(adrChp.getValue());
231
		structure.setCodePostal(cpChp.getValue());
232
		structure.setVille(villeChp.getValue());
233
		structure.setRegion(regionChp.getValue());
234
		structure.setPays(paysChp.getValue());
235
 
236
		structure.setTelephone(telChp.getValue());
237
		structure.setFax(faxChp.getValue());
238
		structure.setCourriel(emailChp.getValue());
239
		structure.setUrl(urlChp.getValue());
240
 
156 jp_milcent 241
		return structure;
119 jpm 242
	}
243
 
156 jp_milcent 244
	private void peuplerFormulaire(Structure str) {
245
		nomStructureChp.setValue(str.getNom());
246
		dateFondationChp.setValue(str.getDateFondation());
247
 
248
		adrChp.setValue(str.getAdresse());
249
		cpChp.setValue(str.getCodePostal());
250
		villeChp.setValue(str.getVille());
251
		regionChp.setValue(str.getRegion());
252
		paysChp.setValue(str.getPays());
253
 
254
		telChp.setValue(str.getTelephone());
255
		faxChp.setValue(str.getFax());
256
		emailChp.setValue(str.getCourriel());
257
		urlChp.setValue(str.getUrl());
258
	}
259
 
111 jpm 260
	private TabItem creerOngletValorisation() {
261
		valorisationOnglet = new TabItem();
262
		valorisationOnglet.setText("Valorisation");
263
		valorisationOnglet.setScrollMode(Scroll.AUTO);
264
		valorisationOnglet.setLayout(creerFormLayout(650, LabelAlign.TOP, null));
265
 
119 jpm 266
		actionMarkRGrpChp = creerChoixUniqueRadioGroupe("action_mark", "ouiNon");
111 jpm 267
		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 ?");
268
		valorisationOnglet.add(actionMarkRGrpChp);
269
 
119 jpm 270
 
111 jpm 271
		actionTrukCp = creerChoixMultipleCp("actionValorisation");
272
		actionTrukCp.hide();
115 jpm 273
		actionTrukCacGrpChp = new CheckBoxGroup();
274
		actionTrukCacGrpChp.setFieldLabel("Si oui, lesquelles ?");
111 jpm 275
		valorisationOnglet.add(actionTrukCp);
276
 
277
		TextField<String> publicationChp = new TextField<String>();
278
		publicationChp.setFieldLabel("Quelques titres des ouvrages, articles scientifiques, ...");
279
		valorisationOnglet.add(publicationChp);
280
 
281
		autreCollectionTrukCp = creerChoixMultipleCp("autreCollection");
119 jpm 282
		autreCollectionTrukCacGrpChp = new CheckBoxGroup();
283
		autreCollectionTrukCacGrpChp.setFieldLabel("L'organisme dispose-t-il d'autres collections (permettant une valorisation pluridisciplinaire) ?");
111 jpm 284
		valorisationOnglet.add(autreCollectionTrukCp);
285
 
115 jpm 286
		RadioGroup futureActionMarkRGrpChp = creerChoixUniqueRadioGroupe("future_action_mark", "ouiNon");
111 jpm 287
		futureActionMarkRGrpChp.setFieldLabel("Envisagez vous des actions de valorisation dans le cadre de votre politique culturelle ?");
288
		valorisationOnglet.add(futureActionMarkRGrpChp);
289
 
290
		futureActionChp = new TextField<String>();
291
		futureActionChp.setFieldLabel("Si oui, lesquelles ?");
292
		futureActionChp.hide();
293
		valorisationOnglet.add(futureActionChp);
294
 
115 jpm 295
		RadioGroup rechercheMarkRGrpChp = creerChoixUniqueRadioGroupe("recherche_mark", "ouiNon");
111 jpm 296
		rechercheMarkRGrpChp.setFieldLabel("Vos collections botaniques sont-elles utilisées pour des recherches scientifiques ?");
297
		valorisationOnglet.add(rechercheMarkRGrpChp);
298
 
299
		provenanceRechercheTrukCp = creerChoixMultipleCp("continentEtFr");
300
		provenanceRechercheTrukCp.hide();
115 jpm 301
		provenanceRechercheTrukCacGrpChp = new CheckBoxGroup();
302
		provenanceRechercheTrukCacGrpChp.setFieldLabel("Si oui, par des chercheurs (professionnels ou amateurs) de quelle provenance ?");
111 jpm 303
		valorisationOnglet.add(provenanceRechercheTrukCp);
304
 
119 jpm 305
		typeRechercheTrukCp = creerChoixMultipleCp("typeRecherche");
306
		typeRechercheTrukCp.hide();
115 jpm 307
		typeRechercheTrukCacGrpChp = new CheckBoxGroup();
308
		typeRechercheTrukCacGrpChp.setFieldLabel("Et pour quelles recherches ?");
119 jpm 309
		valorisationOnglet.add(typeRechercheTrukCp);
111 jpm 310
 
115 jpm 311
		RadioGroup sansMotifAccesMarkRGrpChp = creerChoixUniqueRadioGroupe("sans_motif_acces_mark", "ouiNon");
111 jpm 312
		sansMotifAccesMarkRGrpChp.setFieldLabel("Peut-on consulter vos collections botaniques sans motif de recherches scientifiques ?");
313
		valorisationOnglet.add(sansMotifAccesMarkRGrpChp);
314
 
315
		sansMotifAccesChp = new TextField<String>();
316
		sansMotifAccesChp.hide();
317
		sansMotifAccesChp.setFieldLabel("Si oui, quelles démarches doit-on faire pour les consulter ?");
318
		valorisationOnglet.add(sansMotifAccesChp);
319
 
115 jpm 320
		RadioGroup avecMotifAccesMarkRGrpChp = creerChoixUniqueRadioGroupe("avec_motif_acces_mark", "ouiNon");
111 jpm 321
		avecMotifAccesMarkRGrpChp.setFieldLabel("Peut-on visiter vos collections botaniques avec des objectifs de recherches scientifiques ?");
322
		valorisationOnglet.add(avecMotifAccesMarkRGrpChp);
323
 
115 jpm 324
		valorisationOnglet.add(avecMotifAccesChp = new TextField<String>());
111 jpm 325
		avecMotifAccesChp.hide();
326
		avecMotifAccesChp.setFieldLabel("Si oui, quelles démarches doit-on faire pour les visiter ?");
327
 
328
		return valorisationOnglet;
329
	}
330
 
108 jpm 331
	private TabItem creerOngletConservation() {
332
		conservationOnglet = new TabItem();
333
		conservationOnglet.setText("Conservation");
110 jpm 334
		conservationOnglet.setScrollMode(Scroll.AUTO);
108 jpm 335
		conservationOnglet.setLayout(creerFormLayout(650, LabelAlign.TOP, null));
336
 
115 jpm 337
		RadioGroup markFormationRGrpChp = creerChoixUniqueRadioGroupe("formation_mark", "ouiNon");
109 jpm 338
		markFormationRGrpChp.setFieldLabel("Le personnel s'occupant des collections a-t-il suivi des formations en conservations ?");
339
		conservationOnglet.add(markFormationRGrpChp);
108 jpm 340
 
111 jpm 341
		formationChp = new TextField<String>();
342
		formationChp.hide();
343
		formationChp.setFieldLabel("Si oui, lesquelles ?");
108 jpm 344
		conservationOnglet.add(formationChp);
345
 
115 jpm 346
		RadioGroup markInteretFormationRGrpChp = creerChoixUniqueRadioGroupe("interet_formation_mark", "ouiNon");
109 jpm 347
		markInteretFormationRGrpChp.setFieldLabel("Seriez vous intéressé par une formation à la conservation et à la restauration d'herbier ?");
348
		conservationOnglet.add(markInteretFormationRGrpChp);
108 jpm 349
 
115 jpm 350
		localStockageTrukCp = creerChoixMultipleCp("localStockage");
351
		localStockageTrukCacGrpChp = new CheckBoxGroup();
352
		localStockageTrukCacGrpChp.setFieldLabel("Avez vous des locaux spécifiques de stockage des collections botaniques ?");
353
		conservationOnglet.add(localStockageTrukCp);
108 jpm 354
 
115 jpm 355
		meubleStockageTrukCp = creerChoixMultipleCp("meubleStockage");
356
		meubleStockageTrukCacGrpChp = new CheckBoxGroup();
357
		meubleStockageTrukCacGrpChp.setFieldLabel("Avez vous des meubles spécifiques au stockage des collections botaniques ?");
358
		conservationOnglet.add(meubleStockageTrukCp);
108 jpm 359
 
115 jpm 360
		parametreStockageTrukCp = creerChoixMultipleCp("parametreStockage");
361
		parametreStockageTrukCacGrpChp = new CheckBoxGroup();
362
		parametreStockageTrukCacGrpChp.setFieldLabel("Quels paramètres maîtrisez vous ?");
363
		conservationOnglet.add(parametreStockageTrukCp);
109 jpm 364
 
115 jpm 365
		RadioGroup collectionCommuneMarkRGrpChp = creerChoixUniqueRadioGroupe("collection_commune_mark", "ouiNon");
111 jpm 366
		collectionCommuneMarkRGrpChp.setFieldLabel("Les collections botaniques sont-elles conservées avec d'autres collections  dans les mêmes locaux (problème de conservation en commun) ?");
367
		conservationOnglet.add(collectionCommuneMarkRGrpChp);
109 jpm 368
 
111 jpm 369
		collectionAutreTrukCp = creerChoixMultipleCp("autreCollection");
115 jpm 370
		collectionAutreTrukCacGrpChp = new CheckBoxGroup();
371
		collectionAutreTrukCacGrpChp.setFieldLabel("Si oui, lesquelles ?");
111 jpm 372
		collectionAutreTrukCp.hide();
373
		conservationOnglet.add(collectionAutreTrukCp);
110 jpm 374
 
115 jpm 375
		RadioGroup accesControleMarkRGrpChp = creerChoixUniqueRadioGroupe("mark_acces_controle", "ouiNon");
376
		accesControleMarkRGrpChp.setFieldLabel("L'accès à vos collections botanique est-il contrôlé (ex. : manipulation réservées à des personnes compétentes) ?");
377
		conservationOnglet.add(accesControleMarkRGrpChp);
110 jpm 378
 
115 jpm 379
		RadioGroup restaurationMarkRGrpChp = creerChoixUniqueRadioGroupe("restauration_mark", "ouiNon");
380
		restaurationMarkRGrpChp.setFieldLabel("Effectuez vous des opérations de restauration ou de remise en état de vos collections botaniques ?");
381
		conservationOnglet.add(restaurationMarkRGrpChp);
110 jpm 382
 
111 jpm 383
		opRestauTrukCp = creerChoixMultipleCp("opRestau");
115 jpm 384
		opRestauTrukCacGrpChp = new CheckBoxGroup();
385
		opRestauTrukCacGrpChp.setFieldLabel("Si oui, lesquelles ?");
111 jpm 386
		opRestauTrukCp.hide();
387
		conservationOnglet.add(opRestauTrukCp);
110 jpm 388
 
115 jpm 389
		materielConservationCeRGrpChp = creerChoixUniqueRadioGroupe("materiel_conservation_ce", "onep");
390
		materielConservationCeRGrpChp.setFieldLabel("Utilisez vous du matériel de conservation ?");
391
		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..."));
392
		conservationOnglet.add(materielConservationCeRGrpChp);
110 jpm 393
 
115 jpm 394
		autreMaterielTrukCp = creerChoixMultipleCp("autreMateriel");
395
		autreMaterielTrukCp.hide();
396
		autreMaterielTrukCacGrpChp = new CheckBoxGroup();
397
		autreMaterielTrukCacGrpChp.setFieldLabel("Si non, qu'utilisez vous comme matériel ?");
398
		conservationOnglet.add(autreMaterielTrukCp);
110 jpm 399
 
115 jpm 400
		RadioGroup markTraitementRGrpChp = creerChoixUniqueRadioGroupe("traitement_mark", "ouiNon");
110 jpm 401
		markTraitementRGrpChp.setFieldLabel("Réalisez vous actuellement des traitements globaux contre les insectes ?");
402
		conservationOnglet.add(markTraitementRGrpChp);
403
 
111 jpm 404
		traitementTrukCp = creerChoixMultipleCp("insecteTraitement");
115 jpm 405
		traitementTrukCp.hide();
406
		traitementTrukCacGrpChp = new CheckBoxGroup();
407
		traitementTrukCacGrpChp.setFieldLabel("Si oui, lesquels ?");
111 jpm 408
		conservationOnglet.add(traitementTrukCp);
110 jpm 409
 
115 jpm 410
		RadioGroup markCollectionAcquisitionRGrpChp = creerChoixUniqueRadioGroupe("collection_acquisition_mark", "ouiNon");
110 jpm 411
		markCollectionAcquisitionRGrpChp.setFieldLabel("Actuellement, vos collections botaniques s'accroissent-elles de nouvelles acquisitions ?");
412
		conservationOnglet.add(markCollectionAcquisitionRGrpChp);
413
 
115 jpm 414
		RadioGroup markEchantillonAcquisitionRGrpChp = creerChoixUniqueRadioGroupe("echantillon_acquisition_mark", "ouiNon");
110 jpm 415
		markEchantillonAcquisitionRGrpChp.setFieldLabel("Actuellement, mettez vous en herbier de nouveaux échantillons ?");
416
		conservationOnglet.add(markEchantillonAcquisitionRGrpChp);
417
 
115 jpm 418
		traitementAcquisitionMarkRGrpChp = creerChoixUniqueRadioGroupe("traitement_acquisition_mark", "ouiNon");
419
		traitementAcquisitionMarkRGrpChp.hide();
420
		traitementAcquisitionMarkRGrpChp.setFieldLabel("Si oui, faites-vous un traitement contre les insectes avant l'intégration dans vos collections ?");
421
		conservationOnglet.add(traitementAcquisitionMarkRGrpChp);
110 jpm 422
 
115 jpm 423
		traitementAcquisitionMarkLabel = new LabelField();
424
		traitementAcquisitionMarkLabel.hide();
425
		traitementAcquisitionMarkLabel.setFieldLabel("Si oui, lesquels ?");
426
		conservationOnglet.add(traitementAcquisitionMarkLabel);
110 jpm 427
 
115 jpm 428
		poisonTraitementTrukCp = creerChoixMultipleCp("poisonTraitement");
429
		poisonTraitementTrukCp.hide();
430
		poisonTraitementTrukCacGrpChp = new CheckBoxGroup();
431
		poisonTraitementTrukCacGrpChp.setFieldLabel("Empoisonnement");
432
		poisonTraitementTrukCacGrpChp.setLabelStyle("font-weight:normal;text-decoration:underline;");
433
		poisonTraitementTrukCacGrpChp.setLabelSeparator("");
434
		conservationOnglet.add(poisonTraitementTrukCp);
110 jpm 435
 
111 jpm 436
		insecteTraitementTrukCp = creerChoixMultipleCp("insecteTraitement");
115 jpm 437
		insecteTraitementTrukCp.hide();
438
		insecteTraitementTrukCacGrpChp = new CheckBoxGroup();
439
		insecteTraitementTrukCacGrpChp.setLabelStyle("font-weight:normal;text-decoration:underline;");
440
		insecteTraitementTrukCacGrpChp.setLabelSeparator("");
441
		insecteTraitementTrukCacGrpChp.setFieldLabel("Désinsectisation");
111 jpm 442
		conservationOnglet.add(insecteTraitementTrukCp);
110 jpm 443
 
108 jpm 444
		return conservationOnglet;
445
	}
446
 
103 jpm 447
	private TabItem creerOngletPersonnel() {
108 jpm 448
		personnelOnglet = new TabItem();
103 jpm 449
		personnelOnglet.setText("Personnel");
110 jpm 450
		personnelOnglet.setScrollMode(Scroll.AUTO);
451
		personnelOnglet.setLayout(creerFormLayout(400, LabelAlign.LEFT, null));
103 jpm 452
 
453
		NumberField nbreTotalPersonneStructureChp = new NumberField();
454
		nbreTotalPersonneStructureChp.setFieldLabel("Nombre de personne travaillant dans l'institution");
455
		nbreTotalPersonneStructureChp.setFormat(NumberFormat.getFormat("#"));
456
		nbreTotalPersonneStructureChp.setToolTip("Ce champ doit contenir un nombre");
457
		personnelOnglet.add(nbreTotalPersonneStructureChp);
458
 
459
		personnelOnglet.add(this.creerGrillePersonnel());
460
 
461
		nbreTotalPersonnelChp = new LabelField();
462
		nbreTotalPersonnelChp.setFieldLabel("Nombre de personne travaillant sur les collections");
463
		nbreTotalPersonnelChp.setLabelSeparator(":");
464
		nbreTotalPersonnelChp.setValue(""+grillePersonnel.getStore().getCount());
465
		personnelOnglet.add(nbreTotalPersonnelChp);
466
 
467
		return personnelOnglet;
468
	}
469
 
102 jpm 470
	private ContentPanel creerGrillePersonnel() {
103 jpm 471
 
102 jpm 472
		List<Personne> personnes = new ArrayList<Personne>();
473
		personnes.add(new Personne(Valeur.FONCTION_DIRECTEUR));
474
		personnes.add(new Personne(Valeur.FONCTION_CONSERVATEUR));
475
 
103 jpm 476
		personnelGrilleMagazin = new ListStore<Personne>();
477
		personnelGrilleMagazin.add(personnes);
478
 
102 jpm 479
		List<ColumnConfig> configs = new ArrayList<ColumnConfig>();
480
 
481
		CheckBoxSelectionModel<Personne> sm = new CheckBoxSelectionModel<Personne>();
482
		configs.add(sm.getColumn());
103 jpm 483
 
484
		ColumnConfig column = new ColumnConfig("ce_truk_fonction", "Fonction", 100);
119 jpm 485
		modele.obtenirListeValeurs(((Configuration) Registry.get(RegistreId.CONFIG)).getListeId("fonction"));
103 jpm 486
		magazinLiFonction = new ListStore<Valeur>();
487
		magazinLiFonction.add(new ArrayList<Valeur>());
488
 
489
		comboLiFonction = new ComboBox<Valeur>();
490
		comboLiFonction.setTriggerAction(TriggerAction.ALL);
491
		comboLiFonction.setEditable(true);
492
		comboLiFonction.setDisplayField("nom");
493
		//comboLiStatut.setEmptyText("Sélectionez une fonction...");
494
		comboLiFonction.setStore(magazinLiFonction);
495
 
496
		CellEditor fonctionEditor = new CellEditor(comboLiFonction) {
497
			@Override
498
			public Object preProcessValue(Object value) {
499
				if (value == null) {
500
					return value;
501
				}
502
				//GWT.log("pre : "+value.toString(), null);
503
				return comboLiFonction.getStore().findModel("nom", (String) value);
504
			}
505
 
506
			@Override
507
			public Object postProcessValue(Object value) {
508
				if (value == null) {
509
					return value;
510
				}
511
				//GWT.log("post : "+value.toString(), null);
512
				return ((Valeur) value).get("nom");
513
			}
514
		};
515
		column.setEditor(fonctionEditor);
102 jpm 516
		configs.add(column);
517
 
518
		column = new ColumnConfig();
519
		column.setId("prenom");
103 jpm 520
		column.setHeader("Prénom");
521
		column.setWidth(100);
522
		TextField<String> prenomChp = new TextField<String>();
523
		prenomChp.setAllowBlank(false);
524
		prenomChp.getMessages().setBlankText("Ce champ est obligatoire.");
525
		prenomChp.setAutoValidate(true);
526
		column.setEditor(new CellEditor(prenomChp));
102 jpm 527
		configs.add(column);
528
 
529
		column = new ColumnConfig();
530
		column.setId("nom");
531
		column.setHeader("Nom");
103 jpm 532
		column.setWidth(100);
533
		TextField<String> nomChp = new TextField<String>();
534
		nomChp.setAllowBlank(false);
535
		nomChp.getMessages().setBlankText("Ce champ est obligatoire.");
536
		nomChp.setAutoValidate(true);
537
		column.setEditor(new CellEditor(nomChp));
102 jpm 538
		configs.add(column);
539
 
103 jpm 540
		column = new ColumnConfig("tel", "Téléphone", 100);
541
		TextField<String> telChp = new TextField<String>();
542
		column.setEditor(new CellEditor(telChp));
102 jpm 543
		configs.add(column);
544
 
545
		column = new ColumnConfig("fax", "Fax", 100);
103 jpm 546
		TextField<String> faxChp = new TextField<String>();
547
		column.setEditor(new CellEditor(faxChp));
102 jpm 548
		configs.add(column);
549
 
103 jpm 550
		column = new ColumnConfig("courriel", "Courriel", 100);
551
		TextField<String> emailChp = new TextField<String>();
552
		column.setEditor(new CellEditor(emailChp));
102 jpm 553
		configs.add(column);
554
 
119 jpm 555
		modele.obtenirListeValeurs(((Configuration) Registry.get(RegistreId.CONFIG)).getListeId("statut"));
103 jpm 556
		magazinLiStatut = new ListStore<Valeur>();
557
		magazinLiStatut.add(new ArrayList<Valeur>());
558
 
559
		comboLiStatut = new ComboBox<Valeur>();
560
		comboLiStatut.setTriggerAction(TriggerAction.ALL);
561
		comboLiStatut.setEditable(false);
562
		comboLiStatut.setDisplayField("nom");
563
		comboLiStatut.setEmptyText("Sélectionez un statut...");
564
		comboLiStatut.setStore(magazinLiStatut);
565
 
566
		CellEditor statutEditor = new CellEditor(comboLiStatut) {
567
			@Override
568
			public Object preProcessValue(Object value) {
569
				if (value == null) {
570
					return value;
571
				}
572
				//GWT.log("pre : "+value.toString(), null);
573
				return comboLiStatut.getStore().findModel("nom", (String) value);
574
			}
575
 
576
			@Override
577
			public Object postProcessValue(Object value) {
578
				if (value == null) {
579
					return value;
580
				}
581
				//GWT.log("post : "+value.toString(), null);
582
				return ((Valeur) value).get("nom");
583
			}
584
		};
585
		column = new ColumnConfig("statut", "Statut", 100);
586
		column.setEditor(statutEditor);
102 jpm 587
		configs.add(column);
588
 
103 jpm 589
		column = new ColumnConfig("tps_w", "Temps travail", 100);
590
		column.setNumberFormat(NumberFormat.getFormat("##"));
591
		NumberField tpsWChp = new NumberField();
592
		tpsWChp.setFormat(NumberFormat.getFormat("##"));
593
		tpsWChp.setToolTip("Ce champ doit contenir un nombre");
594
		column.setEditor(new CellEditor(tpsWChp));
595
		configs.add(column);
596
 
597
		column = new ColumnConfig("specialites", "Spécialités botaniques", 150);
598
		TextField<String> speChp = new TextField<String>();
599
		column.setEditor(new CellEditor(speChp));
600
		configs.add(column);
601
 
602
		CheckColumnConfig checkColumn = new CheckColumnConfig("mark_contact", "Contact ?", 60);
102 jpm 603
		configs.add(checkColumn);
604
 
605
		ContentPanel cp = new ContentPanel();
606
		cp.setHeading("Personnes travaillant sur les collections");
110 jpm 607
		cp.setIconStyle("icone-table");
608
		cp.setScrollMode(Scroll.AUTO);
103 jpm 609
		cp.setLayout(new FitLayout());
110 jpm 610
		cp.setSize(1100, 200);
102 jpm 611
		cp.setFrame(true);
612
 
613
		ToolBar toolBar = new ToolBar();
103 jpm 614
 
615
		TextToolItem ajouterPersonnelBtn = new TextToolItem("Ajouter", "icone-vcard-ajouter");
616
		ajouterPersonnelBtn.addSelectionListener(new SelectionListener<ToolBarEvent>() {
617
			@Override
618
			public void componentSelected(ToolBarEvent ce) {
619
				Personne personne = new Personne();
620
				grillePersonnel.stopEditing();
621
				personnelGrilleMagazin.insert(personne, 0);
622
				grillePersonnel.startEditing(0, 0);
623
				// Mise à jour du nombre de personnel travaillant sur les collections
624
				nbreTotalPersonnelChp.setValue(""+grillePersonnel.getStore().getCount());
625
				// Activation du bouton supprimer si la grille contient un élément
626
				if (grillePersonnel.getStore().getCount() > 0) {
627
					ce.component.enable();
628
				}
629
			}
630
		});
631
		toolBar.add(ajouterPersonnelBtn);
632
		toolBar.add(new SeparatorToolItem());
633
		TextToolItem supprimerPersonnelBtn = new TextToolItem("Supprimer", "icone-vcard-supprimer");
634
		supprimerPersonnelBtn.addSelectionListener(new SelectionListener<ToolBarEvent>() {
635
			@Override
636
			public void componentSelected(ToolBarEvent ce) {
637
				grillePersonnel.getStore().remove(grillePersonnel.getStore().getAt(0));
638
				// Mise à jour du nombre de personnel travaillant sur les collections
639
				nbreTotalPersonnelChp.setValue(""+grillePersonnel.getStore().getCount());
640
				// Désactivation du bouton supprimer si la grille contient plus d'élément
641
				if (grillePersonnel.getStore().getCount() == 0) {
642
					ce.item.disable();
643
				}
644
			}
645
		});
646
		toolBar.add(supprimerPersonnelBtn);
102 jpm 647
		cp.setTopComponent(toolBar);
648
 
649
		ColumnModel cm = new ColumnModel(configs);
650
 
103 jpm 651
		grillePersonnel = new EditorGrid<Personne>(personnelGrilleMagazin, cm);
652
		grillePersonnel.setBorders(true);
653
		grillePersonnel.setSelectionModel(sm);
654
		grillePersonnel.addPlugin(sm);
655
		grillePersonnel.addPlugin(checkColumn);
110 jpm 656
  		grillePersonnel.setAutoExpandColumn("specialites");
102 jpm 657
 
103 jpm 658
		cp.add(grillePersonnel);
102 jpm 659
		return cp;
660
	}
661
 
110 jpm 662
	private TabItem creerOngletIdentification() {
663
		//+-----------------------------------------------------------------------------------------------------------+
664
		// Onlget formulaire IDENTIFICATION
665
		TabItem identificationOnglet = new TabItem();
666
		identificationOnglet.setText("Identification");
667
		identificationOnglet.setLayout(new FormLayout());
668
 
669
		//+-----------------------------------------------------------------------------------------------------------+
670
		// Fieldset IDENTITÉ
671
		FieldSet fieldSetIdentite = new FieldSet();
672
		fieldSetIdentite.setHeading("Identité");
673
		fieldSetIdentite.setCollapsible(true);
674
		fieldSetIdentite.setLayout(creerFormLayout(200, LabelAlign.LEFT, 4));
675
 
119 jpm 676
		nomStructureChp = new TextField<String>();
133 jpm 677
		nomStructureChp.setTabIndex(100);
110 jpm 678
		nomStructureChp.setFieldLabel("Nom de la structure");
679
		nomStructureChp.setAllowBlank(false);
680
		nomStructureChp.getMessages().setBlankText("Ce champ est obligatoire.");
681
		fieldSetIdentite.add(nomStructureChp, new FormData(450, 0));
682
 
683
		// Création du sous-formulaire : Acronyme
684
		LayoutContainer ligne = new LayoutContainer();
685
		ligne.setLayout(new ColumnLayout());
686
		LayoutContainer gauche = new LayoutContainer();
687
		gauche.setLayout(creerFormLayout(200, LabelAlign.LEFT, 0));
688
		LayoutContainer droite = new LayoutContainer();
689
		droite.setLayout(creerFormLayout(0, null, 0));
690
 
691
		ListStore<InterneValeur> acronymes = new ListStore<InterneValeur>();
692
		acronymes.add(InterneValeurListe.getTypeAcronyme());
693
 
133 jpm 694
		comboAcronyme = new ComboBox<InterneValeur>();
695
		comboAcronyme.setTabIndex(101);
110 jpm 696
		comboAcronyme.setEmptyText("Sélectioner un type d'acronyme...");
697
		comboAcronyme.setFieldLabel("Acronymes");
698
		comboAcronyme.setDisplayField("nom");
699
		comboAcronyme.setStore(acronymes);
700
		comboAcronyme.setEditable(false);
701
		comboAcronyme.setTypeAhead(true);
702
		comboAcronyme.setTriggerAction(TriggerAction.ALL);
703
		comboAcronyme.addSelectionChangedListener(new SelectionChangedListener<InterneValeur>() {
704
			@Override
705
			public void selectionChanged(SelectionChangedEvent<InterneValeur> se) {
706
				String acronymeAbr = se.getSelectedItem().getAbr();
707
				if (acronymeAbr.equals("IH")) {
708
					mnhnChp.hide();
709
					ihChp.show();
710
				} else if (acronymeAbr.equals("MNHN")) {
711
					ihChp.hide();
712
					mnhnChp.show();
713
				} else if (acronymeAbr.equals("")) {
714
					ihChp.hide();
715
					mnhnChp.hide();
716
					comboAcronyme.clearSelections();
717
				}
718
			}
719
        });
720
		gauche.add(comboAcronyme);
721
 
722
		ihChp = new TextField<String>();
723
		//ihChp.setEmptyText("Index Herbariorum");
133 jpm 724
		ihChp.setTabIndex(102);
110 jpm 725
		ihChp.setLabelSeparator("");
726
		ihChp.setToolTip("Index Herbariorum : herbier de plus de 5000 échantillons");
727
		ihChp.hide();
728
		droite.add(ihChp);
729
 
133 jpm 730
		mnhnChp = new TextField<String>();
731
		mnhnChp.setTabIndex(103);
110 jpm 732
		//mnhnChp.setEmptyText("MNHN");
733
		mnhnChp.setLabelSeparator("");
734
		mnhnChp.setToolTip("Acronyme MNHN : herbier de moins de 5000 échantillons");
735
		mnhnChp.hide();
736
		droite.add(mnhnChp);
737
 
738
		ligne.add(gauche, new ColumnData(0.5));
739
		ligne.add(droite, new ColumnData(0.5));
740
		fieldSetIdentite.add(ligne);
741
 
742
		// Création du sous-formulaire : Type de Structure
743
		LayoutContainer ligneTs = new LayoutContainer();
744
		ligneTs.setLayout(new ColumnLayout());
745
 
746
		LayoutContainer gaucheTs = new LayoutContainer();
747
		gaucheTs.setLayout(creerFormLayout(200, LabelAlign.LEFT, 0));
748
 
749
		LayoutContainer droiteTs = new LayoutContainer();
750
		droiteTs.setLayout(creerFormLayout(0, null, 0));
751
 
752
		ListStore<InterneValeur> typesStructure = new ListStore<InterneValeur>();
753
		typesStructure.add(InterneValeurListe.getTypeStructure());
754
 
133 jpm 755
		comboTypeStructure = new ComboBox<InterneValeur>();
756
		comboTypeStructure.setTabIndex(104);
110 jpm 757
		comboTypeStructure.setEmptyText("Sélectioner un type de structure...");
758
		comboTypeStructure.setFieldLabel("Statut des structures");
759
		comboTypeStructure.setDisplayField("nom");
760
		comboTypeStructure.setStore(typesStructure);
761
		comboTypeStructure.setEditable(false);
762
		comboTypeStructure.setTypeAhead(true);
763
		comboTypeStructure.setTriggerAction(TriggerAction.ALL);
764
		comboTypeStructure.addSelectionChangedListener(new SelectionChangedListener<InterneValeur>() {
765
			@Override
766
			public void selectionChanged(SelectionChangedEvent<InterneValeur> se) {
767
				String typeAbr = se.getSelectedItem().getAbr();
768
				if (typeAbr.equals("stpu")) {
769
					comboLstpr.hide();
770
					comboLstpu.show();
771
				} else if (typeAbr.equals("stpr")) {
772
					comboLstpu.hide();
773
					comboLstpr.show();
774
				} else if (typeAbr.equals("")) {
775
					comboLstpr.hide();
776
					comboLstpu.hide();
777
					comboTypeStructure.clearSelections();
778
				}
779
			}
780
        });
781
		gaucheTs.add(comboTypeStructure);
782
 
119 jpm 783
		modele.obtenirListeValeurs(((Configuration) Registry.get(RegistreId.CONFIG)).getListeId("stpu"));
110 jpm 784
		magazinLstpu = new ListStore<Valeur>();
785
		magazinLstpu.add(new ArrayList<Valeur>());
133 jpm 786
		comboLstpu = new ComboBox<Valeur>();
787
		comboLstpu.setTabIndex(105);
110 jpm 788
		//comboLstpu.setFieldLabel("Statut des structures publiques");
789
		comboLstpu.setLabelSeparator("");
790
		comboLstpu.setDisplayField("nom");
791
		comboLstpu.setEditable(false);
792
		comboLstpu.setTriggerAction(TriggerAction.ALL);
793
		comboLstpu.setStore(magazinLstpu);
794
		comboLstpu.hide();
795
		droiteTs.add(comboLstpu);
796
 
119 jpm 797
		modele.obtenirListeValeurs(((Configuration) Registry.get(RegistreId.CONFIG)).getListeId("stpr"));
110 jpm 798
		magazinLstpr = new ListStore<Valeur>();
799
		magazinLstpr.add(new ArrayList<Valeur>());
133 jpm 800
		comboLstpr = new ComboBox<Valeur>();
801
		comboLstpr.setTabIndex(106);
110 jpm 802
		//comboLstpr.setFieldLabel("Statut des structures privées");
803
		comboLstpr.setLabelSeparator("");
804
		comboLstpr.setDisplayField("nom");
805
		comboLstpr.setEditable(false);
806
		comboLstpr.setTriggerAction(TriggerAction.ALL);
807
		comboLstpr.setStore(magazinLstpr);
808
		comboLstpr.hide();
809
		droiteTs.add(comboLstpr);
810
 
811
		ligneTs.add(gaucheTs, new ColumnData(0.5));
812
		ligneTs.add(droiteTs, new ColumnData(0.5));
813
		fieldSetIdentite.add(ligneTs);
814
 
119 jpm 815
		dateFondationChp = new DateField();
133 jpm 816
		dateFondationChp.setTabIndex(107);
110 jpm 817
		dateFondationChp.setFieldLabel("Date de fondation");
818
		dateFondationChp.getPropertyEditor().getFormat();
819
		dateFondationChp.getPropertyEditor().setFormat(DateTimeFormat.getFormat("dd/MM/yyyy"));
820
		dateFondationChp.getMessages().setInvalidText("La valeur saisie n'est pas une date valide. La date doit être au format «jj/mm/aaaa».");
821
		fieldSetIdentite.add(dateFondationChp);
822
 
823
		identificationOnglet.add(fieldSetIdentite);
824
 
825
		//+-----------------------------------------------------------------------------------------------------------+
826
		// Fieldset ADRESSE
827
		LayoutContainer principalFdAdresse = new LayoutContainer();
828
		principalFdAdresse.setLayout(new ColumnLayout());
829
 
830
		LayoutContainer gaucheFdAdresse = new LayoutContainer();
831
		gaucheFdAdresse.setLayout(creerFormLayout(100, LabelAlign.LEFT, 0));
832
 
833
		LayoutContainer droiteFdAdresse = new LayoutContainer();
834
		droiteFdAdresse.setLayout(creerFormLayout(100, LabelAlign.LEFT, 0));
835
 
836
		FieldSet fieldSetAdresse = new FieldSet();
837
		fieldSetAdresse.setHeading("Adresse");
838
		fieldSetAdresse.setCollapsible(true);
839
 
840
		fieldSetAdresse.setLayout(creerFormLayout(100, LabelAlign.LEFT, 4));
841
 
133 jpm 842
		adrChp = new TextField<String>();
843
		adrChp.setTabIndex(108);
110 jpm 844
		adrChp.setFieldLabel("Adresse");
845
		fieldSetAdresse.add(adrChp, new FormData(550, 0));
846
 
133 jpm 847
		cpChp = new TextField<String>();
848
		cpChp.setTabIndex(109);
110 jpm 849
		cpChp.setFieldLabel("Code postal");
850
		gaucheFdAdresse.add(cpChp);
851
 
133 jpm 852
		villeChp = new TextField<String>();
853
		villeChp.setTabIndex(110);
110 jpm 854
		villeChp.setFieldLabel("Ville");
855
		droiteFdAdresse.add(villeChp);
856
 
133 jpm 857
		regionChp = new TextField<String>();
858
		regionChp.setTabIndex(111);
110 jpm 859
		regionChp.setFieldLabel("Région");
860
		gaucheFdAdresse.add(regionChp);
861
 
133 jpm 862
		paysChp = new TextField<String>();
863
		paysChp.setTabIndex(112);
110 jpm 864
		paysChp.setFieldLabel("Pays");
865
		droiteFdAdresse.add(paysChp);
866
 
867
		principalFdAdresse.add(gaucheFdAdresse, new ColumnData(.5));
868
		principalFdAdresse.add(droiteFdAdresse, new ColumnData(.5));
869
		fieldSetAdresse.add(principalFdAdresse);
870
		identificationOnglet.add(fieldSetAdresse);
871
 
872
		//+-----------------------------------------------------------------------------------------------------------+
873
		// Fieldset TÉLÉPHONE et EMAIL
874
		LayoutContainer principalFdTelMail = new LayoutContainer();
875
		principalFdTelMail.setLayout(new ColumnLayout());
876
 
877
		LayoutContainer gaucheFdTelMail = new LayoutContainer();
878
		gaucheFdTelMail.setLayout(creerFormLayout(100, LabelAlign.LEFT, 0));
879
 
880
		LayoutContainer droiteFdTelMail = new LayoutContainer();
881
		droiteFdTelMail.setLayout(creerFormLayout(100, LabelAlign.LEFT, 0));
882
 
883
		FieldSet fieldSetTelMail = new FieldSet();
884
		fieldSetTelMail.setHeading("Communication");
885
		fieldSetTelMail.setCollapsible(true);
886
 
887
		fieldSetTelMail.setLayout(creerFormLayout(200, LabelAlign.LEFT, 4));
888
 
133 jpm 889
		telChp = new TextField<String>();
890
		telChp.setTabIndex(113);
110 jpm 891
		telChp.setFieldLabel("Téléphone");
892
		gaucheFdTelMail.add(telChp);
893
 
133 jpm 894
		faxChp = new TextField<String>();
895
		faxChp.setTabIndex(114);
110 jpm 896
		faxChp.setFieldLabel("Fax");
897
		droiteFdTelMail.add(faxChp);
898
 
133 jpm 899
		emailChp = new TextField<String>();
900
		emailChp.setTabIndex(115);
110 jpm 901
		emailChp.setFieldLabel("Courriel");
902
		emailChp.setToolTip("Saisir le courriel de l'organisation, pas de courriel individuel. Ex. : accueil@organisation.org");
903
		gaucheFdTelMail.add(emailChp);
904
 
133 jpm 905
		urlChp = new TextField<String>();
906
		urlChp.setTabIndex(116);
110 jpm 907
		urlChp.setFieldLabel("Site web");
908
		droiteFdTelMail.add(urlChp);
909
 
910
		principalFdTelMail.add(gaucheFdTelMail, new ColumnData(.5));
911
		principalFdTelMail.add(droiteFdTelMail, new ColumnData(.5));
912
		fieldSetTelMail.add(principalFdTelMail);
913
		identificationOnglet.add(fieldSetTelMail);
914
 
915
		return identificationOnglet;
916
	}
917
 
108 jpm 918
	/** Méthode simplifiant la création de FormLayout.
110 jpm 919
	 * Chacun des paramètres peut prendre la valeur null pour utiliser la valeur par défaut.
108 jpm 920
	 *
110 jpm 921
	 * @param labelWidth largeur des labels.
108 jpm 922
	 * @param labelAlign alignement des labels
923
	 * @param padding padding du layout
924
	 * @return
925
	 */
926
	private FormLayout creerFormLayout(Integer labelWidth, LabelAlign labelAlign, Integer padding) {
927
		FormLayout formLayout = new FormLayout();
110 jpm 928
		if (labelWidth != null) {
929
			formLayout.setLabelWidth(labelWidth);
930
		}
931
		if (labelAlign != null) {
932
			formLayout.setLabelAlign(labelAlign);
933
		}
108 jpm 934
		if (padding != null) {
935
			formLayout.setPadding(padding);
936
		}
937
		return formLayout;
938
	}
939
 
109 jpm 940
	/** Méthode simplifiant la création de bouton radio oui/non
941
	 *
942
	 * @param listeNom nom de la liste de valeur
943
	 * @return
944
	 */
115 jpm 945
	private RadioGroup creerChoixUniqueRadioGroupe(String groupeNom, String listeNom) {
946
		groupeNom += "_grp";
947
		// NOTE : il semblerait qu'il faille aussi utiliser setName() pour éviter tout problème...
948
		RadioGroup radioGroup = new RadioGroup(groupeNom);
949
		radioGroup.setName(groupeNom);
119 jpm 950
 
115 jpm 951
		if (! listeNom.equals("ouiNon")) {
119 jpm 952
			modele.obtenirListeValeurs(((Configuration) Registry.get(RegistreId.CONFIG)).getListeId(listeNom));
115 jpm 953
		} else {
954
			ValeurListe ouiNonListe = new ValeurListe();
119 jpm 955
			ouiNonListe.ajouter(new Valeur("000999", "Oui", "NULL", "NULL"));
956
			ouiNonListe.ajouter(new Valeur("000998", "Non", "NULL", "NULL"));
115 jpm 957
			creerChoixUniqueBoutonRadio(radioGroup, ouiNonListe);
958
		}
109 jpm 959
 
115 jpm 960
		return radioGroup;
109 jpm 961
	}
962
 
115 jpm 963
	private void creerChoixUniqueBoutonRadio(RadioGroup radioGroupe, ValeurListe listeValeurs) {
964
		for (Iterator<String> it = listeValeurs.keySet().iterator(); it.hasNext();) {
965
			Valeur val = listeValeurs.get(it.next());
966
 
967
			Radio radioBtn = new Radio();
119 jpm 968
			radioGroupe.add(radioBtn);
969
			radioBtn.setName(radioGroupe.getName().replace("_grp", ""));
115 jpm 970
			//radioBtn.setId(val.getId()+"_"+radioBtn.getName());
971
			radioBtn.setBoxLabel(val.getNom());
119 jpm 972
			radioBtn.addListener(Events.Change, new Listener<ComponentEvent>() {
115 jpm 973
 
119 jpm 974
				public void handleEvent(ComponentEvent be) {
133 jpm 975
					//Window.alert(((Radio) be.component).getName());
976
					afficherChampSupplementaire(((Radio) be.component));
115 jpm 977
				}
978
 
979
			});
119 jpm 980
 
115 jpm 981
			if (! val.getDescription().equals("NULL")) {
982
				radioBtn.setToolTip(new ToolTipConfig(val.getNom(), val.getDescription()));
983
			}
984
		}
985
	}
986
 
987
	private void afficherChampSupplementaire(Radio radioBtn) {
119 jpm 988
		//GWT.log("Nom btn : "+radioBtn.getName()+" - Nom group : "+radioBtn.getGroup().getName(), null);
115 jpm 989
		// Valeur du bouton radio déclenchant l'affichage des composants cachés
990
		String valeurPourAfficher = "oui";
111 jpm 991
 
115 jpm 992
		// Construction de la liste des composants à afficher/cacher
993
		String radioGroupeNom = radioBtn.getGroup().getName();
994
		ArrayList<Object> composants = new ArrayList<Object>();
995
		if (radioGroupeNom.equals("action_mark_grp")) {
996
			composants.add(actionTrukCp);
997
		} else if (radioGroupeNom.equals("future_action_mark_grp")) {
998
			composants.add(futureActionChp);
999
		} else if (radioGroupeNom.equals("sans_motif_acces_mark_grp")) {
1000
			composants.add(sansMotifAccesChp);
1001
		} else if (radioGroupeNom.equals("avec_motif_acces_mark_grp")) {
1002
			composants.add(avecMotifAccesChp);
1003
		} else if (radioGroupeNom.equals("recherche_mark_grp")) {
1004
			composants.add(provenanceRechercheTrukCp);
119 jpm 1005
			composants.add(typeRechercheTrukCp);
115 jpm 1006
		} else if (radioGroupeNom.equals("formation_mark_grp")) {
1007
			composants.add(formationChp);
1008
		} else if (radioGroupeNom.equals("collection_commune_mark_grp")) {
1009
			composants.add(collectionAutreTrukCp);
1010
		} else if (radioGroupeNom.equals("restauration_mark_grp")) {
1011
			composants.add(opRestauTrukCp);
1012
		} else if (radioGroupeNom.equals("traitement_mark_grp")) {
1013
			composants.add(traitementTrukCp);
1014
		} else if (radioGroupeNom.equals("echantillon_acquisition_mark_grp")) {
1015
			composants.add(traitementAcquisitionMarkRGrpChp);
1016
		} else if (radioGroupeNom.equals("traitement_acquisition_mark_grp")) {
1017
			composants.add(traitementAcquisitionMarkLabel);
1018
			composants.add(poisonTraitementTrukCp);
1019
			composants.add(insecteTraitementTrukCp);
1020
		} else if (radioGroupeNom.equals("materiel_conservation_ce_grp")) {
1021
			composants.add(autreMaterielTrukCp);
1022
			valeurPourAfficher = "non";
1023
		}
111 jpm 1024
 
115 jpm 1025
		// Nous affichons/cachons les composant de la liste
1026
		final int tailleMax = composants.size();
1027
		//GWT.log("Id : "+radioBtn.getId()+" - Class : "+radioBtn.getClass().toString()+"- Taille : "+tailleMax, null);
119 jpm 1028
		//Window.alert("Radio grp nom : "+radioGroupeNom+" - Id btn : "+radioBtn.getId()+" - Class : "+radioBtn.getClass().toString()+"- Taille : "+tailleMax);
111 jpm 1029
		for (int i = 0; i < tailleMax; i++) {
1030
			// En fonction du type de bouton cliquer, on affiche ou cache les champs
115 jpm 1031
			String type = radioBtn.getBoxLabel().toLowerCase();
119 jpm 1032
			//GWT.log(type, null);
115 jpm 1033
			if (radioBtn.getValue() == true) {
1034
				if (type.equals(valeurPourAfficher)) {
1035
					((Component) composants.get(i)).show();
1036
				} else {
1037
					((Component) composants.get(i)).hide();
1038
				}
111 jpm 1039
			}
1040
			// Si on a à faire à un ContentPanel, on l'actualise pour déclencher l'affichage
115 jpm 1041
			if (composants.get(i) instanceof ContentPanel) {
1042
				((ContentPanel) composants.get(i)).layout();
111 jpm 1043
			}
1044
		}
1045
 
1046
	}
1047
 
109 jpm 1048
	/** Méthode simplifiant la création de choix multiple sous forme de case à cocher.
1049
	 * Apelle un service retournant la liste des valeurs représentant les cases à cocher.
1050
	 * Ajoute ou pas un champ "Autre".
1051
	 *
1052
	 * @param listeNom nom de la liste de valeur
1053
	 * @return
1054
	 */
1055
	private ContentPanel creerChoixMultipleCp(String listeNom) {
119 jpm 1056
		modele.obtenirListeValeurs(((Configuration) Registry.get(RegistreId.CONFIG)).getListeId(listeNom));
109 jpm 1057
		ContentPanel cp = new ContentPanel();
1058
		cp.setLayout(creerFormLayout(650, LabelAlign.TOP, 0));
1059
		cp.setHeaderVisible(false);
1060
		return cp;
1061
	}
1062
 
1063
	/** Méthode simplifiant la création de choix multiple sous forme de case à cocher.
1064
	 * Apelle un service retournant la liste des valeurs représentant les cases à cocher.
1065
	 * Ajoute ou pas un champ "Autre".
1066
	 *
1067
	 * @param cp panneau conteant le groupe de case à cocher
1068
	 * @param cacGroup le groupe de case à cocher
1069
	 * @param listeValeurs la liste de valeurs à transformer en case à cocher
1070
	 * @param boolAutreChp booléen indiquant si oui ou non le champ autre doit apparaître
1071
	 * @return
1072
	 */
115 jpm 1073
	private void creerChoixMultipleCac(ContentPanel cp, CheckBoxGroup cacGroupe, ValeurListe listeValeurs, Boolean boolAutreChp) {
110 jpm 1074
		cacGroupe.setAutoWidth(true);
109 jpm 1075
		for (Iterator<String> it = listeValeurs.keySet().iterator(); it.hasNext();) {
111 jpm 1076
			Valeur val = listeValeurs.get(it.next());
1077
			String nom =  val.get("nom");
109 jpm 1078
			CheckBox cac = new CheckBox();
115 jpm 1079
			cac.setId("val-"+val.getId());
111 jpm 1080
			cac.setBoxLabel(nom);
1081
			if (! val.getDescription().equals("NULL")) {
1082
				cac.setToolTip(new ToolTipConfig(val.getNom(), val.getDescription()));
109 jpm 1083
			}
1084
			cacGroupe.add(cac);
1085
		}
1086
		cp.add(cacGroupe);
1087
 
1088
		if (boolAutreChp == true) {
1089
			ContentPanel autreCp = new ContentPanel();
1090
			autreCp.setLayout(creerFormLayout(75, LabelAlign.TOP, 0));
1091
			autreCp.setHeaderVisible(false);
119 jpm 1092
			TextField<String> autreChp = new TextField<String>();
1093
			autreChp.setFieldLabel("Autre");
1094
			autreChp.setLabelStyle("font-weight:normal;");
1095
			autreCp.add(autreChp);
109 jpm 1096
			cp.add(autreCp);
1097
		}
1098
 
1099
		cp.layout();
1100
	}
1101
 
69 jpm 1102
	public void rafraichir(Object nouvelleDonnees) {
153 jpm 1103
		if (nouvelleDonnees instanceof Information) {
1104
			Information info = (Information) nouvelleDonnees;
156 jp_milcent 1105
			if (info.getMessages() != null) {
1106
				GWT.log(info.getMessages().toString(), null);
1107
			}
153 jpm 1108
			if (info.getType().equals("ajout_structure")) {
1109
				Info.display("Ajout d'une Institution", info.toString());
156 jp_milcent 1110
			} else if (info.getType().equals("selection_structure")) {
1111
				Info.display("Modification d'une Institution", info.toString());
1112
				Structure str = (Structure) info.getDonnee(0);
1113
				mode = "MODIF";
1114
				structureFormPanneau.setHeading(i18nC.titreModifFormStructurePanneau());
1115
				peuplerFormulaire(str);
153 jpm 1116
			}
119 jpm 1117
		} else if (nouvelleDonnees instanceof ValeurListe) {
91 jpm 1118
			ValeurListe listeValeurs = (ValeurListe) nouvelleDonnees;
1119
 
1120
			List<Valeur> liste = new ArrayList<Valeur>();
1121
			for (Iterator<String> it = listeValeurs.keySet().iterator(); it.hasNext();) {
1122
				liste.add(listeValeurs.get(it.next()));
1123
			}
1124
			// Test pour savoir si la liste contient des éléments
1125
			if (liste.size() > 0) {
1126
				Configuration config = (Configuration) Registry.get(RegistreId.CONFIG);
1127
				if (listeValeurs.getId().equals(config.getListeId("stpr"))) {
1128
					magazinLstpr.removeAll();
1129
					magazinLstpr.add(liste);
1130
					comboLstpr.setStore(magazinLstpr);
1131
				}
1132
				if (listeValeurs.getId().equals(config.getListeId("stpu"))) {
1133
					magazinLstpu.removeAll();
1134
					magazinLstpu.add(liste);
1135
					comboLstpu.setStore(magazinLstpu);
1136
				}
103 jpm 1137
				if (listeValeurs.getId().equals(config.getListeId("statut"))) {
1138
					magazinLiStatut.removeAll();
1139
					magazinLiStatut.add(liste);
1140
					comboLiStatut.setStore(magazinLiStatut);
1141
				}
1142
				if (listeValeurs.getId().equals(config.getListeId("fonction"))) {
1143
					magazinLiFonction.removeAll();
1144
					magazinLiFonction.add(liste);
1145
					comboLiFonction.setStore(magazinLiFonction);
1146
				}
108 jpm 1147
				if (listeValeurs.getId().equals(config.getListeId("localStockage"))) {
115 jpm 1148
					creerChoixMultipleCac(localStockageTrukCp, localStockageTrukCacGrpChp, listeValeurs, true);
108 jpm 1149
				}
1150
				if (listeValeurs.getId().equals(config.getListeId("meubleStockage"))) {
115 jpm 1151
					creerChoixMultipleCac(meubleStockageTrukCp, meubleStockageTrukCacGrpChp, listeValeurs, true);
108 jpm 1152
				}
109 jpm 1153
				if (listeValeurs.getId().equals(config.getListeId("parametreStockage"))) {
115 jpm 1154
					creerChoixMultipleCac(parametreStockageTrukCp, parametreStockageTrukCacGrpChp, listeValeurs, true);
109 jpm 1155
				}
110 jpm 1156
				if (listeValeurs.getId().equals(config.getListeId("autreCollection"))) {
111 jpm 1157
					if (collectionAutreTrukCp.getItemByItemId("collectionAutreTrukCacGrpChp") == null) {
1158
						collectionAutreTrukCacGrpChp.setId("collectionAutreTrukCacGrpChp");
115 jpm 1159
						creerChoixMultipleCac(collectionAutreTrukCp, collectionAutreTrukCacGrpChp, listeValeurs, true);
111 jpm 1160
					}
1161
					if (autreCollectionTrukCp.getItemByItemId("autreCollectionTrukCacGrpChp") == null) {
119 jpm 1162
						autreCollectionTrukCacGrpChp.setId("autreCollectionTrukCacGrpChp");
1163
						creerChoixMultipleCac(autreCollectionTrukCp, autreCollectionTrukCacGrpChp, listeValeurs, true);
111 jpm 1164
					}
110 jpm 1165
				}
1166
				if (listeValeurs.getId().equals(config.getListeId("opRestau"))) {
115 jpm 1167
					creerChoixMultipleCac(opRestauTrukCp, opRestauTrukCacGrpChp, listeValeurs, true);
110 jpm 1168
				}
1169
				if (listeValeurs.getId().equals(config.getListeId("onep"))) {
115 jpm 1170
					creerChoixUniqueBoutonRadio(materielConservationCeRGrpChp, listeValeurs);
110 jpm 1171
				}
1172
				if (listeValeurs.getId().equals(config.getListeId("autreMateriel"))) {
115 jpm 1173
					creerChoixMultipleCac(autreMaterielTrukCp, autreMaterielTrukCacGrpChp, listeValeurs, true);
110 jpm 1174
				}
1175
				if (listeValeurs.getId().equals(config.getListeId("poisonTraitement"))) {
115 jpm 1176
					creerChoixMultipleCac(poisonTraitementTrukCp, poisonTraitementTrukCacGrpChp, listeValeurs, true);
110 jpm 1177
				}
1178
				if (listeValeurs.getId().equals(config.getListeId("insecteTraitement"))) {
115 jpm 1179
					if (traitementTrukCp.getItemByItemId("traitementTrukCacGrpChp") == null) {
1180
						traitementTrukCacGrpChp.setId("traitementTrukCacGrpChp");
1181
						creerChoixMultipleCac(traitementTrukCp, traitementTrukCacGrpChp, listeValeurs, true);
110 jpm 1182
					}
115 jpm 1183
					if (insecteTraitementTrukCp.getItemByItemId("insecteTraitementTrukCacGrpChp") == null) {
1184
						insecteTraitementTrukCacGrpChp.setId("insecteTraitementTrukCacGrpChp");
1185
						creerChoixMultipleCac(insecteTraitementTrukCp, insecteTraitementTrukCacGrpChp, listeValeurs, true);
110 jpm 1186
					}
1187
				}
111 jpm 1188
				if (listeValeurs.getId().equals(config.getListeId("actionValorisation"))) {
115 jpm 1189
					creerChoixMultipleCac(actionTrukCp, actionTrukCacGrpChp, listeValeurs, true);
111 jpm 1190
				}
1191
				if (listeValeurs.getId().equals(config.getListeId("continentEtFr"))) {
115 jpm 1192
					creerChoixMultipleCac(provenanceRechercheTrukCp, provenanceRechercheTrukCacGrpChp, listeValeurs, true);
111 jpm 1193
				}
1194
				if (listeValeurs.getId().equals(config.getListeId("typeRecherche"))) {
119 jpm 1195
					creerChoixMultipleCac(typeRechercheTrukCp, typeRechercheTrukCacGrpChp, listeValeurs, true);
111 jpm 1196
				}
110 jpm 1197
				//GWT.log("La liste #"+listeValeurs.getId()+" a été reçue!", null);
91 jpm 1198
			} else {
1199
				GWT.log("La liste #"+listeValeurs.getId()+" ne contient aucune valeurs!", null);
1200
			}
1201
		}
69 jpm 1202
	}
100 jpm 1203
 
115 jpm 1204
}