Subversion Repositories eFlore/Applications.coel

Rev

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