Subversion Repositories eFlore/Applications.coel

Rev

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