Subversion Repositories eFlore/Applications.coel

Rev

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