Subversion Repositories eFlore/Applications.coel

Rev

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