Subversion Repositories eFlore/Applications.coel

Rev

Rev 1513 | Rev 1596 | 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");
1592 delphine 1474
		modelTypePersonnes.addField("cp_id_personne");
1475
		// ici !!!!!!!!!!!!!!!!!!!!!!! ici !!!!!!!!!!!!!!!!!
1369 cyprien 1476
 
1477
		String displayNamePersonnes = "cp_fmt_nom_complet";
1468 jpm 1478
		ProxyPersonnes<ModelData> proxyPersonnes = new ProxyPersonnes<ModelData>(null);
1369 cyprien 1479
 
1480
		personneExistanteCombo = new ChampComboBoxRechercheTempsReelPaginable(proxyPersonnes, modelTypePersonnes, displayNamePersonnes);
243 jp_milcent 1481
 
1482
		// TODO : dans GXT 2.0 plus besoin de l'adaptateur, on peut ajouter la combobox directement sur la toolbar
491 gduche 1483
			//> CHECK
1484
		toolBar.add(personneExistanteCombo);
243 jp_milcent 1485
 
1369 cyprien 1486
		Button ajouterPersonneExistanteBtn = new Button("Ajouter à la grille");
491 gduche 1487
		ajouterPersonneExistanteBtn.addSelectionListener(new SelectionListener<ButtonEvent>() {
243 jp_milcent 1488
			@Override
1369 cyprien 1489
			public void componentSelected(ButtonEvent ce) {
243 jp_milcent 1490
 
1369 cyprien 1491
				Personne personneExistante = new Personne(personneExistanteCombo.getValeur());
1492
 
295 jp_milcent 1493
				if (personneExistante != null) {
1369 cyprien 1494
					StructureAPersonne membreDuPersonnel = new StructureAPersonne(personneExistante, "", StructureAPersonne.ROLE_EQUIPE, StructureAPersonne.ETAT_AJOUTE);
295 jp_milcent 1495
					ajouterMembreAGrillePersonnel(membreDuPersonnel);
1496
				}
243 jp_milcent 1497
			}
1498
		});
1499
		toolBar.add(ajouterPersonneExistanteBtn);
1500
 
102 jpm 1501
		cp.setTopComponent(toolBar);
1502
 
1503
		ColumnModel cm = new ColumnModel(configs);
1504
 
559 jp_milcent 1505
		grillePersonnel = new EditorGrid<StructureAPersonne>(personnelGrilleMagazin, cm);
1506
		grillePersonnel.setHeight("100%");
103 jpm 1507
		grillePersonnel.setBorders(true);
1508
		grillePersonnel.setSelectionModel(sm);
1509
		grillePersonnel.addPlugin(checkColumn);
231 jp_milcent 1510
		grillePersonnel.addPlugin(r);
1511
		grillePersonnel.getView().setForceFit(true);
211 jp_milcent 1512
  		grillePersonnel.setAutoExpandColumn("specialite");
1513
  		grillePersonnel.setStripeRows(true);
1514
  		grillePersonnel.setTrackMouseOver(true);
1210 cyprien 1515
 
1516
 
1239 cyprien 1517
		personnelGrilleMagazin.addListener(Store.Update, new Listener<StoreEvent<StructureAPersonne>>() {
1518
			public void handleEvent(StoreEvent<StructureAPersonne> ce) {
1262 cyprien 1519
				StructureAPersonne structureAPersonne = ce.getModel();
1520
				String etat = structureAPersonne.get("etat");
1468 jpm 1521
				if ((etat==null || !etat.equals(aDonnee.ETAT_AJOUTE)) && structureAPersonne!=null && !UtilString.isEmpty(structureAPersonne.getId()))	{
1262 cyprien 1522
					ce.getModel().set("etat", aDonnee.ETAT_MODIFIE);
1523
				}
1239 cyprien 1524
			}
1525
		});
1526
 
1468 jpm 1527
 
295 jp_milcent 1528
  		cp.add(grillePersonnel);
231 jp_milcent 1529
		personnelOnglet.add(cp);
306 jp_milcent 1530
 
231 jp_milcent 1531
		return personnelOnglet;
1532
	}
102 jpm 1533
 
1468 jpm 1534
 
110 jpm 1535
	private TabItem creerOngletIdentification() {
1536
		//+-----------------------------------------------------------------------------------------------------------+
1537
		// Onlget formulaire IDENTIFICATION
634 jp_milcent 1538
		identificationOnglet = creerOnglet("Identification", "identification");
211 jp_milcent 1539
		identificationOnglet.addListener(Events.Select, new Listener<ComponentEvent>() {
1540
			public void handleEvent(ComponentEvent be) {
1541
				peuplerStructureIdentification();
279 jp_milcent 1542
				identificationOnglet.layout();
211 jp_milcent 1543
			}
1544
		});
1545
 
110 jpm 1546
		//+-----------------------------------------------------------------------------------------------------------+
172 jp_milcent 1547
		// Champs cachés
1548
		idStructureChp = new HiddenField<String>();
1549
 
1550
		//+-----------------------------------------------------------------------------------------------------------+
110 jpm 1551
		// Fieldset IDENTITÉ
1552
		FieldSet fieldSetIdentite = new FieldSet();
1553
		fieldSetIdentite.setHeading("Identité");
1554
		fieldSetIdentite.setCollapsible(true);
569 jp_milcent 1555
		fieldSetIdentite.setLayout(creerFormLayout(120, LabelAlign.LEFT));
110 jpm 1556
 
119 jpm 1557
		nomStructureChp = new TextField<String>();
277 jp_milcent 1558
		nomStructureChp.setTabIndex(tabIndex++);
110 jpm 1559
		nomStructureChp.setFieldLabel("Nom de la structure");
1560
		nomStructureChp.setAllowBlank(false);
1561
		nomStructureChp.getMessages().setBlankText("Ce champ est obligatoire.");
981 jpm 1562
		nomStructureChp.addStyleName(ComposantClass.OBLIGATOIRE);
980 jpm 1563
		nomStructureChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
110 jpm 1564
		fieldSetIdentite.add(nomStructureChp, new FormData(450, 0));
1565
 
1329 cyprien 1566
		ModelType modelTypeProjets = new ModelType();
1567
		modelTypeProjets.setRoot("projets");
1568
		modelTypeProjets.setTotalName("nbElements");
1569
		modelTypeProjets.addField("cpr_nom");
1570
		modelTypeProjets.addField("cpr_id_projet");
634 jp_milcent 1571
 
1329 cyprien 1572
		String displayNameProjets = "cpr_nom";
1468 jpm 1573
		ProxyProjets<ModelData> proxyProjets = new ProxyProjets<ModelData>(null);
1329 cyprien 1574
 
1575
		projetsCombo = new ChampComboBoxRechercheTempsReelPaginable(proxyProjets, modelTypeProjets, displayNameProjets);
1576
		projetsCombo.getCombo().setTabIndex(tabIndex++);
1577
		projetsCombo.getCombo().setFieldLabel(i18nC.projetChamp());
1578
		projetsCombo.getCombo().setForceSelection(true);
1579
		projetsCombo.getCombo().addStyleName(ComposantClass.OBLIGATOIRE);
1580
		projetsCombo.getCombo().addListener(Events.Valid, Formulaire.creerEcouteurChampObligatoire());
1369 cyprien 1581
		projetsCombo.setWidth(120, 520);
1582
		fieldSetIdentite.add(projetsCombo, new FormData(520, 0));
277 jp_milcent 1583
 
110 jpm 1584
		// Création du sous-formulaire : Acronyme
1585
		LayoutContainer ligne = new LayoutContainer();
1586
		ligne.setLayout(new ColumnLayout());
564 jp_milcent 1587
		ligne.setSize(600, -1);
1588
 
110 jpm 1589
		LayoutContainer gauche = new LayoutContainer();
569 jp_milcent 1590
		gauche.setLayout(creerFormLayout(120, LabelAlign.LEFT));
110 jpm 1591
		LayoutContainer droite = new LayoutContainer();
569 jp_milcent 1592
		droite.setLayout(creerFormLayout(10, LabelAlign.LEFT));
110 jpm 1593
 
1594
		ListStore<InterneValeur> acronymes = new ListStore<InterneValeur>();
1595
		acronymes.add(InterneValeurListe.getTypeAcronyme());
1596
 
133 jpm 1597
		comboAcronyme = new ComboBox<InterneValeur>();
277 jp_milcent 1598
		comboAcronyme.setTabIndex(tabIndex++);
110 jpm 1599
		comboAcronyme.setEmptyText("Sélectioner un type d'acronyme...");
564 jp_milcent 1600
		comboAcronyme.setFieldLabel("Type d'acronyme");
110 jpm 1601
		comboAcronyme.setDisplayField("nom");
1602
		comboAcronyme.setStore(acronymes);
1603
		comboAcronyme.setEditable(false);
1604
		comboAcronyme.setTypeAhead(true);
1605
		comboAcronyme.setTriggerAction(TriggerAction.ALL);
1606
		comboAcronyme.addSelectionChangedListener(new SelectionChangedListener<InterneValeur>() {
1607
			@Override
1608
			public void selectionChanged(SelectionChangedEvent<InterneValeur> se) {
1609
				String acronymeAbr = se.getSelectedItem().getAbr();
1610
				if (acronymeAbr.equals("IH")) {
1611
					mnhnChp.hide();
1612
					ihChp.show();
1613
				} else if (acronymeAbr.equals("MNHN")) {
1614
					ihChp.hide();
1615
					mnhnChp.show();
1616
				} else if (acronymeAbr.equals("")) {
1617
					ihChp.hide();
1618
					mnhnChp.hide();
1619
					comboAcronyme.clearSelections();
1620
				}
1621
			}
1622
        });
564 jp_milcent 1623
		gauche.add(comboAcronyme, new FormData("95%"));
110 jpm 1624
 
1625
		ihChp = new TextField<String>();
277 jp_milcent 1626
		ihChp.setTabIndex(tabIndex++);
110 jpm 1627
		ihChp.setLabelSeparator("");
1628
		ihChp.setToolTip("Index Herbariorum : herbier de plus de 5000 échantillons");
1629
		ihChp.hide();
564 jp_milcent 1630
		droite.add(ihChp, new FormData("95%"));
110 jpm 1631
 
133 jpm 1632
		mnhnChp = new TextField<String>();
277 jp_milcent 1633
		mnhnChp.setTabIndex(tabIndex++);
110 jpm 1634
		mnhnChp.setLabelSeparator("");
1635
		mnhnChp.setToolTip("Acronyme MNHN : herbier de moins de 5000 échantillons");
1636
		mnhnChp.hide();
564 jp_milcent 1637
		droite.add(mnhnChp, new FormData("95%"));
110 jpm 1638
 
564 jp_milcent 1639
		ligne.add(gauche, new ColumnData(.5));
1640
		ligne.add(droite, new ColumnData(.5));
110 jpm 1641
		fieldSetIdentite.add(ligne);
1642
 
1643
		// Création du sous-formulaire : Type de Structure
1644
		LayoutContainer ligneTs = new LayoutContainer();
1645
		ligneTs.setLayout(new ColumnLayout());
564 jp_milcent 1646
		ligneTs.setSize(600, -1);
110 jpm 1647
 
1648
		LayoutContainer gaucheTs = new LayoutContainer();
569 jp_milcent 1649
		gaucheTs.setLayout(creerFormLayout(120, LabelAlign.LEFT));
110 jpm 1650
 
1651
		LayoutContainer droiteTs = new LayoutContainer();
569 jp_milcent 1652
		droiteTs.setLayout(creerFormLayout(10, LabelAlign.LEFT));
110 jpm 1653
 
1654
		ListStore<InterneValeur> typesStructure = new ListStore<InterneValeur>();
1655
		typesStructure.add(InterneValeurListe.getTypeStructure());
1656
 
133 jpm 1657
		comboTypeStructure = new ComboBox<InterneValeur>();
277 jp_milcent 1658
		comboTypeStructure.setTabIndex(tabIndex++);
110 jpm 1659
		comboTypeStructure.setEmptyText("Sélectioner un type de structure...");
1660
		comboTypeStructure.setFieldLabel("Statut des structures");
1661
		comboTypeStructure.setDisplayField("nom");
1662
		comboTypeStructure.setStore(typesStructure);
1663
		comboTypeStructure.setEditable(false);
1664
		comboTypeStructure.setTypeAhead(true);
1665
		comboTypeStructure.setTriggerAction(TriggerAction.ALL);
1666
		comboTypeStructure.addSelectionChangedListener(new SelectionChangedListener<InterneValeur>() {
1667
			@Override
1668
			public void selectionChanged(SelectionChangedEvent<InterneValeur> se) {
1669
				String typeAbr = se.getSelectedItem().getAbr();
1670
				if (typeAbr.equals("stpu")) {
1671
					comboLstpr.hide();
1672
					comboLstpu.show();
1673
				} else if (typeAbr.equals("stpr")) {
1674
					comboLstpu.hide();
1675
					comboLstpr.show();
1676
				} else if (typeAbr.equals("")) {
1677
					comboLstpr.hide();
1678
					comboLstpu.hide();
1679
					comboTypeStructure.clearSelections();
1680
				}
1681
			}
1682
        });
564 jp_milcent 1683
		gaucheTs.add(comboTypeStructure, new FormData("95%"));
110 jpm 1684
 
1685
		magazinLstpu = new ListStore<Valeur>();
133 jpm 1686
		comboLstpu = new ComboBox<Valeur>();
277 jp_milcent 1687
		comboLstpu.setTabIndex(tabIndex++);
110 jpm 1688
		//comboLstpu.setFieldLabel("Statut des structures publiques");
1689
		comboLstpu.setLabelSeparator("");
1690
		comboLstpu.setDisplayField("nom");
1691
		comboLstpu.setEditable(false);
1692
		comboLstpu.setTriggerAction(TriggerAction.ALL);
1693
		comboLstpu.setStore(magazinLstpu);
1694
		comboLstpu.hide();
564 jp_milcent 1695
		droiteTs.add(comboLstpu, new FormData("95%"));
1322 gduche 1696
		mediateur.obtenirListeValeurEtRafraichir(this, "stpu", sequenceur);
110 jpm 1697
 
1698
		magazinLstpr = new ListStore<Valeur>();
133 jpm 1699
		comboLstpr = new ComboBox<Valeur>();
277 jp_milcent 1700
		comboLstpr.setTabIndex(tabIndex++);
110 jpm 1701
		//comboLstpr.setFieldLabel("Statut des structures privées");
1702
		comboLstpr.setLabelSeparator("");
1703
		comboLstpr.setDisplayField("nom");
1704
		comboLstpr.setEditable(false);
1705
		comboLstpr.setTriggerAction(TriggerAction.ALL);
1706
		comboLstpr.setStore(magazinLstpr);
1707
		comboLstpr.hide();
564 jp_milcent 1708
		droiteTs.add(comboLstpr, new FormData("95%"));
1322 gduche 1709
		mediateur.obtenirListeValeurEtRafraichir(this, "stpr", sequenceur);
110 jpm 1710
 
1711
		ligneTs.add(gaucheTs, new ColumnData(0.5));
1712
		ligneTs.add(droiteTs, new ColumnData(0.5));
1713
		fieldSetIdentite.add(ligneTs);
1714
 
1284 gduche 1715
		dateFondationChp = new TextField();
277 jp_milcent 1716
		dateFondationChp.setTabIndex(tabIndex++);
110 jpm 1717
		dateFondationChp.setFieldLabel("Date de fondation");
1718
		fieldSetIdentite.add(dateFondationChp);
1719
 
564 jp_milcent 1720
		nbreTotalPersonneStructureChp = new NumberField();
231 jp_milcent 1721
		nbreTotalPersonneStructureChp.setFieldLabel("Nombre de personne travaillant dans l'institution");
1722
		nbreTotalPersonneStructureChp.setFormat(NumberFormat.getFormat("#"));
686 jp_milcent 1723
		nbreTotalPersonneStructureChp.setToolTip(i18nC.champNumerique());
231 jp_milcent 1724
		fieldSetIdentite.add(nbreTotalPersonneStructureChp);
1725
 
279 jp_milcent 1726
		identificationOnglet.add(fieldSetIdentite);
231 jp_milcent 1727
 
110 jpm 1728
		//+-----------------------------------------------------------------------------------------------------------+
1173 jpm 1729
		// Fieldset DESCRIPTION
1730
		FieldSet fieldSetDescription = new FieldSet();
1731
		fieldSetDescription.setHeading("Description");
1732
		fieldSetDescription.setCollapsible(true);
1733
		fieldSetDescription.setLayout(creerFormLayout(120, LabelAlign.LEFT));
1734
 
1735
		descriptionChp = new TextArea();
1736
		descriptionChp.setTabIndex(tabIndex++);
1737
		descriptionChp.setFieldLabel("Description");
1738
		fieldSetDescription.add(descriptionChp, new FormData(550, 0));
1739
 
1740
		conditionAccesChp = new TextArea();
1741
		conditionAccesChp.setTabIndex(tabIndex++);
1742
		conditionAccesChp.setFieldLabel("Conditions d'accès");
1743
		fieldSetDescription.add(conditionAccesChp, new FormData(550, 0));
1744
 
1745
		conditionUsageChp = new TextArea();
1746
		conditionUsageChp.setTabIndex(tabIndex++);
1747
		conditionUsageChp.setFieldLabel("Conditions d'usage");
1748
		fieldSetDescription.add(conditionUsageChp, new FormData(550, 0));
1749
 
1750
		identificationOnglet.add(fieldSetDescription);
1751
 
1752
		//+-----------------------------------------------------------------------------------------------------------+
110 jpm 1753
		// Fieldset ADRESSE
1754
		LayoutContainer principalFdAdresse = new LayoutContainer();
1755
		principalFdAdresse.setLayout(new ColumnLayout());
1369 cyprien 1756
		principalFdAdresse.setSize(1050, -1);
110 jpm 1757
 
1758
		LayoutContainer gaucheFdAdresse = new LayoutContainer();
569 jp_milcent 1759
		gaucheFdAdresse.setLayout(creerFormLayout(null, LabelAlign.LEFT));
110 jpm 1760
 
1761
		LayoutContainer droiteFdAdresse = new LayoutContainer();
1329 cyprien 1762
		droiteFdAdresse.setLayout(creerFormLayout(100, LabelAlign.LEFT));
1369 cyprien 1763
		droiteFdAdresse.setWidth(700);
110 jpm 1764
 
1765
		FieldSet fieldSetAdresse = new FieldSet();
1766
		fieldSetAdresse.setHeading("Adresse");
1767
		fieldSetAdresse.setCollapsible(true);
1768
 
569 jp_milcent 1769
		fieldSetAdresse.setLayout(creerFormLayout(null, LabelAlign.LEFT));
110 jpm 1770
 
164 jp_milcent 1771
		adrChp = new TextArea();
277 jp_milcent 1772
		adrChp.setTabIndex(tabIndex++);
1173 jpm 1773
		adrChp.setFieldLabel("Adresse (Nom du batiment, rue...)");
110 jpm 1774
		fieldSetAdresse.add(adrChp, new FormData(550, 0));
1775
 
1173 jpm 1776
		adrComplementChp = new TextArea();
1777
		adrComplementChp.setTabIndex(tabIndex++);
1778
		adrComplementChp.setFieldLabel("Complément d'adresse (BP, étage...)");
1779
		fieldSetAdresse.add(adrComplementChp, new FormData(550, 0));
1780
 
133 jpm 1781
		cpChp = new TextField<String>();
277 jp_milcent 1782
		cpChp.setTabIndex(tabIndex++);
110 jpm 1783
		cpChp.setFieldLabel("Code postal");
564 jp_milcent 1784
		gaucheFdAdresse.add(cpChp, new FormData("95%"));
110 jpm 1785
 
133 jpm 1786
		villeChp = new TextField<String>();
277 jp_milcent 1787
		villeChp.setTabIndex(tabIndex++);
110 jpm 1788
		villeChp.setFieldLabel("Ville");
1035 gduche 1789
		gaucheFdAdresse.add(villeChp, new FormData("95%"));
110 jpm 1790
 
1329 cyprien 1791
		ModelType modelTypesPays = new ModelType();
1792
		modelTypesPays.setRoot("valeurs");
1793
		modelTypesPays.setTotalName("nbElements");
1794
		modelTypesPays.addField("cmlv_nom");
1795
		modelTypesPays.addField("cmlv_id_valeur");
1796
		modelTypesPays.addField("cmlv_abreviation");
1797
		modelTypesPays.addField("cmlv_description");
1035 gduche 1798
 
1329 cyprien 1799
		String displayNamePays = "cmlv_nom";
1800
		String nomListeTypes = "pays";
1468 jpm 1801
		ProxyValeur<ModelData> proxyPays = new ProxyValeur<ModelData>(nomListeTypes, null);
1329 cyprien 1802
 
1803
		comboPays = new ChampComboBoxRechercheTempsReelPaginable(proxyPays, modelTypesPays, displayNamePays);
1369 cyprien 1804
		comboPays.setWidth(100,500);
1329 cyprien 1805
		comboPays.getCombo().setTabIndex(tabIndex++);
1806
		comboPays.getCombo().setFieldLabel("Pays");
1807
		comboPays.getCombo().setForceSelection(true);
1808
		comboPays.getCombo().setTemplate(getTemplatePays());
1809
 
1810
		SelectionChangedListener<ModelData> selectionChange = new SelectionChangedListener<ModelData>() {
1035 gduche 1811
			public void selectionChanged(SelectionChangedEvent se) {
1812
				// Rafraichir avec le pays sélectionné
1329 cyprien 1813
				comboRegion.clear();
1814
				obtenirListeRegionParPays((new Valeur(se.getSelectedItem())).getAbreviation().toString());
1035 gduche 1815
			}
1816
		};
1329 cyprien 1817
		comboPays.getCombo().addSelectionChangedListener(selectionChange);
1035 gduche 1818
 
564 jp_milcent 1819
		droiteFdAdresse.add(comboPays, new FormData("95%"));
110 jpm 1820
 
1035 gduche 1821
		magazinRegion = new ListStore<Valeur>();
1822
		comboRegion = new ComboBox<Valeur>();
1823
		comboRegion.setTabIndex(tabIndex++);
1824
		comboRegion.setFieldLabel("Région");
1825
		comboRegion.setEmptyText("Sélectionner une région...");
1826
		comboRegion.setDisplayField("nom");
1827
		comboRegion.setTypeAhead(true);
1828
		comboRegion.setTriggerAction(TriggerAction.ALL);
1829
		comboRegion.setStore(magazinRegion);
1830
		droiteFdAdresse.add(comboRegion, new FormData("95%"));
1369 cyprien 1831
 
1035 gduche 1832
 
1173 jpm 1833
		latitudeChp = new TextField<String>();
1834
		latitudeChp.setRegex(Pattern.latitude);
1835
		latitudeChp.setToolTip("Format : nombre décimal positif ou négatif de 0 à 90.");
1836
		latitudeChp.getMessages().setRegexText("La valeur saisie n'est pas une latitude valide. Exemples de latitude : -45,302010 ou 45.252423 ou 25,16.");
1837
		latitudeChp.setTabIndex(tabIndex++);
1838
		latitudeChp.setFieldLabel("Latitude (Nord)");
1839
		gaucheFdAdresse.add(latitudeChp, new FormData("95%"));
1035 gduche 1840
 
1173 jpm 1841
		longitudeChp = new TextField<String>();
1842
		longitudeChp.setRegex(Pattern.longitude);
1843
		longitudeChp.setToolTip("Format : nombre décimal positif ou négatif de 0 à 180.");
1844
		longitudeChp.getMessages().setRegexText("La valeur saisie n'est pas une longitude valide. Exemples de longitude : -150,302010 ou 150.252423 ou 25,16.");
1845
		longitudeChp.setTabIndex(tabIndex++);
1846
		longitudeChp.setFieldLabel("Longitude (Est)");
1847
		droiteFdAdresse.add(longitudeChp, new FormData("95%"));
1848
 
110 jpm 1849
		principalFdAdresse.add(gaucheFdAdresse, new ColumnData(.5));
1850
		principalFdAdresse.add(droiteFdAdresse, new ColumnData(.5));
1851
		fieldSetAdresse.add(principalFdAdresse);
279 jp_milcent 1852
 
110 jpm 1853
		identificationOnglet.add(fieldSetAdresse);
279 jp_milcent 1854
 
110 jpm 1855
		//+-----------------------------------------------------------------------------------------------------------+
1856
		// Fieldset TÉLÉPHONE et EMAIL
1857
		LayoutContainer principalFdTelMail = new LayoutContainer();
1858
		principalFdTelMail.setLayout(new ColumnLayout());
569 jp_milcent 1859
		principalFdTelMail.setSize(700, -1);
110 jpm 1860
 
1861
		LayoutContainer gaucheFdTelMail = new LayoutContainer();
569 jp_milcent 1862
		gaucheFdTelMail.setLayout(creerFormLayout(60, LabelAlign.LEFT));
110 jpm 1863
 
1864
		LayoutContainer droiteFdTelMail = new LayoutContainer();
569 jp_milcent 1865
		droiteFdTelMail.setLayout(creerFormLayout(60, LabelAlign.LEFT));
110 jpm 1866
 
1867
		FieldSet fieldSetTelMail = new FieldSet();
1868
		fieldSetTelMail.setHeading("Communication");
1869
		fieldSetTelMail.setCollapsible(true);
1870
 
569 jp_milcent 1871
		fieldSetTelMail.setLayout(creerFormLayout(null, LabelAlign.LEFT));
110 jpm 1872
 
133 jpm 1873
		telChp = new TextField<String>();
277 jp_milcent 1874
		telChp.setTabIndex(tabIndex++);
602 jp_milcent 1875
		telChp.setFieldLabel("Téléphone fixe");
564 jp_milcent 1876
		gaucheFdTelMail.add(telChp, new FormData("95%"));
110 jpm 1877
 
133 jpm 1878
		faxChp = new TextField<String>();
277 jp_milcent 1879
		faxChp.setTabIndex(tabIndex++);
110 jpm 1880
		faxChp.setFieldLabel("Fax");
564 jp_milcent 1881
		droiteFdTelMail.add(faxChp, new FormData("95%"));
110 jpm 1882
 
133 jpm 1883
		emailChp = new TextField<String>();
277 jp_milcent 1884
		emailChp.setTabIndex(tabIndex++);
110 jpm 1885
		emailChp.setFieldLabel("Courriel");
1886
		emailChp.setToolTip("Saisir le courriel de l'organisation, pas de courriel individuel. Ex. : accueil@organisation.org");
564 jp_milcent 1887
		gaucheFdTelMail.add(emailChp, new FormData("95%"));
110 jpm 1888
 
133 jpm 1889
		urlChp = new TextField<String>();
277 jp_milcent 1890
		urlChp.setTabIndex(tabIndex++);
110 jpm 1891
		urlChp.setFieldLabel("Site web");
564 jp_milcent 1892
		droiteFdTelMail.add(urlChp, new FormData("95%"));
110 jpm 1893
 
1894
		principalFdTelMail.add(gaucheFdTelMail, new ColumnData(.5));
1895
		principalFdTelMail.add(droiteFdTelMail, new ColumnData(.5));
1896
		fieldSetTelMail.add(principalFdTelMail);
279 jp_milcent 1897
 
110 jpm 1898
		identificationOnglet.add(fieldSetTelMail);
1899
 
1900
		return identificationOnglet;
1901
	}
1902
 
1035 gduche 1903
	public void obtenirListeRegionParPays(String strPays)	{
1904
		mediateur.obtenirListeRegionsEtRafraichir(this, "region", strPays);
1905
	}
1906
 
1907
	private void mettreAJourRegion()	{
1908
		//Met à jour la combo box en sélectionnant la valeur enregistrée pour la personne
1909
		if (identification.get("ce_truk_region") != null && comboRegion.getStore().getCount() > 0)	{
1910
			Valeur valeurRegion = comboRegion.getStore().findModel("id_valeur", identification.get("ce_truk_region"));
1911
			if (valeurRegion!=null)	{
1912
				comboRegion.setValue(valeurRegion);
1913
			} else if (identification.get("ce_truk_region").toString().startsWith("AUTRE##")) {
1914
				comboRegion.setRawValue(identification.get("ce_truk_region").toString().replaceFirst("^AUTRE##", ""));
1915
			}
1916
		}
1917
	}
1918
 
172 jp_milcent 1919
	private native String getTemplatePays() /*-{
1920
		return  [
1921
		'<tpl for=".">',
1329 cyprien 1922
		'<div class="x-combo-list-item">{cmlv_nom} ({cmlv_abreviation})</div>',
172 jp_milcent 1923
		'</tpl>'
1924
		].join("");
1925
		}-*/;
1926
 
192 jp_milcent 1927
	private void peuplerCasesACocher(String donnees, CheckBoxGroup groupeCac, TextField<String> champAutre) {
1928
		String[] valeurs = donnees.split(";;");
1929
		for (int i = 0; i < valeurs.length; i++) {
1930
			if (valeurs[i].startsWith("AUTRE##")) {
1931
				champAutre.setValue(valeurs[i].replaceFirst("^AUTRE##", ""));
1932
			} else {
491 gduche 1933
				//TODO : check : List<CheckBox> cases = groupeCac.getAll();
1934
				List<Field<?>> cases = groupeCac.getAll();
192 jp_milcent 1935
				for (int j = 0; j < cases.size(); j++) {
1936
					if (cases.get(j).getId().equals("val-"+valeurs[i])) {
491 gduche 1937
						((CheckBox) cases.get(j)).setValue(true);
192 jp_milcent 1938
					}
1939
				}
1940
			}
1941
		}
1942
	}
1943
 
1944
	private void peuplerBoutonsRadio(String valeur, RadioGroup groupeBr) {
491 gduche 1945
		//List<Radio> boutons = groupeBr.getAll();
1946
		List<Field<?>> boutons = groupeBr.getAll();
192 jp_milcent 1947
		String id = valeur+"_"+groupeBr.getName().replace("_grp", "");
1948
		for (int i = 0; i < boutons.size(); i++) {
1949
			if (boutons.get(i).getId().equals(id)) {
491 gduche 1950
				((Radio) boutons.get(i)).setValue(true);
192 jp_milcent 1951
			}
1952
		}
1953
	}
1954
 
1955
	private String creerChaineDenormalisee(List<CheckBox> liste) {
1956
		String identifiants = "";
306 jp_milcent 1957
		if (liste != null) {
1958
			int taille = liste.size();
1959
			for (int i = 0; i < taille; i++) {
1960
				CheckBox cac = liste.get(i);
1961
				if (cac.isEnabled()) {
1962
					identifiants = identifiants.concat(";;"+cac.getData("id"));
1963
				}
192 jp_milcent 1964
			}
306 jp_milcent 1965
			identifiants.replaceFirst("^;;", "");
192 jp_milcent 1966
		}
306 jp_milcent 1967
		return identifiants;
192 jp_milcent 1968
	}
1969
 
934 jpm 1970
	public void afficherChampSupplementaire(Radio radioBtn) {
119 jpm 1971
		//GWT.log("Nom btn : "+radioBtn.getName()+" - Nom group : "+radioBtn.getGroup().getName(), null);
115 jpm 1972
		// Valeur du bouton radio déclenchant l'affichage des composants cachés
1973
		String valeurPourAfficher = "oui";
111 jpm 1974
 
115 jpm 1975
		// Construction de la liste des composants à afficher/cacher
1976
		String radioGroupeNom = radioBtn.getGroup().getName();
1977
		ArrayList<Object> composants = new ArrayList<Object>();
1978
		if (radioGroupeNom.equals("action_mark_grp")) {
1979
			composants.add(actionTrukCp);
1980
		} else if (radioGroupeNom.equals("future_action_mark_grp")) {
1981
			composants.add(futureActionChp);
1982
		} else if (radioGroupeNom.equals("sans_motif_acces_mark_grp")) {
1983
			composants.add(sansMotifAccesChp);
1984
		} else if (radioGroupeNom.equals("avec_motif_acces_mark_grp")) {
1985
			composants.add(avecMotifAccesChp);
1986
		} else if (radioGroupeNom.equals("recherche_mark_grp")) {
1987
			composants.add(provenanceRechercheTrukCp);
119 jpm 1988
			composants.add(typeRechercheTrukCp);
115 jpm 1989
		} else if (radioGroupeNom.equals("formation_mark_grp")) {
1990
			composants.add(formationChp);
1991
		} else if (radioGroupeNom.equals("collection_commune_mark_grp")) {
1992
			composants.add(collectionAutreTrukCp);
1993
		} else if (radioGroupeNom.equals("restauration_mark_grp")) {
1994
			composants.add(opRestauTrukCp);
1995
		} else if (radioGroupeNom.equals("traitement_mark_grp")) {
1996
			composants.add(traitementTrukCp);
1997
		} else if (radioGroupeNom.equals("echantillon_acquisition_mark_grp")) {
1998
			composants.add(traitementAcquisitionMarkRGrpChp);
1999
		} else if (radioGroupeNom.equals("traitement_acquisition_mark_grp")) {
2000
			composants.add(traitementAcquisitionMarkLabel);
2001
			composants.add(poisonTraitementTrukCp);
2002
			composants.add(insecteTraitementTrukCp);
2003
		} else if (radioGroupeNom.equals("materiel_conservation_ce_grp")) {
2004
			composants.add(autreMaterielTrukCp);
2005
			valeurPourAfficher = "non";
2006
		}
111 jpm 2007
 
115 jpm 2008
		// Nous affichons/cachons les composant de la liste
211 jp_milcent 2009
		final int nbreComposants = composants.size();
115 jpm 2010
		//GWT.log("Id : "+radioBtn.getId()+" - Class : "+radioBtn.getClass().toString()+"- Taille : "+tailleMax, null);
119 jpm 2011
		//Window.alert("Radio grp nom : "+radioGroupeNom+" - Id btn : "+radioBtn.getId()+" - Class : "+radioBtn.getClass().toString()+"- Taille : "+tailleMax);
211 jp_milcent 2012
		for (int i = 0; i < nbreComposants; i++) {
111 jpm 2013
			// En fonction du type de bouton cliquer, on affiche ou cache les champs
115 jpm 2014
			String type = radioBtn.getBoxLabel().toLowerCase();
119 jpm 2015
			//GWT.log(type, null);
115 jpm 2016
			if (radioBtn.getValue() == true) {
2017
				if (type.equals(valeurPourAfficher)) {
2018
					((Component) composants.get(i)).show();
2019
				} else {
2020
					((Component) composants.get(i)).hide();
2021
				}
111 jpm 2022
			}
2023
			// Si on a à faire à un ContentPanel, on l'actualise pour déclencher l'affichage
115 jpm 2024
			if (composants.get(i) instanceof ContentPanel) {
2025
				((ContentPanel) composants.get(i)).layout();
111 jpm 2026
			}
2027
		}
2028
 
2029
	}
2030
 
639 jp_milcent 2031
	public void rafraichir(Object nouvellesDonnees) {
2032
		try {
2033
			if (nouvellesDonnees instanceof Information) {
2034
				Information info = (Information) nouvellesDonnees;
2035
				rafraichirInformation(info);
2036
			} else if (nouvellesDonnees instanceof ValeurListe) {
2037
				ValeurListe listeValeurs = (ValeurListe) nouvellesDonnees;
2038
				rafraichirValeurListe(listeValeurs);
2039
			} else {
2040
				GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
295 jp_milcent 2041
			}
639 jp_milcent 2042
		} catch (Exception e) {
875 jpm 2043
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), e);
109 jpm 2044
		}
2045
 
1239 cyprien 2046
		controlerFermeture();
109 jpm 2047
	}
2048
 
1513 jpm 2049
	public void rafraichirInformation(Information info) {
639 jp_milcent 2050
		if (info.getMessages() != null && !info.getMessages().toString().equals("[]")) {
2051
			GWT.log("MESSAGES:\n"+info.getMessages().toString(), null);
2052
		}
2053
 
2054
		if (info.getType().equals("modif_structure")) {
1210 cyprien 2055
			InfoLogger.display("Modification d'une institution", info.toString());
639 jp_milcent 2056
		} else if (info.getType().equals("ajout_structure")) {
770 jpm 2057
			if (info.getDonnee(0) != null && info.getDonnee(0) instanceof String) {
2058
				String structureId = (String) info.getDonnee(0);
1210 cyprien 2059
				InfoLogger.display("Ajout d'une Institution", "L'intitution '"+structureId+"' a bien été ajoutée");
770 jpm 2060
 
639 jp_milcent 2061
				// Suite à la récupération de l'id de l'institution nouvellement ajoutée nous ajoutons le personnel
770 jpm 2062
				mediateur.ajouterStructureAPersonne(this, structureId, personnelAjoute);
639 jp_milcent 2063
			} else {
1210 cyprien 2064
				InfoLogger.display("Ajout d'une Institution", info.toString());
639 jp_milcent 2065
			}
2066
		} else if (info.getType().equals("modif_structure_a_personne")) {
1210 cyprien 2067
			InfoLogger.display("Modification du Personnel", info.toString());
639 jp_milcent 2068
			testerLancementRafraichirPersonnel();
2069
		} else if (info.getType().equals("suppression_structure_a_personne")) {
1210 cyprien 2070
			InfoLogger.display("Suppression du Personnel", info.toString());
639 jp_milcent 2071
			testerLancementRafraichirPersonnel();
2072
		} else if (info.getType().equals("ajout_structure_a_personne")) {
1210 cyprien 2073
			InfoLogger.display("Ajout du Personnel", info.toString());
639 jp_milcent 2074
			testerLancementRafraichirPersonnel();
2075
		} else if (info.getType().equals("selection_structure")) {
1210 cyprien 2076
			InfoLogger.display("Modification d'une institution", info.toString());
639 jp_milcent 2077
			String titre = i18nC.titreModifFormStructurePanneau();
2078
			if (info.getDonnee(0) != null) {
1513 jpm 2079
				try {
2080
					identification = (Structure) info.getDonnee(0);
2081
					if (onglets.getSelectedItem().equals(identificationOnglet)) {
2082
						peuplerStructureIdentification();
2083
					}
2084
				} catch(Exception e) {
2085
					GWT.log("Problème de cast. "+info.getDonnee(0)+" ne peut être casté en Structure", e);
188 jp_milcent 2086
				}
1513 jpm 2087
 
639 jp_milcent 2088
				// Composition du titre
2089
				titre += " - ID : "+identification.getId();
2090
			}
2091
			if (info.getDonnee(1) != null) {
2092
				conservation = (StructureConservation) info.getDonnee(1);
2093
				if (onglets.getSelectedItem().equals(conservationOnglet)) {
2094
					peuplerStructureConservation();
2095
				}
2096
			}
2097
			if (info.getDonnee(2) != null) {
2098
				valorisation = (StructureValorisation) info.getDonnee(2);
2099
				if (valorisation != null) {
2100
					if (onglets.getSelectedItem().equals(valorisationOnglet)) {
2101
						peuplerStructureValorisation();
231 jp_milcent 2102
					}
639 jp_milcent 2103
				}
2104
			}
2105
		} else if (info.getType().equals("liste_structure_a_personne")) {
2106
			if (info.getDonnee(0) != null) {
2107
				personnel = (StructureAPersonneListe) info.getDonnee(0);
1210 cyprien 2108
 
639 jp_milcent 2109
				peuplerStructurePersonnel();
1262 cyprien 2110
 
639 jp_milcent 2111
				personnelOnglet.layout();
1210 cyprien 2112
				InfoLogger.display("Chargement du Personnel", "ok");
609 jp_milcent 2113
 
639 jp_milcent 2114
				// Remise à zéro des modification dans la liste du personnel
2115
				personnelModifie = new StructureAPersonneListe();
2116
				personnelAjoute = new StructureAPersonneListe();
2117
				personnelSupprime = new StructureAPersonneListe();
2118
			}
2119
		}
2120
	}
2121
 
2122
	public void rafraichirValeurListe(ValeurListe listeValeurs) {
2123
		List<Valeur> liste = listeValeurs.toList();
407 jp_milcent 2124
 
639 jp_milcent 2125
		// Test pour savoir si la liste contient des éléments
2126
		if (liste.size() > 0) {
2127
			if (listeValeurs.getId().equals(config.getListeId("stpr"))) {
2128
				magazinLstpr.removeAll();
2129
				magazinLstpr.add(liste);
2130
				comboLstpr.setStore(magazinLstpr);
2131
			}
2132
			if (listeValeurs.getId().equals(config.getListeId("stpu"))) {
2133
				magazinLstpu.removeAll();
2134
				magazinLstpu.add(liste);
2135
				comboLstpu.setStore(magazinLstpu);
2136
			}
2137
			if (listeValeurs.getId().equals(config.getListeId("statut"))) {
2138
				magazinLiStatut.removeAll();
2139
				magazinLiStatut.add(liste);
2140
				comboLiStatut.setStore(magazinLiStatut);
2141
			}
2142
			if (listeValeurs.getId().equals(config.getListeId("fonction"))) {
2143
				// FIXME : le store ne contient pas tout le temps les données, chose étrange.
2144
				// On stocke donc les données dans une variables de la classe pour recharger le store si besoin.
2145
				fonctionsListe = liste;
2146
				fonctionsMagazin.removeAll();
2147
				fonctionsMagazin.add(liste);
2148
				fonctionsCombo.setStore(fonctionsMagazin);
2149
			}
1035 gduche 2150
 
2151
			if (listeValeurs.getId().equals(config.getListeId("region"))) {
2152
				magazinRegion.removeAll();
2153
				magazinRegion.add(liste);
2154
				comboRegion.setStore(magazinRegion);
2155
 
2156
				mettreAJourRegion();
2157
			}
2158
 
2159
 
639 jp_milcent 2160
			if (listeValeurs.getId().equals(config.getListeId("localStockage"))) {
2161
				localStockageAutreChp = new TextField<String>();
2162
				creerChoixMultipleCac(localStockageTrukCp, localStockageTrukCacGrpChp, listeValeurs, localStockageAutreChp);
2163
			}
2164
			if (listeValeurs.getId().equals(config.getListeId("meubleStockage"))) {
2165
				meubleStockageAutreChp = new TextField<String>();
2166
				creerChoixMultipleCac(meubleStockageTrukCp, meubleStockageTrukCacGrpChp, listeValeurs, meubleStockageAutreChp);
2167
			}
2168
			if (listeValeurs.getId().equals(config.getListeId("parametreStockage"))) {
2169
				parametreStockageAutreChp = new TextField<String>();
2170
				creerChoixMultipleCac(parametreStockageTrukCp, parametreStockageTrukCacGrpChp, listeValeurs, parametreStockageAutreChp);
2171
			}
2172
			if (listeValeurs.getId().equals(config.getListeId("autreCollection"))) {
2173
				if (collectionAutreTrukCp != null && collectionAutreTrukCp.getItemByItemId("collectionAutreTrukCacGrpChp") == null) {
2174
					collectionAutreTrukCacGrpChp.setId("collectionAutreTrukCacGrpChp");
2175
					collectionAutreAutreChp = new TextField<String>();
2176
					creerChoixMultipleCac(collectionAutreTrukCp, collectionAutreTrukCacGrpChp, listeValeurs, collectionAutreAutreChp);
110 jpm 2177
				}
639 jp_milcent 2178
				if (autreCollectionTrukCp != null && autreCollectionTrukCp.getItemByItemId("autreCollectionTrukCacGrpChp") == null) {
2179
					autreCollectionTrukCacGrpChp.setId("autreCollectionTrukCacGrpChp");
2180
					autreCollectionAutreChp = new TextField<String>();
2181
					creerChoixMultipleCac(autreCollectionTrukCp, autreCollectionTrukCacGrpChp, listeValeurs, autreCollectionAutreChp);
277 jp_milcent 2182
				}
91 jpm 2183
			}
639 jp_milcent 2184
			if (listeValeurs.getId().equals(config.getListeId("opRestau"))) {
2185
				opRestauAutreChp = new TextField<String>();
2186
				creerChoixMultipleCac(opRestauTrukCp, opRestauTrukCacGrpChp, listeValeurs, opRestauAutreChp);
2187
			}
2188
			if (listeValeurs.getId().equals(config.getListeId("onep"))) {
2189
				creerChoixUniqueBoutonRadio(materielConservationCeRGrpChp, listeValeurs);
2190
				materielConservationCp.add(materielConservationCeRGrpChp);
2191
				materielConservationCp.layout();
2192
			}
2193
			if (listeValeurs.getId().equals(config.getListeId("autreMateriel"))) {
2194
				autreMaterielAutreChp = new TextField<String>();
2195
				creerChoixMultipleCac(autreMaterielTrukCp, autreMaterielTrukCacGrpChp, listeValeurs, autreMaterielAutreChp);
2196
			}
2197
			if (listeValeurs.getId().equals(config.getListeId("poisonTraitement"))) {
2198
				poisonTraitementAutreChp = new TextField<String>();
2199
				creerChoixMultipleCac(poisonTraitementTrukCp, poisonTraitementTrukCacGrpChp, listeValeurs, poisonTraitementAutreChp);
2200
			}
2201
			if (listeValeurs.getId().equals(config.getListeId("insecteTraitement"))) {
2202
				if (traitementTrukCp != null && traitementTrukCp.getItemByItemId("traitementTrukCacGrpChp") == null) {
2203
					traitementTrukCacGrpChp.setId("traitementTrukCacGrpChp");
2204
					traitementAutreChp = new TextField<String>();
2205
					creerChoixMultipleCac(traitementTrukCp, traitementTrukCacGrpChp, listeValeurs, traitementAutreChp);
2206
				}
2207
				if (insecteTraitementTrukCp != null && insecteTraitementTrukCp.getItemByItemId("insecteTraitementTrukCacGrpChp") == null) {
2208
					insecteTraitementTrukCacGrpChp.setId("insecteTraitementTrukCacGrpChp");
2209
					insecteTraitementAutreChp = new TextField<String>();
2210
					creerChoixMultipleCac(insecteTraitementTrukCp, insecteTraitementTrukCacGrpChp, listeValeurs, insecteTraitementAutreChp);
2211
				}
2212
			}
2213
			if (listeValeurs.getId().equals(config.getListeId("actionValorisation"))) {
2214
				actionAutreChp = new TextField<String>();
2215
				creerChoixMultipleCac(actionTrukCp, actionTrukCacGrpChp, listeValeurs, actionAutreChp);
2216
			}
2217
			if (listeValeurs.getId().equals(config.getListeId("continentEtFr"))) {
2218
				provenanceRechercheAutreChp = new TextField<String>();
2219
				creerChoixMultipleCac(provenanceRechercheTrukCp, provenanceRechercheTrukCacGrpChp, listeValeurs, provenanceRechercheAutreChp);
2220
			}
2221
			if (listeValeurs.getId().equals(config.getListeId("typeRecherche"))) {
2222
				typeRechercheAutreChp = new TextField<String>();
2223
				creerChoixMultipleCac(typeRechercheTrukCp, typeRechercheTrukCacGrpChp, listeValeurs, typeRechercheAutreChp);
2224
			}
2225
			//GWT.log("La liste #"+listeValeurs.getId()+" a été reçue!", null);
2226
		} else {
2227
			GWT.log("La liste #"+listeValeurs.getId()+" ne contient aucune valeurs!", null);
91 jpm 2228
		}
639 jp_milcent 2229
	}
2230
 
609 jp_milcent 2231
	private void testerLancementRafraichirPersonnel() {
1210 cyprien 2232
 
609 jp_milcent 2233
		decompteRafraichissementPersonnel--;
2234
		if (decompteRafraichissementPersonnel == 0) {
2235
			// Nous rechargeons la liste du Personnel
2236
			rafraichirPersonnel();
1210 cyprien 2237
		}
609 jp_milcent 2238
	}
2239
 
243 jp_milcent 2240
	private void rafraichirPersonnel() {
609 jp_milcent 2241
		decompteRafraichissementPersonnel = 0;
295 jp_milcent 2242
		if (mode.equals(MODE_MODIFIER)) {
609 jp_milcent 2243
			initialiserGrillePersonnelEnModification();
295 jp_milcent 2244
		} else if (mode.equals(MODE_AJOUTER)) {
2245
			initialiserGrillePersonnelEnAjout();
2246
		}
243 jp_milcent 2247
	}
2248
 
2249
	private void rafraichirPersonneExistante(String nom) {
1367 cyprien 2250
		mediateur.selectionnerPersonneParNomComplet(this, null, nom+"%", null);
243 jp_milcent 2251
	}
295 jp_milcent 2252
 
2253
	private void ajouterMembreAGrillePersonnel(StructureAPersonne personnel) {
2254
		grillePersonnel.stopEditing();
306 jp_milcent 2255
		personnelGrilleMagazin.insert(personnel, 0);
295 jp_milcent 2256
		grillePersonnel.startEditing(0, 0);
2257
	}
2258
 
2259
	private void initialiserGrillePersonnelEnAjout() {
2260
		personnelGrilleMagazin.removeAll();
2261
		StructureAPersonne conservateurDesCollections = new StructureAPersonne(StructureAPersonne.FONCTION_CONSERVATEUR, StructureAPersonne.ROLE_EQUIPE, StructureAPersonne.ETAT_AJOUTE);
2262
		ajouterMembreAGrillePersonnel(conservateurDesCollections);
2263
		StructureAPersonne directeurDuPersonnel = new StructureAPersonne(StructureAPersonne.FONCTION_DIRECTEUR, StructureAPersonne.ROLE_EQUIPE, StructureAPersonne.ETAT_AJOUTE);
2264
		ajouterMembreAGrillePersonnel(directeurDuPersonnel);
609 jp_milcent 2265
		personnelOnglet.layout();
295 jp_milcent 2266
	}
2267
 
1210 cyprien 2268
	private void initialiserGrillePersonnelEnModification() {
1322 gduche 2269
		mediateur.selectionnerStructureAPersonne(this, identification.getId(), StructureAPersonne.ROLE_EQUIPE, null);
295 jp_milcent 2270
	}
1513 jpm 2271
 
1210 cyprien 2272
}