Subversion Repositories eFlore/Applications.coel

Rev

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

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