Subversion Repositories eFlore/Applications.coel

Rev

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

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