Subversion Repositories eFlore/Applications.coel

Rev

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

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