Subversion Repositories eFlore/Applications.coel

Rev

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