Subversion Repositories eFlore/Applications.coel

Rev

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