Subversion Repositories eFlore/Applications.coel

Rev

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

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