Subversion Repositories eFlore/Applications.coel

Rev

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