Subversion Repositories eFlore/Applications.coel

Rev

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

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