Subversion Repositories eFlore/Applications.coel

Rev

Rev 1361 | Details | Compare with Previous | Last modification | View Log | RSS feed

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