Subversion Repositories eFlore/Applications.coel

Rev

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