Subversion Repositories eFlore/Applications.coel

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

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