Subversion Repositories eFlore/Applications.coel

Rev

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