Subversion Repositories eFlore/Applications.coel

Rev

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

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