Subversion Repositories eFlore/Applications.coel

Rev

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