Subversion Repositories eFlore/Applications.coel

Rev

Rev 771 | Rev 781 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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