Subversion Repositories eFlore/Applications.coel

Rev

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

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