Subversion Repositories eFlore/Applications.coel

Rev

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