Subversion Repositories eFlore/Applications.coel

Rev

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