Subversion Repositories eFlore/Applications.coel

Rev

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

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