Subversion Repositories eFlore/Applications.coel

Rev

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