Subversion Repositories eFlore/Applications.coel

Rev

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