Subversion Repositories eFlore/Applications.coel

Rev

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