Subversion Repositories eFlore/Applications.coel

Rev

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