Subversion Repositories eFlore/Applications.coel

Rev

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

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