Subversion Repositories eFlore/Applications.coel

Rev

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