Subversion Repositories eFlore/Applications.coel

Rev

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