Subversion Repositories eFlore/Applications.coel

Rev

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

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