Subversion Repositories eFlore/Applications.coel

Rev

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