Subversion Repositories eFlore/Applications.coel

Rev

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