Subversion Repositories eFlore/Applications.coel

Rev

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