Subversion Repositories eFlore/Applications.coel

Rev

Rev 1415 | Rev 1468 | 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;
69 jpm 6
import java.util.List;
7
 
981 jpm 8
import org.tela_botanica.client.ComposantClass;
119 jpm 9
import org.tela_botanica.client.Mediateur;
91 jpm 10
import org.tela_botanica.client.RegistreId;
1329 cyprien 11
import org.tela_botanica.client.composants.ChampComboBoxRechercheTempsReelPaginable;
1210 cyprien 12
import org.tela_botanica.client.composants.InfoLogger;
1369 cyprien 13
import org.tela_botanica.client.composants.pagination.ProxyPersonnes;
1329 cyprien 14
import org.tela_botanica.client.composants.pagination.ProxyProjets;
15
import org.tela_botanica.client.composants.pagination.ProxyValeur;
569 jp_milcent 16
import org.tela_botanica.client.images.Images;
69 jpm 17
import org.tela_botanica.client.interfaces.Rafraichissable;
153 jpm 18
import org.tela_botanica.client.modeles.Information;
100 jpm 19
import org.tela_botanica.client.modeles.InterneValeur;
20
import org.tela_botanica.client.modeles.InterneValeurListe;
330 jp_milcent 21
import org.tela_botanica.client.modeles.MenuApplicationId;
91 jpm 22
import org.tela_botanica.client.modeles.Valeur;
23
import org.tela_botanica.client.modeles.ValeurListe;
1239 cyprien 24
import org.tela_botanica.client.modeles.aDonnee;
1262 cyprien 25
import org.tela_botanica.client.modeles.collection.CollectionAPersonne;
935 jpm 26
import org.tela_botanica.client.modeles.personne.Personne;
27
import org.tela_botanica.client.modeles.personne.PersonneListe;
28
import org.tela_botanica.client.modeles.projet.Projet;
29
import org.tela_botanica.client.modeles.projet.ProjetListe;
30
import org.tela_botanica.client.modeles.structure.Structure;
31
import org.tela_botanica.client.modeles.structure.StructureAPersonne;
32
import org.tela_botanica.client.modeles.structure.StructureAPersonneListe;
33
import org.tela_botanica.client.modeles.structure.StructureConservation;
34
import org.tela_botanica.client.modeles.structure.StructureValorisation;
1322 gduche 35
import org.tela_botanica.client.synchronisation.Sequenceur;
1210 cyprien 36
import org.tela_botanica.client.util.Debug;
1173 jpm 37
import org.tela_botanica.client.util.Pattern;
243 jp_milcent 38
import org.tela_botanica.client.util.UtilArray;
1043 gduche 39
import org.tela_botanica.client.util.UtilString;
935 jpm 40
import org.tela_botanica.client.vues.Formulaire;
69 jpm 41
 
1284 gduche 42
import com.extjs.gxt.ui.client.Style.Scroll;
1329 cyprien 43
import com.extjs.gxt.ui.client.data.ModelData;
44
import com.extjs.gxt.ui.client.data.ModelType;
491 gduche 45
import com.extjs.gxt.ui.client.event.Events;
91 jpm 46
import com.extjs.gxt.ui.client.Registry;
295 jp_milcent 47
import com.extjs.gxt.ui.client.event.BaseEvent;
491 gduche 48
import com.extjs.gxt.ui.client.event.ButtonEvent;
111 jpm 49
import com.extjs.gxt.ui.client.event.ComponentEvent;
1210 cyprien 50
import com.extjs.gxt.ui.client.event.EventType;
243 jp_milcent 51
import com.extjs.gxt.ui.client.event.KeyListener;
111 jpm 52
import com.extjs.gxt.ui.client.event.Listener;
100 jpm 53
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
54
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
103 jpm 55
import com.extjs.gxt.ui.client.event.SelectionListener;
69 jpm 56
import com.extjs.gxt.ui.client.store.ListStore;
245 jp_milcent 57
import com.extjs.gxt.ui.client.store.Record;
58
import com.extjs.gxt.ui.client.store.Store;
59
import com.extjs.gxt.ui.client.store.StoreEvent;
111 jpm 60
import com.extjs.gxt.ui.client.widget.Component;
102 jpm 61
import com.extjs.gxt.ui.client.widget.ContentPanel;
569 jp_milcent 62
import com.extjs.gxt.ui.client.widget.Html;
153 jpm 63
import com.extjs.gxt.ui.client.widget.Info;
69 jpm 64
import com.extjs.gxt.ui.client.widget.LayoutContainer;
320 gduche 65
import com.extjs.gxt.ui.client.widget.MessageBox;
100 jpm 66
import com.extjs.gxt.ui.client.widget.TabItem;
67
import com.extjs.gxt.ui.client.widget.TabPanel;
69 jpm 68
import com.extjs.gxt.ui.client.widget.button.Button;
108 jpm 69
import com.extjs.gxt.ui.client.widget.form.CheckBox;
70
import com.extjs.gxt.ui.client.widget.form.CheckBoxGroup;
69 jpm 71
import com.extjs.gxt.ui.client.widget.form.ComboBox;
100 jpm 72
import com.extjs.gxt.ui.client.widget.form.DateField;
119 jpm 73
import com.extjs.gxt.ui.client.widget.form.Field;
100 jpm 74
import com.extjs.gxt.ui.client.widget.form.FieldSet;
172 jp_milcent 75
import com.extjs.gxt.ui.client.widget.form.HiddenField;
103 jpm 76
import com.extjs.gxt.ui.client.widget.form.LabelField;
102 jpm 77
import com.extjs.gxt.ui.client.widget.form.NumberField;
109 jpm 78
import com.extjs.gxt.ui.client.widget.form.Radio;
79
import com.extjs.gxt.ui.client.widget.form.RadioGroup;
164 jp_milcent 80
import com.extjs.gxt.ui.client.widget.form.TextArea;
69 jpm 81
import com.extjs.gxt.ui.client.widget.form.TextField;
1329 cyprien 82
import com.extjs.gxt.ui.client.widget.form.Validator;
69 jpm 83
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
84
import com.extjs.gxt.ui.client.widget.form.FormPanel.LabelAlign;
102 jpm 85
import com.extjs.gxt.ui.client.widget.grid.CellEditor;
86
import com.extjs.gxt.ui.client.widget.grid.CheckColumnConfig;
87
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
88
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
89
import com.extjs.gxt.ui.client.widget.grid.EditorGrid;
231 jp_milcent 90
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
91
import com.extjs.gxt.ui.client.widget.grid.RowNumberer;
69 jpm 92
import com.extjs.gxt.ui.client.widget.layout.ColumnData;
93
import com.extjs.gxt.ui.client.widget.layout.ColumnLayout;
94
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
100 jpm 95
import com.extjs.gxt.ui.client.widget.layout.FormData;
110 jpm 96
import com.extjs.gxt.ui.client.widget.tips.ToolTipConfig;
102 jpm 97
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
98
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
91 jpm 99
import com.google.gwt.core.client.GWT;
100 jpm 100
import com.google.gwt.i18n.client.DateTimeFormat;
102 jpm 101
import com.google.gwt.i18n.client.NumberFormat;
1035 gduche 102
import com.google.gwt.user.client.Window;
69 jpm 103
 
634 jp_milcent 104
public class StructureForm extends Formulaire implements Rafraichissable {
115 jpm 105
 
615 jp_milcent 106
	private static int decompteRafraichissementPersonnel = 0;
634 jp_milcent 107
 
775 jpm 108
	private TabPanel onglets = null;
206 jp_milcent 109
	private TabItem identificationOnglet = null;
192 jp_milcent 110
	private TabItem personnelOnglet = null;
111
	private TabItem conservationOnglet = null;
112
	private TabItem valorisationOnglet = null;
206 jp_milcent 113
 
114
	private HiddenField<String> idStructureChp = null;
115 jpm 115
 
206 jp_milcent 116
	// Onglet IDENTIFICATION
602 jp_milcent 117
	private Structure identification = null;
91 jpm 118
	private ListStore<Valeur> magazinLstpr = null;
119
	private ComboBox<Valeur> comboLstpr = null;
120
	private ListStore<Valeur> magazinLstpu = null;
121
	private ComboBox<Valeur> comboLstpu = null;
103 jpm 122
	private ListStore<Valeur> magazinLiStatut = null;
123
	private ComboBox<Valeur> comboLiStatut = null;
295 jp_milcent 124
	private ListStore<Valeur> fonctionsMagazin = null;
125
	private ComboBox<Valeur> fonctionsCombo = null;
100 jpm 126
	private ComboBox<InterneValeur> comboAcronyme = null;
127
	private TextField<String> ihChp = null;
128
	private TextField<String> mnhnChp = null;
129
	private ComboBox<InterneValeur> comboTypeStructure = null;
602 jp_milcent 130
	private TextField<String> nomStructureChp = null;
1284 gduche 131
	private TextField<String> dateFondationChp = null;
1173 jpm 132
	private TextArea descriptionChp = null;
133
	private TextArea conditionAccesChp = null;
134
	private TextArea conditionUsageChp = null;
602 jp_milcent 135
	private TextArea adrChp = null;
1173 jpm 136
	private TextArea adrComplementChp = null;
602 jp_milcent 137
	private TextField<String> cpChp = null;
138
	private TextField<String> villeChp = null;
1173 jpm 139
	private ListStore<Valeur> magazinRegion = null;
1035 gduche 140
	private ComboBox<Valeur> comboRegion = null;
1173 jpm 141
	private ListStore<Valeur> magazinPays = null;
1329 cyprien 142
	private ChampComboBoxRechercheTempsReelPaginable comboPays = null;
1173 jpm 143
	private TextField<String> latitudeChp = null;
144
	private TextField<String> longitudeChp = null;
602 jp_milcent 145
	private TextField<String> telChp = null;
146
	private TextField<String> faxChp = null;
147
	private TextField<String> emailChp = null;
148
	private TextField<String> urlChp = null;
192 jp_milcent 149
 
206 jp_milcent 150
	// Onglet PERSONNEL
602 jp_milcent 151
	private StructureAPersonneListe personnel = null;
231 jp_milcent 152
	private StructureAPersonneListe personnelAjoute = null;
153
	private StructureAPersonneListe personnelModifie = null;
154
	private StructureAPersonneListe personnelSupprime = null;
211 jp_milcent 155
	private NumberField nbreTotalPersonneStructureChp = null;
156
	private EditorGrid<StructureAPersonne> grillePersonnel = null;
157
	private ListStore<StructureAPersonne> personnelGrilleMagazin = null;
158
 
206 jp_milcent 159
	// Onglet CONSERVATION
211 jp_milcent 160
	private StructureConservation conservation = null;
602 jp_milcent 161
	private RadioGroup formationMarkRGrpChp = null;
162
	private RadioGroup interetFormationMarkRGrpChp = null;
163
	private RadioGroup collectionCommuneMarkRGrpChp = null;
164
	private RadioGroup accesControleMarkRGrpChp = null;
165
	private RadioGroup restaurationMarkRGrpChp = null;
166
	private RadioGroup traitementMarkRGrpChp = null;
167
	private RadioGroup collectionAcquisitionMarkRGrpChp = null;
168
	private RadioGroup echantillonAcquisitionMarkRGrpChp = null;
169
	private TextField<String> localStockageAutreChp = null;
170
	private TextField<String> meubleStockageAutreChp = null;
171
	private TextField<String> parametreStockageAutreChp = null;
172
	private TextField<String> collectionAutreAutreChp = null;
173
	private TextField<String> autreCollectionAutreChp = null;
174
	private TextField<String> opRestauAutreChp = null;
175
	private TextField<String> autreMaterielAutreChp = null;
176
	private TextField<String> poisonTraitementAutreChp = null;
177
	private TextField<String> traitementAutreChp = null;
178
	private TextField<String> insecteTraitementAutreChp = null;
179
	private TextField<String> actionAutreChp = null;
180
	private TextField<String> provenanceRechercheAutreChp = null;
181
	private TextField<String> typeRechercheAutreChp = null;
115 jpm 182
	private CheckBoxGroup localStockageTrukCacGrpChp = null;
569 jp_milcent 183
	private LayoutContainer localStockageTrukCp = null;
115 jpm 184
	private CheckBoxGroup meubleStockageTrukCacGrpChp = null;
569 jp_milcent 185
	private LayoutContainer meubleStockageTrukCp = null;
115 jpm 186
	private CheckBoxGroup parametreStockageTrukCacGrpChp = null;
569 jp_milcent 187
	private LayoutContainer parametreStockageTrukCp = null;
188
	private LayoutContainer collectionAutreTrukCp = null;
111 jpm 189
	private CheckBoxGroup collectionAutreTrukCacGrpChp = null;
115 jpm 190
	private CheckBoxGroup opRestauTrukCacGrpChp = null;
569 jp_milcent 191
	private LayoutContainer opRestauTrukCp = null;
115 jpm 192
	private CheckBoxGroup autreMaterielTrukCacGrpChp = null;
569 jp_milcent 193
	private LayoutContainer autreMaterielTrukCp = null;
194
	private LayoutContainer traitementTrukCp = null;
111 jpm 195
	private CheckBoxGroup traitementTrukCacGrpChp = null;
569 jp_milcent 196
	private LayoutContainer poisonTraitementTrukCp = null;
197
	private LayoutContainer insecteTraitementTrukCp = null;
111 jpm 198
	private CheckBoxGroup insecteTraitementTrukCacGrpChp = null;
115 jpm 199
	private CheckBoxGroup poisonTraitementTrukCacGrpChp = null;
569 jp_milcent 200
	private LayoutContainer autreCollectionTrukCp = null;
119 jpm 201
	private CheckBoxGroup autreCollectionTrukCacGrpChp = null;
569 jp_milcent 202
	private LayoutContainer provenanceRechercheTrukCp = null;
115 jpm 203
	private CheckBoxGroup provenanceRechercheTrukCacGrpChp = null;
204
	private CheckBoxGroup typeRechercheTrukCacGrpChp = null;
569 jp_milcent 205
	private LayoutContainer typeRechercheTrukCp = null;
115 jpm 206
	private TextField<String> futureActionChp = null;
207
	private TextField<String> sansMotifAccesChp = null;
208
	private TextField<String> avecMotifAccesChp = null;
209
	private TextField<String> formationChp = null;
210
	private RadioGroup traitementAcquisitionMarkRGrpChp = null;
211
	private LabelField traitementAcquisitionMarkLabel = null;
212
	private RadioGroup materielConservationCeRGrpChp = null;
119 jpm 213
 
206 jp_milcent 214
	// Onglet VALORISATION
211 jp_milcent 215
	private StructureValorisation valorisation = null;
206 jp_milcent 216
	private RadioGroup actionMarkRGrpChp = null;
569 jp_milcent 217
	private LayoutContainer actionTrukCp = null;
206 jp_milcent 218
	private CheckBoxGroup actionTrukCacGrpChp = null;
602 jp_milcent 219
	private RadioGroup futureActionMarkRGrpChp = null;
220
	private RadioGroup rechercheMarkRGrpChp = null;
221
	private RadioGroup sansMotifAccesMarkRGrpChp = null;
222
	private RadioGroup avecMotifAccesMarkRGrpChp = null;
223
	private TextField<String> publicationChp = null;
224
	private LayoutContainer materielConservationCp = null;
225
	private ListStore<Personne> personneExistanteMagazin = null;
1369 cyprien 226
	private ChampComboBoxRechercheTempsReelPaginable personneExistanteCombo = null;
602 jp_milcent 227
	private Button supprimerPersonnelBtn = null;
228
	private ListStore<Projet> projetsMagazin = null;
1329 cyprien 229
	private ChampComboBoxRechercheTempsReelPaginable projetsCombo = null;
602 jp_milcent 230
	private CellEditor fonctionEditor = null;
231
	private List<Valeur> fonctionsListe = null;
1322 gduche 232
 
233
	private Sequenceur sequenceur;
234
 
235
	public StructureForm(Mediateur mediateurCourrant, String modeDeCreation, Sequenceur sequenceur) {
648 jp_milcent 236
		initialiserFormulaire(mediateurCourrant, modeDeCreation, MenuApplicationId.STRUCTURE);
1322 gduche 237
		this.sequenceur = sequenceur;
238
 
775 jpm 239
		// Ajout du titre
240
		panneauFormulaire.setHeading(i18nC.titreAjoutFormStructurePanneau());
241
		// Création des onglets
242
		onglets = creerOnglets();
1322 gduche 243
 
775 jpm 244
		// Ajout des onglets au formulaire général
245
		panneauFormulaire.add(onglets);
609 jp_milcent 246
	}
247
 
775 jpm 248
	protected TabPanel creerOnglets() {
249
		TabPanel ongletsStructure = new TabPanel();
110 jpm 250
		// 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 251
		ongletsStructure.setHeight("100%");
69 jpm 252
 
100 jpm 253
		// Onlget formulaire IDENTIFICATION
775 jpm 254
		ongletsStructure.add(creerOngletIdentification());
206 jp_milcent 255
 
100 jpm 256
		// Onlget formulaire PERSONNEL
775 jpm 257
		ongletsStructure.add(creerOngletPersonnel());
91 jpm 258
 
100 jpm 259
		// Onlget formulaire CONSERVATION
775 jpm 260
		ongletsStructure.add(creerOngletConservation());
100 jpm 261
 
262
		// Onlget formulaire VALORISATION
775 jpm 263
		ongletsStructure.add(creerOngletValorisation());
100 jpm 264
 
119 jpm 265
		// Sélection de l'onglet par défaut
775 jpm 266
		//ongletsStructure(personnelOnglet);
192 jp_milcent 267
 
775 jpm 268
		return ongletsStructure;
609 jp_milcent 269
	}
270
 
934 jpm 271
	public void reinitialiserFormulaire() {
272
		if (mode.equals(StructureForm.MODE_MODIFIER)) {
273
			mediateur.afficherFormStructure(identification.getId());
274
		} else {
275
			mediateur.afficherFormStructure(null);
276
		}
69 jpm 277
	}
781 jpm 278
 
934 jpm 279
	public boolean soumettreFormulaire() {
1210 cyprien 280
 
243 jp_milcent 281
		// Vérification de la validité des champs du formulaire
786 jpm 282
		boolean fomulaireValide = verifierFormulaire();
283
		if (fomulaireValide) {
243 jp_milcent 284
			// Collecte des données du formulaire
285
			Structure structure = collecterStructureIdentification();
286
			StructureConservation conservation = collecterStructureConservation();
287
			StructureValorisation valorisation = collecterStructureValorisation();
288
			collecterStructurePersonnel();
289
 
634 jp_milcent 290
			if (mode.equals(MODE_AJOUTER)) {
243 jp_milcent 291
				// Ajout des informations sur la Structure
782 jpm 292
				mediateur.ajouterStructure(this, structure, conservation, valorisation);
243 jp_milcent 293
				// L'ajout des relations StructureAPersonne se fait quand la structure a été ajoutée
294
				// Voir la méthode rafraichir().
634 jp_milcent 295
			} else if (mode.equals(MODE_MODIFIER)) {
1210 cyprien 296
 
243 jp_milcent 297
				// Modification des informations sur la Structure
306 jp_milcent 298
				if (structure == null && conservation == null && valorisation == null) {
1210 cyprien 299
					InfoLogger.display("Modification d'une institution", "Rien n'a été enregistré car le formulaire n'a pas été modifié.");
306 jp_milcent 300
				} else {
301
					mediateur.modifierStructure(this, identification.getId(), structure, conservation, valorisation);
302
				}
1210 cyprien 303
 
306 jp_milcent 304
				if (personnelModifie.size() == 0 && personnelAjoute.size() == 0 && personnelSupprime.size() == 0) {
1210 cyprien 305
					InfoLogger.display("Modification du personnel", "Rien n'a été enregistré car le formulaire n'a pas été modifié.");
306 jp_milcent 306
				} else {
307
					if (personnelModifie.size() != 0) {
609 jp_milcent 308
						decompteRafraichissementPersonnel++;
782 jpm 309
						mediateur.modifierStructureAPersonne(this, personnelModifie);
306 jp_milcent 310
					}
311
					// Ajout des relations StructureAPersonne
312
					if (personnelAjoute.size() != 0) {
609 jp_milcent 313
						decompteRafraichissementPersonnel++;
782 jpm 314
						mediateur.ajouterStructureAPersonne(this, identification.getId(), personnelAjoute);
306 jp_milcent 315
					}
316
					// Suppression des relations StructureAPersonne
317
					if (personnelSupprime.size() != 0) {
609 jp_milcent 318
						decompteRafraichissementPersonnel++;
782 jpm 319
						mediateur.supprimerStructureAPersonne(this, personnelSupprime);
306 jp_milcent 320
					}
321
				}
243 jp_milcent 322
			}
323
		}
1210 cyprien 324
 
786 jpm 325
		return fomulaireValide;
243 jp_milcent 326
	}
327
 
934 jpm 328
	public boolean verifierFormulaire() {
243 jp_milcent 329
		ArrayList<String> messages = new ArrayList<String>();
231 jp_milcent 330
 
295 jp_milcent 331
		// Vérification des infos sur le nom de la structure
263 jp_milcent 332
		if (	(identificationOnglet.getData("acces").equals(true) && nomStructureChp.getValue() == null) ||
333
				(identificationOnglet.getData("acces").equals(true) && nomStructureChp.getValue().equals("")) ||
243 jp_milcent 334
				(identificationOnglet.getData("acces").equals(false) && identification.getNom().equals(""))) {
335
			messages.add("Veuillez indiquez un nom à l'institution.");
156 jp_milcent 336
		}
243 jp_milcent 337
 
295 jp_milcent 338
		// Vérification des infos sur le projet de la structure
1329 cyprien 339
		if (	(identificationOnglet.getData("acces").equals(true) && projetsCombo.getCombo().getValue() == null) ||
340
				(identificationOnglet.getData("acces").equals(true) && projetsCombo.getCombo().getValue().equals("")) ||
295 jp_milcent 341
				(identificationOnglet.getData("acces").equals(false) && identification.getIdProjet().equals(""))) {
342
			messages.add("Veuillez sélectionner un projet pour l'institution.");
343
		}
344
 
243 jp_milcent 345
		// Vérification du Personnel
346
		if (personnelOnglet.getData("acces").equals(true)) {
347
			String personnelNumero = "";
348
			int nbrePersonne = personnelGrilleMagazin.getCount();
349
			for (int i = 0; i < nbrePersonne; i++) {
350
				StructureAPersonne personne = personnelGrilleMagazin.getAt(i);
351
				if (personne.getNom().equals("") || personne.getPrenom().equals("")) {
352
					personnelNumero += (i != 0 ? ", " : "")+(i+1);
353
				}
354
			}
355
			if (!personnelNumero.equals("")) {
356
				messages.add("Veuillez indiquez un prénom et un nom au personnel numéro : "+personnelNumero);
357
			}
358
		}
359
 
1284 gduche 360
		//Vérification de la date de fondation
361
		String valeurDateFondation = dateFondationChp.getValue();
362
		if (!UtilString.isEmpty(valeurDateFondation) && (!valeurDateFondation.matches("\\d{2}/\\d{2}/\\d{4}") &&
363
				!valeurDateFondation.matches("\\d{4}")))	{
364
				messages.add("La date de fondation n'est pas au format jj/MM/AAAA ou AAAA");
365
			}
366
 
243 jp_milcent 367
		// Affichage des messages d'alerte
368
		if (messages.size() != 0) {
369
			String[] a = {};
370
			a = messages.toArray(a);
320 gduche 371
			MessageBox.alert("Erreurs de saisies", UtilArray.implode(a, "\n\n"), null);
243 jp_milcent 372
			return false;
373
		}
1284 gduche 374
 
243 jp_milcent 375
		return true;
119 jpm 376
	}
377
 
192 jp_milcent 378
	private StructureValorisation collecterStructureValorisation() {
306 jp_milcent 379
		StructureValorisation valorisationARetourner = null;
380
		if (valorisationOnglet.getData("acces").equals(true)) {
206 jp_milcent 381
			// Création de l'objet
306 jp_milcent 382
			StructureValorisation valorisationCollectee = (StructureValorisation) valorisation.cloner(new StructureValorisation());
206 jp_milcent 383
 
384
			// ACTION
385
			if (actionMarkRGrpChp.getValue() != null) {
306 jp_milcent 386
				valorisationCollectee.setAction(actionMarkRGrpChp.getValue().getValueAttribute());
206 jp_milcent 387
			}
388
 
389
			// ACTION INFO
306 jp_milcent 390
			valorisationCollectee.setActionInfo(creerChaineDenormalisee(actionTrukCacGrpChp.getValues()));
391
			valorisationCollectee.setActionInfo("AUTRE", actionAutreChp.getValue());
206 jp_milcent 392
 
393
			// PUBLICATION
306 jp_milcent 394
			valorisationCollectee.setPublication(publicationChp.getValue());
206 jp_milcent 395
 
396
			// COLLECTION AUTRE
306 jp_milcent 397
			valorisationCollectee.setCollectionAutre(creerChaineDenormalisee(autreCollectionTrukCacGrpChp.getValues()));
398
			valorisationCollectee.setCollectionAutre("AUTRE", autreCollectionAutreChp.getValue());
206 jp_milcent 399
 
400
			// ACTION FUTURE
401
			if (futureActionMarkRGrpChp.getValue() != null) {
306 jp_milcent 402
				valorisationCollectee.setActionFuture(futureActionMarkRGrpChp.getValue().getValueAttribute());
206 jp_milcent 403
			}
404
			// ACTION FUTURE INFO
306 jp_milcent 405
			valorisationCollectee.setActionFutureInfo(futureActionChp.getValue());
206 jp_milcent 406
 
407
			// RECHERCHE
408
			if (rechercheMarkRGrpChp.getValue() != null) {
306 jp_milcent 409
				valorisationCollectee.setRecherche(rechercheMarkRGrpChp.getValue().getValueAttribute());
602 jp_milcent 410
 
411
				// RECHERCHE PROVENANCE
412
				valorisationCollectee.setRechercheProvenance(creerChaineDenormalisee(provenanceRechercheTrukCacGrpChp.getValues()));
413
				valorisationCollectee.setRechercheProvenance("AUTRE", provenanceRechercheAutreChp.getValue());
414
 
415
				// RECHERCHE TYPE
416
				valorisationCollectee.setRechercheType(creerChaineDenormalisee(typeRechercheTrukCacGrpChp.getValues()));
417
				valorisationCollectee.setRechercheType("AUTRE", typeRechercheAutreChp.getValue());
206 jp_milcent 418
			}
419
 
420
			// ACCÈS SANS MOTIF
421
			if (sansMotifAccesMarkRGrpChp.getValue() != null) {
306 jp_milcent 422
				valorisationCollectee.setAccesSansMotif(sansMotifAccesMarkRGrpChp.getValue().getValueAttribute());
206 jp_milcent 423
			}
424
			// ACCÈS SANS MOTIF INFO
306 jp_milcent 425
			valorisationCollectee.setAccesSansMotifInfo(sansMotifAccesChp.getValue());
206 jp_milcent 426
 
427
			// VISITE AVEC MOTIF
428
			if (avecMotifAccesMarkRGrpChp.getValue() != null) {
306 jp_milcent 429
				valorisationCollectee.setVisiteAvecMotif(avecMotifAccesMarkRGrpChp.getValue().getValueAttribute());
206 jp_milcent 430
			}
431
			// VISITE AVEC MOTIF INFO
306 jp_milcent 432
			valorisationCollectee.setVisiteAvecMotifInfo(avecMotifAccesChp.getValue());
206 jp_milcent 433
 
306 jp_milcent 434
			// Retour de l'objet
435
			if (!valorisationCollectee.comparer(valorisation)) {
436
				valorisationARetourner = valorisation = valorisationCollectee;
437
			}
192 jp_milcent 438
		}
306 jp_milcent 439
		return valorisationARetourner;
192 jp_milcent 440
	}
441
 
442
	private void peuplerStructureValorisation() {
605 jp_milcent 443
		if (mode.equals(MODE_AJOUTER)) {
444
			// Indique que l'onglet a pu être modifié pour la méthode collecter...
445
			valorisationOnglet.setData("acces", true);
446
			// Initialisation de l'objet Structure
447
			valorisation = new StructureValorisation();
448
		}
449
		if (mode.equals(MODE_MODIFIER) && valorisation != null && valorisationOnglet.getData("acces").equals(false)) {
491 gduche 450
			// ACTION :
451
			//TODO : check below:
452
			((Radio) actionMarkRGrpChp.get((valorisation.getAction().equals("1") ? 0 : 1))).setValue(true);
206 jp_milcent 453
 
454
			// ACTION INFO
455
			peuplerCasesACocher(valorisation.getActionInfo(), actionTrukCacGrpChp, actionAutreChp);
456
 
457
			// PUBLICATION
458
			publicationChp.setValue(valorisation.getPublication());
459
 
460
			// COLLECTION AUTRE
461
			peuplerCasesACocher(valorisation.getCollectionAutre(), autreCollectionTrukCacGrpChp, autreCollectionAutreChp);
462
 
463
			// ACTION FUTURE
491 gduche 464
			((Radio) futureActionMarkRGrpChp.get((valorisation.getActionFuture().equals("1") ? 0 : 1))).setValue(true);
206 jp_milcent 465
 
466
			// ACTION FUTURE INFO
467
			futureActionChp.setValue(valorisation.getActionFutureInfo());
468
 
469
			// RECHERCHE
491 gduche 470
			((Radio) rechercheMarkRGrpChp.get((valorisation.getRecherche().equals("1") ? 0 : 1))).setValue(true);
206 jp_milcent 471
			// RECHERCHE PROVENANCE
472
			peuplerCasesACocher(valorisation.getRechercheProvenance(), provenanceRechercheTrukCacGrpChp, provenanceRechercheAutreChp);
473
			// RECHERCHE TYPE
474
			peuplerCasesACocher(valorisation.getRechercheType(), typeRechercheTrukCacGrpChp, typeRechercheAutreChp);
475
 
476
			// ACCÈS SANS MOTIF
491 gduche 477
			((Radio) sansMotifAccesMarkRGrpChp.get((valorisation.getAccesSansMotif().equals("1") ? 0 : 1))).setValue(true);
206 jp_milcent 478
			// ACCÈS SANS MOTIF INFO
479
			sansMotifAccesChp.setValue(valorisation.getAccesSansMotifInfo());
480
 
481
			// VISITE AVEC MOTIF
491 gduche 482
			((Radio) avecMotifAccesMarkRGrpChp.get((valorisation.getVisiteAvecMotif().equals("1") ? 0 : 1))).setValue(true);
206 jp_milcent 483
			// VISITE AVEC MOTIF INFO
484
			avecMotifAccesChp.setValue(valorisation.getVisiteAvecMotifInfo());
211 jp_milcent 485
 
243 jp_milcent 486
			// Indique que l'onglet a été rempli et a pu être modifié pour la méthode collecter...
487
			valorisationOnglet.setData("acces", true);
206 jp_milcent 488
		}
192 jp_milcent 489
	}
490
 
491
	private StructureConservation collecterStructureConservation() {
306 jp_milcent 492
		StructureConservation conservationARetourner = null;
493
		if (conservationOnglet.getData("acces").equals(true)) {
206 jp_milcent 494
			// Création de l'objet
306 jp_milcent 495
			StructureConservation conservationCollectee = (StructureConservation) conservation.cloner(new StructureConservation());
192 jp_milcent 496
 
206 jp_milcent 497
			// FORMATION
498
			if (formationMarkRGrpChp.getValue() != null) {
306 jp_milcent 499
				conservationCollectee.setFormation(formationMarkRGrpChp.getValue().getValueAttribute());
206 jp_milcent 500
			}
501
			// FORMATION INFO
306 jp_milcent 502
			conservationCollectee.setFormationInfo(formationChp.getValue());
206 jp_milcent 503
			// FORMATION INTERET
504
			if (interetFormationMarkRGrpChp.getValue() != null) {
306 jp_milcent 505
				conservationCollectee.setFormationInteret(interetFormationMarkRGrpChp.getValue().getValueAttribute());
206 jp_milcent 506
			}
507
 
508
			// STOCKAGE LOCAL
306 jp_milcent 509
			conservationCollectee.setStockageLocal(creerChaineDenormalisee(localStockageTrukCacGrpChp.getValues()));
510
			conservationCollectee.setStockageLocal("AUTRE", localStockageAutreChp.getValue());
206 jp_milcent 511
 
512
			// STOCKAGE MEUBLE
306 jp_milcent 513
			conservationCollectee.setStockageMeuble(creerChaineDenormalisee(meubleStockageTrukCacGrpChp.getValues()));
514
			conservationCollectee.setStockageMeuble("AUTRE", meubleStockageAutreChp.getValue());
206 jp_milcent 515
 
516
			// STOCKAGE PAREMETRE
306 jp_milcent 517
			conservationCollectee.setStockageParametre(creerChaineDenormalisee(parametreStockageTrukCacGrpChp.getValues()));
518
			conservationCollectee.setStockageParametre("AUTRE", parametreStockageAutreChp.getValue());
206 jp_milcent 519
 
520
			// COLLECTION COMMUNE
521
			if (collectionCommuneMarkRGrpChp.getValue() != null) {
306 jp_milcent 522
				conservationCollectee.setCollectionCommune(collectionCommuneMarkRGrpChp.getValue().getValueAttribute());
206 jp_milcent 523
			}
524
			// COLLECTION AUTRE
306 jp_milcent 525
			conservationCollectee.setCollectionAutre(creerChaineDenormalisee(collectionAutreTrukCacGrpChp.getValues()));
526
			conservationCollectee.setCollectionAutre("AUTRE", collectionAutreAutreChp.getValue());
206 jp_milcent 527
 
528
			// ACCÈS CONTROLÉ
529
			if (accesControleMarkRGrpChp.getValue() != null) {
306 jp_milcent 530
				conservationCollectee.setAccesControle(accesControleMarkRGrpChp.getValue().getValueAttribute());
206 jp_milcent 531
			}
532
 
533
			// RESTAURATION
534
			if (restaurationMarkRGrpChp.getValue() != null) {
306 jp_milcent 535
				conservationCollectee.setRestauration(restaurationMarkRGrpChp.getValue().getValueAttribute());
206 jp_milcent 536
			}
537
			// RESTAURATION OPÉRATION
306 jp_milcent 538
			conservationCollectee.setRestaurationOperation(creerChaineDenormalisee(opRestauTrukCacGrpChp.getValues()));
539
			conservationCollectee.setRestaurationOperation("AUTRE", opRestauAutreChp.getValue());
206 jp_milcent 540
 
541
			// MATERIEL CONSERVATION
542
			if (materielConservationCeRGrpChp.getValue() != null) {
306 jp_milcent 543
				conservationCollectee.setMaterielConservation(materielConservationCeRGrpChp.getValue().getValueAttribute());
428 jp_milcent 544
 
545
				// MATERIEL AUTRE
546
				conservationCollectee.setMaterielAutre(creerChaineDenormalisee(autreMaterielTrukCacGrpChp.getValues()));
547
				conservationCollectee.setMaterielAutre("AUTRE", autreMaterielAutreChp.getValue());
206 jp_milcent 548
			}
549
 
550
			// TRAITEMENT
551
			if (traitementMarkRGrpChp.getValue() != null) {
306 jp_milcent 552
				conservationCollectee.setTraitement(traitementMarkRGrpChp.getValue().getValueAttribute());
206 jp_milcent 553
			}
554
			// TRAIEMENTS
306 jp_milcent 555
			conservationCollectee.setTraitements(creerChaineDenormalisee(traitementTrukCacGrpChp.getValues()));
556
			conservationCollectee.setTraitements("AUTRE", traitementAutreChp.getValue());
206 jp_milcent 557
 
558
 
559
			// ACQUISITION COLLECTION
560
			if (collectionAcquisitionMarkRGrpChp.getValue() != null) {
306 jp_milcent 561
				conservationCollectee.setAcquisitionCollection(collectionAcquisitionMarkRGrpChp.getValue().getValueAttribute());
206 jp_milcent 562
			}
563
 
564
			// ACQUISITION ECHANTILLON
565
			if (echantillonAcquisitionMarkRGrpChp.getValue() != null) {
306 jp_milcent 566
				conservationCollectee.setAcquisitionEchantillon(echantillonAcquisitionMarkRGrpChp.getValue().getValueAttribute());
206 jp_milcent 567
			}
568
			// ACQUISITION TRAITEMENT
569
			if (traitementAcquisitionMarkRGrpChp.getValue() != null) {
306 jp_milcent 570
				conservationCollectee.setAcquisitionTraitement(traitementAcquisitionMarkRGrpChp.getValue().getValueAttribute());
206 jp_milcent 571
			}
572
			// ACQUISITION TRAITEMENT POISON
306 jp_milcent 573
			conservationCollectee.setAcquisitionTraitementPoison(creerChaineDenormalisee(poisonTraitementTrukCacGrpChp.getValues()));
574
			conservationCollectee.setAcquisitionTraitementPoison("AUTRE", poisonTraitementAutreChp.getValue());
206 jp_milcent 575
			// ACQUISITION TRAITEMENT INSECTE
306 jp_milcent 576
			conservationCollectee.setAcquisitionTraitementInsecte(creerChaineDenormalisee(insecteTraitementTrukCacGrpChp.getValues()));
577
			conservationCollectee.setAcquisitionTraitementInsecte("AUTRE", insecteTraitementAutreChp.getValue());
206 jp_milcent 578
 
579
			// Retour de l'objet
306 jp_milcent 580
			if (!conservationCollectee.comparer(conservation)) {
605 jp_milcent 581
				GWT.log("Collecte différent de Retour", null);
306 jp_milcent 582
				conservationARetourner = conservation = conservationCollectee;
583
			}
192 jp_milcent 584
		}
306 jp_milcent 585
		return conservationARetourner;
188 jp_milcent 586
	}
587
 
192 jp_milcent 588
	private void peuplerStructureConservation() {
605 jp_milcent 589
		if (mode.equals(MODE_AJOUTER)) {
590
			// Indique que l'onglet a pu être modifié pour la méthode collecter...
591
			conservationOnglet.setData("acces", true);
592
			// Initialisation de l'objet Structure
593
			conservation = new StructureConservation();
594
		}
595
		if (mode.equals(MODE_MODIFIER) && conservation != null && conservationOnglet.getData("acces").equals(false)) {
206 jp_milcent 596
			// FORMATION
597
			// Bouton oui, à toujours l'index 0 donc on teste en fonction...
491 gduche 598
			((Radio) formationMarkRGrpChp.get((conservation.getFormation().equals("1") ? 0 : 1))).setValue(true);
206 jp_milcent 599
			// FORMATION INFO
600
			formationChp.setValue(conservation.getFormationInfo());
601
			// FORMATION INTERET
491 gduche 602
			((Radio) interetFormationMarkRGrpChp.get((conservation.getFormationInteret().equals("1") ? 0 : 1))).setValue(true);
206 jp_milcent 603
 
604
			// STOCKAGE LOCAL
605
			peuplerCasesACocher(conservation.getStockageLocal(), localStockageTrukCacGrpChp,localStockageAutreChp);
606
 
607
			// STOCKAGE MEUBLE
608
			peuplerCasesACocher(conservation.getStockageMeuble(), meubleStockageTrukCacGrpChp, meubleStockageAutreChp);
609
 
610
			// STOCKAGE PAREMETRE
611
			peuplerCasesACocher(conservation.getStockageParametre(), parametreStockageTrukCacGrpChp, parametreStockageAutreChp);
612
 
613
			// COLLECTION COMMUNE
491 gduche 614
			((Radio) collectionCommuneMarkRGrpChp.get((conservation.getCollectionCommune().equals("1") ? 0 : 1))).setValue(true);
206 jp_milcent 615
			// COLLECTION AUTRE
616
			peuplerCasesACocher(conservation.getCollectionAutre(), collectionAutreTrukCacGrpChp, collectionAutreAutreChp);
617
 
618
			// ACCÈS CONTROLÉ
491 gduche 619
			((Radio) accesControleMarkRGrpChp.get((conservation.getAccesControle().equals("1") ? 0 : 1))).setValue(true);
206 jp_milcent 620
 
621
			// RESTAURATION
491 gduche 622
			((Radio) restaurationMarkRGrpChp.get((conservation.getRestauration().equals("1") ? 0 : 1))).setValue(true);
206 jp_milcent 623
			// RESTAURATION OPÉRATION
624
			peuplerCasesACocher(conservation.getRestaurationOperation(), opRestauTrukCacGrpChp, opRestauAutreChp);
625
 
626
			// MATERIEL CONSERVATION
627
			peuplerBoutonsRadio(conservation.getMaterielConservation(), materielConservationCeRGrpChp);
628
 
629
			// MATERIEL AUTRE
630
			peuplerCasesACocher(conservation.getMaterielAutre(), autreMaterielTrukCacGrpChp, autreMaterielAutreChp);
631
 
632
			// TRAITEMENT
491 gduche 633
			((Radio) traitementMarkRGrpChp.get((conservation.getTraitement().equals("1") ? 0 : 1))).setValue(true);
206 jp_milcent 634
			// TRAITEMENTS
635
			peuplerCasesACocher(conservation.getTraitements(), traitementTrukCacGrpChp, traitementAutreChp);
636
 
637
			// ACQUISITION COLLECTION
491 gduche 638
			((Radio) collectionAcquisitionMarkRGrpChp.get((conservation.getAcquisitionCollection().equals("1") ? 0 : 1))).setValue(true);
206 jp_milcent 639
 
640
			// ACQUISITION ECHANTILLON
491 gduche 641
			((Radio) echantillonAcquisitionMarkRGrpChp.get((conservation.getAcquisitionEchantillon().equals("1") ? 0 : 1))).setValue(true);
206 jp_milcent 642
 
643
			// ACQUISITION TRAITEMENT
491 gduche 644
			((Radio) traitementAcquisitionMarkRGrpChp.get((conservation.getAcquisitionTraitement().equals("1") ? 0 : 1))).setValue(true);
206 jp_milcent 645
			// ACQUISITION TRAITEMENT POISON
646
			peuplerCasesACocher(conservation.getAcquisitionTraitementPoison(), poisonTraitementTrukCacGrpChp, poisonTraitementAutreChp);
647
			// ACQUISITION TRAITEMENT INSECTE
648
			peuplerCasesACocher(conservation.getAcquisitionTraitementInsecte(), insecteTraitementTrukCacGrpChp, insecteTraitementAutreChp);
211 jp_milcent 649
 
243 jp_milcent 650
			// Indique que l'onglet a été rempli et a pu être modifié pour la méthode collecter...
651
			conservationOnglet.setData("acces", true);
206 jp_milcent 652
		}
188 jp_milcent 653
	}
654
 
192 jp_milcent 655
	private Structure collecterStructureIdentification() {
306 jp_milcent 656
		Structure structureARetourner = null;
657
		if (identificationOnglet.getData("acces").equals(true)) {
658
 
659
			Structure structureCollectee = (Structure) identification.cloner(new Structure());
660
 
661
			structureCollectee.setId(idStructureChp.getValue());
662
			structureCollectee.setNom(nomStructureChp.getValue());
277 jp_milcent 663
			// Récupération de l'identifiant du projet
1329 cyprien 664
			if (projetsCombo.getCombo().getValue() != null) {
665
				structureCollectee.setIdProjet(new Projet(projetsCombo.getValeur()).getId());
277 jp_milcent 666
			}
211 jp_milcent 667
			// Récupération de l'acronyme (= identifiant alternatif)
306 jp_milcent 668
			structureCollectee.setIdAlternatif(null);
211 jp_milcent 669
			if (comboAcronyme.getValue() != null) {
670
				String typeAcronyme = comboAcronyme.getValue().getAbr();
671
				if (typeAcronyme == "IH") {
306 jp_milcent 672
					structureCollectee.setIdAlternatif(typeAcronyme+"##"+ihChp.getValue());
211 jp_milcent 673
				} else if (typeAcronyme == "MNHN") {
306 jp_milcent 674
					structureCollectee.setIdAlternatif(typeAcronyme+"##"+mnhnChp.getValue());
211 jp_milcent 675
				}
164 jp_milcent 676
			}
211 jp_milcent 677
			// Récupération statut de la structure
306 jp_milcent 678
			structureCollectee.setTypePublic(null);
679
			structureCollectee.setTypePrive(null);
211 jp_milcent 680
			if (comboTypeStructure.getValue() != null) {
681
				String typeStructure = comboTypeStructure.getValue().getAbr();
682
				if (typeStructure == "stpu" && comboLstpu.getValue() != null) {
306 jp_milcent 683
					structureCollectee.setTypePublic(comboLstpu.getValue().getId());
211 jp_milcent 684
				} else if (typeStructure == "stpr" && comboLstpr.getValue() != null) {
306 jp_milcent 685
					structureCollectee.setTypePrive(comboLstpr.getValue().getId());
211 jp_milcent 686
				}
164 jp_milcent 687
			}
211 jp_milcent 688
 
1284 gduche 689
			String valeurDateFondation = dateFondationChp.getValue();
690
			if (!UtilString.isEmpty(valeurDateFondation))	{
691
				if (valeurDateFondation.matches("\\d{2}/\\d{2}/\\d{4}"))	{
692
					Date dateFondation = DateTimeFormat.getFormat("dd/MM/yyyy").parse(valeurDateFondation);
693
					structureCollectee.setDateFondation(dateFondation);
694
				} else if (valeurDateFondation.matches("\\d{4}"))	{
695
					structureCollectee.setDateFondation(valeurDateFondation + "-00-00");
696
				}
697
			}
698
 
1173 jpm 699
			structureCollectee.setDescription(descriptionChp.getValue());
700
			structureCollectee.setConditionAcces(conditionAccesChp.getValue());
701
			structureCollectee.setConditionUsage(conditionUsageChp.getValue());
702
 
306 jp_milcent 703
			structureCollectee.setAdresse(adrChp.getValue());
1173 jpm 704
			structureCollectee.setAdresseComplement(adrComplementChp.getValue());
306 jp_milcent 705
			structureCollectee.setCodePostal(cpChp.getValue());
706
			structureCollectee.setVille(villeChp.getValue());
1035 gduche 707
 
708
			String strRegion = "";
709
			Valeur valeurRegion = comboRegion.getValue();
710
			if (valeurRegion == null)	{
711
				strRegion = "AUTRE##" + comboRegion.getRawValue();
712
			} else	{
713
				strRegion = valeurRegion.getId();
714
			}
715
 
716
			structureCollectee.setRegion(strRegion);
306 jp_milcent 717
			structureCollectee.setPays(null);
1329 cyprien 718
			if (comboPays.getCombo().getValue() != null) {
719
				structureCollectee.setPays(new Valeur(comboPays.getValeur()).getId());
720
			} else if (comboPays.getCombo().getRawValue() != "") {
721
				structureCollectee.setPays(comboPays.getCombo().getRawValue());
211 jp_milcent 722
			}
1173 jpm 723
			structureCollectee.setLatitude(latitudeChp.getValue());
724
			structureCollectee.setLongitude(longitudeChp.getValue());
211 jp_milcent 725
 
602 jp_milcent 726
			structureCollectee.setTelephoneFixe(telChp.getValue());
306 jp_milcent 727
			structureCollectee.setFax(faxChp.getValue());
1262 cyprien 728
 
306 jp_milcent 729
			structureCollectee.setCourriel(emailChp.getValue());
730
			structureCollectee.setUrl(Structure.URL_SITE, urlChp.getValue());
211 jp_milcent 731
 
263 jp_milcent 732
			if (nbreTotalPersonneStructureChp.getValue() != null) {
306 jp_milcent 733
				structureCollectee.setNbrePersonne(nbreTotalPersonneStructureChp.getValue().intValue());
263 jp_milcent 734
			}
231 jp_milcent 735
 
306 jp_milcent 736
			if (!structureCollectee.comparer(identification)) {
737
				structureARetourner = identification = structureCollectee;
738
			}
739
 
164 jp_milcent 740
		}
306 jp_milcent 741
		return structureARetourner;
119 jpm 742
	}
743
 
211 jp_milcent 744
	private void peuplerStructureIdentification() {
295 jp_milcent 745
		if (mode.equals(MODE_AJOUTER)) {
263 jp_milcent 746
			// Indique que l'ongleta pu être modifié pour la méthode collecter...
747
			identificationOnglet.setData("acces", true);
306 jp_milcent 748
			// Initialisation de l'objet Structure
749
			identification = new Structure();
279 jp_milcent 750
			// Indication du projet sélectionné par défaut
751
			String projetCourantId = ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).getProjetId();
295 jp_milcent 752
			if (projetCourantId != null && !projetCourantId.equals("0")) {
1329 cyprien 753
				projetsCombo.getCombo().setValue(projetsCombo.getStore().findModel("cpr_id_projet", projetCourantId));
279 jp_milcent 754
			}
263 jp_milcent 755
		}
295 jp_milcent 756
		if (mode.equals(MODE_MODIFIER) && identification != null && identificationOnglet.getData("acces").equals(false)) {
211 jp_milcent 757
			idStructureChp.setValue(identification.getId());
758
			nomStructureChp.setValue(identification.getNom());
277 jp_milcent 759
			if (!identification.getIdProjet().equals("0")) {
1329 cyprien 760
				projetsCombo.getCombo().setValue(projetsCombo.getStore().findModel("cpr_id_projet", identification.getIdProjet()));
277 jp_milcent 761
			}
762
 
211 jp_milcent 763
			if (!identification.getIdAlternatif().isEmpty()) {
764
				String[] acronyme = identification.getIdAlternatif().split("##");
1043 gduche 765
				//#436 : Ne pas afficher "null"
766
				if (UtilString.isEmpty(acronyme[1]) || acronyme[1].equals("null"))	{
767
					acronyme[1] = "";
768
				}
769
 
211 jp_milcent 770
				if (acronyme[0].matches("^IH$")) {
771
					comboAcronyme.setValue(InterneValeurListe.getTypeAcronymeIH());
772
					ihChp.setValue(acronyme[1]);
773
				} else if (acronyme[0].matches("^MNHN$")) {
774
					comboAcronyme.setValue(InterneValeurListe.getTypeAcronymeMNHN());
775
					mnhnChp.setValue(acronyme[1]);
776
				}
188 jp_milcent 777
			}
211 jp_milcent 778
			if (!identification.getTypePrive().isEmpty()) {
779
				if (identification.getTypePrive().matches("^[0-9]+$")) {
780
					comboTypeStructure.setValue(InterneValeurListe.getTypePrivee());
781
					comboLstpr.setValue(comboLstpr.getStore().findModel("id_valeur", identification.getTypePrive()));
782
				}
783
			} else if (!identification.getTypePublic().isEmpty()) {
784
				if (identification.getTypePublic().matches("^[0-9]+$")) {
785
					comboTypeStructure.setValue(InterneValeurListe.getTypePublique());
786
					comboLstpu.setValue(comboLstpu.getStore().findModel("id_valeur", identification.getTypePublic()));
787
				}
172 jp_milcent 788
			}
211 jp_milcent 789
 
1284 gduche 790
			String dateFondation = identification.getAnneeOuDateFondation();
791
			if (!dateFondation.equals(""))	{
792
				if (dateFondation.endsWith("00-00"))	{
793
					dateFondationChp.setValue(dateFondation.substring(0, 4));
794
				} else {
795
					Date date = DateTimeFormat.getFormat("yyyy-MM-dd").parse(dateFondation);
796
					dateFondationChp.setValue(DateTimeFormat.getFormat("dd/MM/yyyy").format(date));
797
				}
798
			}
799
 
1173 jpm 800
			descriptionChp.setValue(identification.getDescription());
801
			conditionAccesChp.setValue(identification.getConditionAcces());
802
			conditionUsageChp.setValue(identification.getConditionUsage());
803
 
211 jp_milcent 804
			adrChp.setValue(identification.getAdresse());
1173 jpm 805
			adrComplementChp.setValue(identification.getAdresseComplement());
211 jp_milcent 806
			cpChp.setValue(identification.getCodePostal());
807
			villeChp.setValue(identification.getVille());
1035 gduche 808
			mettreAJourRegion();
809
			//(identification.getRegion());
419 jp_milcent 810
			if (identification.getPays().matches("^[0-9]+$")) {
1329 cyprien 811
				comboPays.getCombo().setValue(comboPays.getStore().findModel("cmlv_id_valeur", identification.getPays()));
211 jp_milcent 812
			} else {
1329 cyprien 813
				comboPays.getCombo().setRawValue(identification.getPays());
172 jp_milcent 814
			}
1173 jpm 815
			latitudeChp.setValue(identification.getLatitude());
816
			longitudeChp.setValue(identification.getLongitude());
211 jp_milcent 817
 
602 jp_milcent 818
			telChp.setValue(identification.getTelephoneFixe());
211 jp_milcent 819
			faxChp.setValue(identification.getFax());
1262 cyprien 820
 
211 jp_milcent 821
			emailChp.setValue(identification.getCourriel());
822
			urlChp.setValue(identification.getUrl("WEB"));
823
 
231 jp_milcent 824
			nbreTotalPersonneStructureChp.setValue(identification.getNbrePersonne());
825
 
243 jp_milcent 826
			// Indique que l'onglet a été rempli et a pu être modifié pour la méthode collecter...
827
			identificationOnglet.setData("acces", true);
172 jp_milcent 828
		}
156 jp_milcent 829
	}
830
 
111 jpm 831
	private TabItem creerOngletValorisation() {
634 jp_milcent 832
		valorisationOnglet = creerOnglet("Valorisation", "valorisation");
569 jp_milcent 833
		valorisationOnglet.setLayout(creerFormLayout(650, LabelAlign.TOP));
634 jp_milcent 834
		Listener<ComponentEvent> ecouteurSelection = new Listener<ComponentEvent>() {
835
			public void handleEvent(ComponentEvent be) {
192 jp_milcent 836
				peuplerStructureValorisation();
634 jp_milcent 837
				valorisationOnglet.layout();
838
			}
839
		};
840
		valorisationOnglet.addListener(Events.Select, ecouteurSelection);
111 jpm 841
 
119 jpm 842
		actionMarkRGrpChp = creerChoixUniqueRadioGroupe("action_mark", "ouiNon");
111 jpm 843
		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 ?");
844
		valorisationOnglet.add(actionMarkRGrpChp);
845
 
119 jpm 846
 
569 jp_milcent 847
		actionTrukCp = creerChoixMultipleCp();
111 jpm 848
		actionTrukCp.hide();
115 jpm 849
		actionTrukCacGrpChp = new CheckBoxGroup();
850
		actionTrukCacGrpChp.setFieldLabel("Si oui, lesquelles ?");
111 jpm 851
		valorisationOnglet.add(actionTrukCp);
1322 gduche 852
		mediateur.obtenirListeValeurEtRafraichir(this, "actionValorisation", sequenceur);
853
		mediateur.obtenirListeValeurEtRafraichir(this, "statut", sequenceur);
111 jpm 854
 
206 jp_milcent 855
		publicationChp = new TextArea();
111 jpm 856
		publicationChp.setFieldLabel("Quelques titres des ouvrages, articles scientifiques, ...");
206 jp_milcent 857
		valorisationOnglet.add(publicationChp, new FormData(550, 0));
111 jpm 858
 
569 jp_milcent 859
		autreCollectionTrukCp = creerChoixMultipleCp();
119 jpm 860
		autreCollectionTrukCacGrpChp = new CheckBoxGroup();
861
		autreCollectionTrukCacGrpChp.setFieldLabel("L'organisme dispose-t-il d'autres collections (permettant une valorisation pluridisciplinaire) ?");
111 jpm 862
		valorisationOnglet.add(autreCollectionTrukCp);
1322 gduche 863
		mediateur.obtenirListeValeurEtRafraichir(this, "autreCollection", sequenceur);
111 jpm 864
 
188 jp_milcent 865
		futureActionMarkRGrpChp = creerChoixUniqueRadioGroupe("future_action_mark", "ouiNon");
111 jpm 866
		futureActionMarkRGrpChp.setFieldLabel("Envisagez vous des actions de valorisation dans le cadre de votre politique culturelle ?");
867
		valorisationOnglet.add(futureActionMarkRGrpChp);
868
 
206 jp_milcent 869
		futureActionChp = new TextArea();
111 jpm 870
		futureActionChp.setFieldLabel("Si oui, lesquelles ?");
871
		futureActionChp.hide();
306 jp_milcent 872
		futureActionChp.addListener(Events.Hide, new Listener<BaseEvent>() {
873
 
874
			public void handleEvent(BaseEvent be) {
491 gduche 875
				((TextArea) be.getSource()).setValue("");
306 jp_milcent 876
			}
877
 
878
		});
206 jp_milcent 879
		valorisationOnglet.add(futureActionChp, new FormData(550, 0));
111 jpm 880
 
188 jp_milcent 881
		rechercheMarkRGrpChp = creerChoixUniqueRadioGroupe("recherche_mark", "ouiNon");
111 jpm 882
		rechercheMarkRGrpChp.setFieldLabel("Vos collections botaniques sont-elles utilisées pour des recherches scientifiques ?");
883
		valorisationOnglet.add(rechercheMarkRGrpChp);
884
 
569 jp_milcent 885
		provenanceRechercheTrukCp = creerChoixMultipleCp();
111 jpm 886
		provenanceRechercheTrukCp.hide();
115 jpm 887
		provenanceRechercheTrukCacGrpChp = new CheckBoxGroup();
888
		provenanceRechercheTrukCacGrpChp.setFieldLabel("Si oui, par des chercheurs (professionnels ou amateurs) de quelle provenance ?");
111 jpm 889
		valorisationOnglet.add(provenanceRechercheTrukCp);
1322 gduche 890
		mediateur.obtenirListeValeurEtRafraichir(this, "continentEtFr", sequenceur);
111 jpm 891
 
569 jp_milcent 892
		typeRechercheTrukCp = creerChoixMultipleCp();
119 jpm 893
		typeRechercheTrukCp.hide();
115 jpm 894
		typeRechercheTrukCacGrpChp = new CheckBoxGroup();
895
		typeRechercheTrukCacGrpChp.setFieldLabel("Et pour quelles recherches ?");
119 jpm 896
		valorisationOnglet.add(typeRechercheTrukCp);
1322 gduche 897
		mediateur.obtenirListeValeurEtRafraichir(this, "typeRecherche", sequenceur);
111 jpm 898
 
188 jp_milcent 899
		sansMotifAccesMarkRGrpChp = creerChoixUniqueRadioGroupe("sans_motif_acces_mark", "ouiNon");
111 jpm 900
		sansMotifAccesMarkRGrpChp.setFieldLabel("Peut-on consulter vos collections botaniques sans motif de recherches scientifiques ?");
901
		valorisationOnglet.add(sansMotifAccesMarkRGrpChp);
902
 
206 jp_milcent 903
		valorisationOnglet.add(sansMotifAccesChp = new TextArea(), new FormData(550, 0));
111 jpm 904
		sansMotifAccesChp.hide();
306 jp_milcent 905
		sansMotifAccesChp.addListener(Events.Hide, new Listener<BaseEvent>() {
906
 
907
			public void handleEvent(BaseEvent be) {
491 gduche 908
				((TextArea) be.getSource()).setValue("");
306 jp_milcent 909
			}
910
 
911
		});
111 jpm 912
		sansMotifAccesChp.setFieldLabel("Si oui, quelles démarches doit-on faire pour les consulter ?");
913
 
188 jp_milcent 914
		avecMotifAccesMarkRGrpChp = creerChoixUniqueRadioGroupe("avec_motif_acces_mark", "ouiNon");
111 jpm 915
		avecMotifAccesMarkRGrpChp.setFieldLabel("Peut-on visiter vos collections botaniques avec des objectifs de recherches scientifiques ?");
916
		valorisationOnglet.add(avecMotifAccesMarkRGrpChp);
917
 
206 jp_milcent 918
		valorisationOnglet.add(avecMotifAccesChp = new TextArea(), new FormData(550, 0));
111 jpm 919
		avecMotifAccesChp.hide();
306 jp_milcent 920
		avecMotifAccesChp.addListener(Events.Hide, new Listener<BaseEvent>() {
921
 
922
			public void handleEvent(BaseEvent be) {
491 gduche 923
				((TextArea) be.getSource()).setValue("");
306 jp_milcent 924
			}
925
 
926
		});
111 jpm 927
		avecMotifAccesChp.setFieldLabel("Si oui, quelles démarches doit-on faire pour les visiter ?");
928
 
929
		return valorisationOnglet;
930
	}
931
 
108 jpm 932
	private TabItem creerOngletConservation() {
634 jp_milcent 933
		conservationOnglet = creerOnglet("Conservation", "conservation");
569 jp_milcent 934
		conservationOnglet.setLayout(creerFormLayout(650, LabelAlign.TOP));
634 jp_milcent 935
		Listener<ComponentEvent> ecouteurSelection = new Listener<ComponentEvent>() {
936
			public void handleEvent(ComponentEvent be) {
206 jp_milcent 937
				peuplerStructureConservation();
279 jp_milcent 938
				conservationOnglet.layout();
192 jp_milcent 939
			}
634 jp_milcent 940
		};
941
		conservationOnglet.addListener(Events.Select, ecouteurSelection);
108 jpm 942
 
188 jp_milcent 943
		formationMarkRGrpChp = creerChoixUniqueRadioGroupe("formation_mark", "ouiNon");
944
		formationMarkRGrpChp.setFieldLabel("Le personnel s'occupant des collections a-t-il suivi des formations en conservations ?");
945
		conservationOnglet.add(formationMarkRGrpChp);
108 jpm 946
 
401 jp_milcent 947
		formationChp = new TextArea();
111 jpm 948
		formationChp.hide();
306 jp_milcent 949
		formationChp.addListener(Events.Hide, new Listener<BaseEvent>() {
950
 
951
			public void handleEvent(BaseEvent be) {
491 gduche 952
				((TextArea) be.getSource()).setValue("");
306 jp_milcent 953
			}
954
 
955
		});
111 jpm 956
		formationChp.setFieldLabel("Si oui, lesquelles ?");
108 jpm 957
		conservationOnglet.add(formationChp);
958
 
188 jp_milcent 959
		interetFormationMarkRGrpChp = creerChoixUniqueRadioGroupe("interet_formation_mark", "ouiNon");
960
		interetFormationMarkRGrpChp.setFieldLabel("Seriez vous intéressé par une formation à la conservation et à la restauration d'herbier ?");
961
		conservationOnglet.add(interetFormationMarkRGrpChp);
108 jpm 962
 
115 jpm 963
		localStockageTrukCacGrpChp = new CheckBoxGroup();
964
		localStockageTrukCacGrpChp.setFieldLabel("Avez vous des locaux spécifiques de stockage des collections botaniques ?");
569 jp_milcent 965
		localStockageTrukCp = creerChoixMultipleCp();
115 jpm 966
		conservationOnglet.add(localStockageTrukCp);
1322 gduche 967
		mediateur.obtenirListeValeurEtRafraichir(this, "localStockage", sequenceur);
108 jpm 968
 
569 jp_milcent 969
		meubleStockageTrukCp = creerChoixMultipleCp();
115 jpm 970
		meubleStockageTrukCacGrpChp = new CheckBoxGroup();
971
		meubleStockageTrukCacGrpChp.setFieldLabel("Avez vous des meubles spécifiques au stockage des collections botaniques ?");
972
		conservationOnglet.add(meubleStockageTrukCp);
1322 gduche 973
		mediateur.obtenirListeValeurEtRafraichir(this, "meubleStockage", sequenceur);
108 jpm 974
 
569 jp_milcent 975
		parametreStockageTrukCp = creerChoixMultipleCp();
115 jpm 976
		parametreStockageTrukCacGrpChp = new CheckBoxGroup();
977
		parametreStockageTrukCacGrpChp.setFieldLabel("Quels paramètres maîtrisez vous ?");
978
		conservationOnglet.add(parametreStockageTrukCp);
1322 gduche 979
		mediateur.obtenirListeValeurEtRafraichir(this, "parametreStockage", sequenceur);
109 jpm 980
 
188 jp_milcent 981
		collectionCommuneMarkRGrpChp = creerChoixUniqueRadioGroupe("collection_commune_mark", "ouiNon");
111 jpm 982
		collectionCommuneMarkRGrpChp.setFieldLabel("Les collections botaniques sont-elles conservées avec d'autres collections  dans les mêmes locaux (problème de conservation en commun) ?");
983
		conservationOnglet.add(collectionCommuneMarkRGrpChp);
109 jpm 984
 
569 jp_milcent 985
		collectionAutreTrukCp = creerChoixMultipleCp();
115 jpm 986
		collectionAutreTrukCacGrpChp = new CheckBoxGroup();
987
		collectionAutreTrukCacGrpChp.setFieldLabel("Si oui, lesquelles ?");
111 jpm 988
		collectionAutreTrukCp.hide();
989
		conservationOnglet.add(collectionAutreTrukCp);
1322 gduche 990
		mediateur.obtenirListeValeurEtRafraichir(this, "autreCollection", sequenceur);
110 jpm 991
 
188 jp_milcent 992
		accesControleMarkRGrpChp = creerChoixUniqueRadioGroupe("mark_acces_controle", "ouiNon");
115 jpm 993
		accesControleMarkRGrpChp.setFieldLabel("L'accès à vos collections botanique est-il contrôlé (ex. : manipulation réservées à des personnes compétentes) ?");
994
		conservationOnglet.add(accesControleMarkRGrpChp);
110 jpm 995
 
188 jp_milcent 996
		restaurationMarkRGrpChp = creerChoixUniqueRadioGroupe("restauration_mark", "ouiNon");
115 jpm 997
		restaurationMarkRGrpChp.setFieldLabel("Effectuez vous des opérations de restauration ou de remise en état de vos collections botaniques ?");
998
		conservationOnglet.add(restaurationMarkRGrpChp);
110 jpm 999
 
569 jp_milcent 1000
		opRestauTrukCp = creerChoixMultipleCp();
115 jpm 1001
		opRestauTrukCacGrpChp = new CheckBoxGroup();
1002
		opRestauTrukCacGrpChp.setFieldLabel("Si oui, lesquelles ?");
111 jpm 1003
		opRestauTrukCp.hide();
1004
		conservationOnglet.add(opRestauTrukCp);
1322 gduche 1005
		mediateur.obtenirListeValeurEtRafraichir(this, "opRestau", sequenceur);
110 jpm 1006
 
188 jp_milcent 1007
		// Création d'un ContentPanel vide et du groupe de bouton radio
1008
		// 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 1009
		materielConservationCp = creerChoixMultipleCp();
188 jp_milcent 1010
		conservationOnglet.add(materielConservationCp);
115 jpm 1011
		materielConservationCeRGrpChp = creerChoixUniqueRadioGroupe("materiel_conservation_ce", "onep");
1012
		materielConservationCeRGrpChp.setFieldLabel("Utilisez vous du matériel de conservation ?");
1013
		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 1014
		mediateur.obtenirListeValeurEtRafraichir(this, "onep", sequenceur);
110 jpm 1015
 
569 jp_milcent 1016
		autreMaterielTrukCp = creerChoixMultipleCp();
115 jpm 1017
		autreMaterielTrukCacGrpChp = new CheckBoxGroup();
1018
		autreMaterielTrukCacGrpChp.setFieldLabel("Si non, qu'utilisez vous comme matériel ?");
428 jp_milcent 1019
		autreMaterielTrukCp.hide();
115 jpm 1020
		conservationOnglet.add(autreMaterielTrukCp);
1322 gduche 1021
		mediateur.obtenirListeValeurEtRafraichir(this, "autreMateriel", sequenceur);
110 jpm 1022
 
188 jp_milcent 1023
		traitementMarkRGrpChp = creerChoixUniqueRadioGroupe("traitement_mark", "ouiNon");
1024
		traitementMarkRGrpChp.setFieldLabel("Réalisez vous actuellement des traitements globaux contre les insectes ?");
1025
		conservationOnglet.add(traitementMarkRGrpChp);
110 jpm 1026
 
569 jp_milcent 1027
		traitementTrukCp = creerChoixMultipleCp();
115 jpm 1028
		traitementTrukCp.hide();
1029
		traitementTrukCacGrpChp = new CheckBoxGroup();
1030
		traitementTrukCacGrpChp.setFieldLabel("Si oui, lesquels ?");
111 jpm 1031
		conservationOnglet.add(traitementTrukCp);
1322 gduche 1032
		mediateur.obtenirListeValeurEtRafraichir(this, "insecteTraitement", sequenceur);
110 jpm 1033
 
188 jp_milcent 1034
		collectionAcquisitionMarkRGrpChp = creerChoixUniqueRadioGroupe("collection_acquisition_mark", "ouiNon");
1035
		collectionAcquisitionMarkRGrpChp.setFieldLabel("Actuellement, vos collections botaniques s'accroissent-elles de nouvelles acquisitions ?");
1036
		conservationOnglet.add(collectionAcquisitionMarkRGrpChp);
110 jpm 1037
 
188 jp_milcent 1038
		echantillonAcquisitionMarkRGrpChp = creerChoixUniqueRadioGroupe("echantillon_acquisition_mark", "ouiNon");
1039
		echantillonAcquisitionMarkRGrpChp.setFieldLabel("Actuellement, mettez vous en herbier de nouveaux échantillons ?");
1040
		conservationOnglet.add(echantillonAcquisitionMarkRGrpChp);
110 jpm 1041
 
115 jpm 1042
		traitementAcquisitionMarkRGrpChp = creerChoixUniqueRadioGroupe("traitement_acquisition_mark", "ouiNon");
1043
		traitementAcquisitionMarkRGrpChp.hide();
1044
		traitementAcquisitionMarkRGrpChp.setFieldLabel("Si oui, faites-vous un traitement contre les insectes avant l'intégration dans vos collections ?");
1045
		conservationOnglet.add(traitementAcquisitionMarkRGrpChp);
110 jpm 1046
 
115 jpm 1047
		traitementAcquisitionMarkLabel = new LabelField();
1048
		traitementAcquisitionMarkLabel.hide();
1049
		traitementAcquisitionMarkLabel.setFieldLabel("Si oui, lesquels ?");
1050
		conservationOnglet.add(traitementAcquisitionMarkLabel);
110 jpm 1051
 
569 jp_milcent 1052
		poisonTraitementTrukCp = creerChoixMultipleCp();
115 jpm 1053
		poisonTraitementTrukCp.hide();
1054
		poisonTraitementTrukCacGrpChp = new CheckBoxGroup();
1055
		poisonTraitementTrukCacGrpChp.setFieldLabel("Empoisonnement");
1056
		poisonTraitementTrukCacGrpChp.setLabelStyle("font-weight:normal;text-decoration:underline;");
1057
		poisonTraitementTrukCacGrpChp.setLabelSeparator("");
1058
		conservationOnglet.add(poisonTraitementTrukCp);
1322 gduche 1059
		mediateur.obtenirListeValeurEtRafraichir(this, "poisonTraitement", sequenceur);
110 jpm 1060
 
569 jp_milcent 1061
		insecteTraitementTrukCp = creerChoixMultipleCp();
115 jpm 1062
		insecteTraitementTrukCp.hide();
1063
		insecteTraitementTrukCacGrpChp = new CheckBoxGroup();
1064
		insecteTraitementTrukCacGrpChp.setLabelStyle("font-weight:normal;text-decoration:underline;");
1065
		insecteTraitementTrukCacGrpChp.setLabelSeparator("");
1066
		insecteTraitementTrukCacGrpChp.setFieldLabel("Désinsectisation");
111 jpm 1067
		conservationOnglet.add(insecteTraitementTrukCp);
1322 gduche 1068
		mediateur.obtenirListeValeurEtRafraichir(this, "insecteTraitement", sequenceur);
110 jpm 1069
 
579 jp_milcent 1070
		conservationOnglet.add(new Html("<br />"));
108 jpm 1071
		return conservationOnglet;
1072
	}
1073
 
231 jp_milcent 1074
	private void collecterStructurePersonnel() {
1075
		if (personnelOnglet.getData("acces").equals(true)) {
771 jpm 1076
			personnelGrilleMagazin.commitChanges();
231 jp_milcent 1077
			int nbrePersonne = personnelGrilleMagazin.getCount();
1078
			for (int i = 0; i < nbrePersonne; i++) {
1079
				StructureAPersonne personne = personnelGrilleMagazin.getAt(i);
1210 cyprien 1080
 
231 jp_milcent 1081
				// Seules les lignes ajoutées ou modifiées sont prises en compte.
771 jpm 1082
				Record record = personnelGrilleMagazin.getRecord(personne);
1083
				if (personnelGrilleMagazin.getModifiedRecords().contains(record) == true
1210 cyprien 1084
						|| (personne.get("etat") != null && (personne.get("etat").equals(StructureAPersonne.ETAT_AJOUTE) || personne.get("etat").equals(StructureAPersonne.ETAT_MODIFIE)) )) {
245 jp_milcent 1085
 
1086
					// Gestion de l'id de la structure
1087
					if (mode.equals("MODIF")) {
1088
						personne.setIdStructure(identification.getId());
1089
					}
609 jp_milcent 1090
 
1091
					// Récupération de l'id du projet de la structure qui servira aussi pour les Personnes crées dans ce formulaire
1329 cyprien 1092
					if (personne.getIdPersonne().equals("") && projetsCombo.getCombo().getValue() != null) {
1093
						personne.setIdProjetPersonne(new Projet(projetsCombo.getValeur()).getId());
609 jp_milcent 1094
					}
1095
 
231 jp_milcent 1096
					// Gestion de la fonction
1097
					String fonction = personne.get("fonction");
1098
					if (fonction != null && !fonction.equals("")) {
295 jp_milcent 1099
						Valeur valeurRecherche = fonctionsCombo.getStore().findModel("nom", fonction);
231 jp_milcent 1100
						if (valeurRecherche != null) {
1101
							personne.setFonction(valeurRecherche.getId());
1102
						} else {
1103
							personne.setFonction("AUTRE", fonction);
1104
						}
602 jp_milcent 1105
					} else {
1106
						personne.setFonction("");
231 jp_milcent 1107
					}
1210 cyprien 1108
 
1109
					// Gestion du nom complet
1110
					String nomComplet = personne.getPrenom()+" "+personne.getNom();
1111
					personne.setNomComplet(nomComplet);
231 jp_milcent 1112
 
1113
					// Gestion de la notion de "contact"
1114
					personne.setContact(false);
1115
					if (personne.get("contact").equals(true)) {
1116
						personne.setContact(true);
1117
					}
1118
 
1119
					// Gestion du statut
1120
					String statut = personne.get("statut");
1121
					if (statut != null && !statut.equals("")) {
1122
						Valeur valeurRecherche = comboLiStatut.getStore().findModel("nom", statut);
1123
						if (valeurRecherche != null) {
1124
							personne.setStatut(valeurRecherche.getId());
1125
						} else {
1126
							personne.setStatut("AUTRE", statut);
1127
						}
602 jp_milcent 1128
					} else {
1129
						personne.setStatut("");
231 jp_milcent 1130
					}
1131
 
1132
					// Gestion du temps de travail
602 jp_milcent 1133
					personne.setBotaTravailHebdoTps(personne.get("travail").toString());
231 jp_milcent 1134
 
1135
					// Gestion du téléphone
602 jp_milcent 1136
					String telephoneFixe = personne.get("tel_fix");
1137
					personne.setTelephoneFixe(telephoneFixe);
231 jp_milcent 1138
 
1139
					// Gestion du fax
602 jp_milcent 1140
					String fax = personne.get("tel_fax");
1141
					personne.setFax(fax);
1142
 
231 jp_milcent 1143
					// Gestion du courriel
1144
					String courriel = personne.get("courriel");
602 jp_milcent 1145
					personne.setCourriel(courriel);
231 jp_milcent 1146
 
602 jp_milcent 1147
					// Gestion de la spécialité
231 jp_milcent 1148
					String specialite = personne.get("specialite");
602 jp_milcent 1149
					personne.setSpecialite(specialite);
231 jp_milcent 1150
 
1329 cyprien 1151
					// On met à faux le décès
1152
					personne.setDeces(Personne.ETRE_VIVANT);
1153
 
231 jp_milcent 1154
					// Ajout de la personne dans la liste correspondant à son état (ajouté ou modifié)
1329 cyprien 1155
					if (personne.get("etat") != null && personne.get("etat").equals(StructureAPersonne.ETAT_AJOUTE)) { // Une personne ajoutée
231 jp_milcent 1156
						personnelAjoute.put(""+i, personne);
1157
					} else {// Une personne modifiée
1158
						personnelModifie.put(personne.getId(), personne);
1159
					}
245 jp_milcent 1160
				} else {
1161
					GWT.log("Personne non modifiées : "+personne.getPrenom()+" "+personne.getNom(), null);
231 jp_milcent 1162
				}
1163
			}
1164
		}
1165
	}
211 jp_milcent 1166
 
1167
	private void peuplerStructurePersonnel() {
295 jp_milcent 1168
		if (mode.equals(MODE_MODIFIER) && personnel != null) {
213 jp_milcent 1169
			ArrayList<StructureAPersonne> personnes = new ArrayList<StructureAPersonne>();
1170
			for (Iterator<String> it = personnel.keySet().iterator(); it.hasNext();) {
1171
				String index = it.next();
231 jp_milcent 1172
 
1173
				// Gestion de la fonction
295 jp_milcent 1174
				if (fonctionsMagazin != null && !((String) personnel.get(index).getFonction()).startsWith("AUTRE##")) {
1175
					if (fonctionsMagazin.findModel("id_valeur", personnel.get(index).getFonction()) != null) {
1176
						personnel.get(index).set("fonction", fonctionsMagazin.findModel("id_valeur", personnel.get(index).getFonction()).getNom());
243 jp_milcent 1177
					}
213 jp_milcent 1178
				} else {
214 jp_milcent 1179
					personnel.get(index).set("fonction", personnel.get(index).getFonction().replaceFirst("AUTRE##", ""));
213 jp_milcent 1180
				}
231 jp_milcent 1181
 
1182
				// Gestion de la notion de "contact"
1183
				personnel.get(index).set("contact", (personnel.get(index).getContact().equals("1") ? true : false));
1184
 
1185
				// Gestion du statut
1186
				if (magazinLiStatut != null && ((String) personnel.get(index).getStatut()).matches("^[0-9]+$")) {
1187
					personnel.get(index).set("statut", magazinLiStatut.findModel("id_valeur", personnel.get(index).getStatut()).getNom());
1188
				} else {
1189
					personnel.get(index).set("statut", personnel.get(index).getStatut().replaceFirst("AUTRE##", ""));
1190
				}
1210 cyprien 1191
				// Gestion de la specialite
1192
				if (((String) personnel.get(index).getSpecialite()).matches("^[0-9]+$")) {
1193
					// Author : Cyprien
1194
					// TODO
1195
					// Ici faire un combobox ?
1196
					// ...
1197
				} else {
1198
					personnel.get(index).set("specialite", personnel.get(index).getSpecialite().replaceFirst("AUTRE##", ""));
1199
				}
1200
 
231 jp_milcent 1201
				// Gestion du temps de travail
1202
				String tps = personnel.get(index).getBotaTravailHebdoTps();
1203
				personnel.get(index).set("travail", (tps.matches("^[0-9]+$")  ? Integer.parseInt(tps) : 0));
1204
 
213 jp_milcent 1205
				personnes.add(personnel.get(index));
1206
			}
211 jp_milcent 1207
			personnelGrilleMagazin.removeAll();
213 jp_milcent 1208
			personnelGrilleMagazin.add(personnes);
231 jp_milcent 1209
 
214 jp_milcent 1210
			// Nous vidons la variable personnel une fois qu'elle a remplie la grille
1211
			personnel = null;
211 jp_milcent 1212
		}
1213
	}
1214
 
103 jpm 1215
	private TabItem creerOngletPersonnel() {
306 jp_milcent 1216
		// Création des objets contenant les manipulations de la grille
1217
		personnelModifie = new StructureAPersonneListe();
1218
		personnelAjoute = new StructureAPersonneListe();
1219
		personnelSupprime = new StructureAPersonneListe();
1220
 
634 jp_milcent 1221
		personnelOnglet = creerOnglet("Personnel", "personnel");
569 jp_milcent 1222
		personnelOnglet.setLayout(creerFormLayout(400, LabelAlign.LEFT));
739 jpm 1223
		personnelOnglet.setStyleAttribute("padding", "0");
634 jp_milcent 1224
		personnelOnglet.addListener(Events.Select, new Listener<ComponentEvent>() {
1225
			public void handleEvent(ComponentEvent be) {
1210 cyprien 1226
 
211 jp_milcent 1227
				// Indique que l'onglet a été rempli et a pu être modifié pour la méthode collecter...
1228
				personnelOnglet.setData("acces", true);
306 jp_milcent 1229
 
609 jp_milcent 1230
				// Rafraichissement du contenu de la grille du personnel
1231
				if (mode.equals(MODE_AJOUTER)) {
1232
					rafraichirPersonnel();
1233
				}
211 jp_milcent 1234
			}
1235
		});
103 jpm 1236
 
211 jp_milcent 1237
		ContentPanel cp = new ContentPanel();
231 jp_milcent 1238
		cp.setHeading("Personnes travaillant sur les collections");
569 jp_milcent 1239
		cp.setIcon(Images.ICONES.table());
1284 gduche 1240
		cp.setScrollMode(Scroll.AUTO);
231 jp_milcent 1241
		cp.setLayout(new FitLayout());
559 jp_milcent 1242
		//cp.setWidth(1250);
1243
		//cp.setHeight("100%");
231 jp_milcent 1244
		cp.setFrame(true);
103 jpm 1245
 
231 jp_milcent 1246
		personnelGrilleMagazin = new ListStore<StructureAPersonne>();
1210 cyprien 1247
		personnelGrilleMagazin.setMonitorChanges(true);
1248
 
245 jp_milcent 1249
		personnelGrilleMagazin.addListener(Store.Add, new Listener<StoreEvent<StructureAPersonne>>() {
1250
			public void handleEvent(StoreEvent<StructureAPersonne> ce) {
1251
				// Activation du bouton supprimer si la grille contient un élément
1252
				if (grillePersonnel.getStore().getCount() > 0) {
1253
					supprimerPersonnelBtn.enable();
1254
				}
1255
 
1256
			}
1257
		});
231 jp_milcent 1258
 
1210 cyprien 1259
 
231 jp_milcent 1260
		RowNumberer r = new RowNumberer();
1261
 
102 jpm 1262
		List<ColumnConfig> configs = new ArrayList<ColumnConfig>();
1263
 
231 jp_milcent 1264
		GridSelectionModel<StructureAPersonne> sm = new GridSelectionModel<StructureAPersonne>();
1265
		configs.add(r);
103 jpm 1266
 
214 jp_milcent 1267
		ColumnConfig column = new ColumnConfig("fonction", "Fonction", 150);
295 jp_milcent 1268
		fonctionsMagazin = new ListStore<Valeur>();
103 jpm 1269
 
295 jp_milcent 1270
		fonctionsCombo = new ComboBox<Valeur>();
1271
		fonctionsCombo.setTriggerAction(TriggerAction.ALL);
1272
		fonctionsCombo.setEditable(true);
1273
		fonctionsCombo.setDisplayField("nom");
1274
		fonctionsCombo.setStore(fonctionsMagazin);
1322 gduche 1275
		mediateur.obtenirListeValeurEtRafraichir(this, "fonction", sequenceur);
103 jpm 1276
 
295 jp_milcent 1277
		fonctionEditor = new CellEditor(fonctionsCombo) {
103 jpm 1278
			@Override
211 jp_milcent 1279
			public Object preProcessValue(Object valeur) {
295 jp_milcent 1280
				Valeur retour = null;
1281
 
1282
				if (valeur != null) {
1283
					String chaineTransmise = (String) valeur;
1284
					if (fonctionsMagazin.getCount() == 0 && fonctionsListe != null) {
1285
						fonctionsMagazin.add(fonctionsListe);
1286
					}
1287
					if (fonctionsMagazin.findModel("id_valeur", chaineTransmise) != null) {
1288
						retour = fonctionsMagazin.findModel("id_valeur", chaineTransmise);
1289
					} else if (fonctionsMagazin.findModel("nom", chaineTransmise) != null) {
1290
						retour = fonctionsMagazin.findModel("nom", chaineTransmise);
213 jp_milcent 1291
					} else {
295 jp_milcent 1292
						retour = new Valeur("", chaineTransmise, "", "");
213 jp_milcent 1293
					}
211 jp_milcent 1294
				}
213 jp_milcent 1295
 
211 jp_milcent 1296
				return retour;
103 jpm 1297
			}
1298
 
1299
			@Override
211 jp_milcent 1300
			public Object postProcessValue(Object valeur) {
295 jp_milcent 1301
				String retour = "";
1302
				Valeur fonctionTrouvee = null;
211 jp_milcent 1303
				if (valeur == null) {
295 jp_milcent 1304
					String valeurBrute = this.getField().getRawValue();
1305
					if (fonctionsMagazin.getCount() == 0 && fonctionsListe != null) {
1306
						fonctionsMagazin.add(fonctionsListe);
213 jp_milcent 1307
					}
295 jp_milcent 1308
					if (valeurBrute.matches("^[0-9]+$") && fonctionsMagazin.findModel("id_valeur", valeurBrute) != null) {
1309
						fonctionTrouvee = fonctionsMagazin.findModel("id_valeur", valeurBrute);
1310
					} else {
1311
						retour = valeurBrute;
211 jp_milcent 1312
					}
295 jp_milcent 1313
				} else if (valeur instanceof Valeur) {
1314
					fonctionTrouvee = (Valeur) valeur;
103 jpm 1315
				}
295 jp_milcent 1316
 
1317
				if (fonctionTrouvee != null) {
1318
					retour = fonctionTrouvee.getNom();
1319
				}
1320
 
1321
				return retour;
211 jp_milcent 1322
			}
103 jpm 1323
		};
1324
		column.setEditor(fonctionEditor);
102 jpm 1325
		configs.add(column);
1326
 
243 jp_milcent 1327
		column = new ColumnConfig("prenom", "Prénom", 100);
103 jpm 1328
		TextField<String> prenomChp = new TextField<String>();
1329
		prenomChp.setAllowBlank(false);
1330
		prenomChp.getMessages().setBlankText("Ce champ est obligatoire.");
980 jpm 1331
		prenomChp.setAutoValidate(true);
981 jpm 1332
		prenomChp.addStyleName(ComposantClass.OBLIGATOIRE);
980 jpm 1333
		prenomChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
103 jpm 1334
		column.setEditor(new CellEditor(prenomChp));
102 jpm 1335
		configs.add(column);
1336
 
243 jp_milcent 1337
		column = new ColumnConfig("nom", "Nom", 100);
103 jpm 1338
		TextField<String> nomChp = new TextField<String>();
1339
		nomChp.setAllowBlank(false);
1340
		nomChp.getMessages().setBlankText("Ce champ est obligatoire.");
980 jpm 1341
		nomChp.setAutoValidate(true);
981 jpm 1342
		nomChp.addStyleName(ComposantClass.OBLIGATOIRE);
980 jpm 1343
		nomChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
103 jpm 1344
		column.setEditor(new CellEditor(nomChp));
102 jpm 1345
		configs.add(column);
1346
 
602 jp_milcent 1347
		column = new ColumnConfig("tel_fix", "Téléphone fixe", 100);
103 jpm 1348
		TextField<String> telChp = new TextField<String>();
1349
		column.setEditor(new CellEditor(telChp));
102 jpm 1350
		configs.add(column);
1351
 
602 jp_milcent 1352
		column = new ColumnConfig("tel_fax", "Fax", 100);
103 jpm 1353
		TextField<String> faxChp = new TextField<String>();
1354
		column.setEditor(new CellEditor(faxChp));
102 jpm 1355
		configs.add(column);
1356
 
214 jp_milcent 1357
		column = new ColumnConfig("courriel", "Courriel principal", 200);
103 jpm 1358
		TextField<String> emailChp = new TextField<String>();
1359
		column.setEditor(new CellEditor(emailChp));
102 jpm 1360
		configs.add(column);
1361
 
103 jpm 1362
		magazinLiStatut = new ListStore<Valeur>();
1363
		magazinLiStatut.add(new ArrayList<Valeur>());
1364
 
1365
		comboLiStatut = new ComboBox<Valeur>();
1366
		comboLiStatut.setTriggerAction(TriggerAction.ALL);
1367
		comboLiStatut.setEditable(false);
214 jp_milcent 1368
		comboLiStatut.disableTextSelection(true);
103 jpm 1369
		comboLiStatut.setDisplayField("nom");
1370
		comboLiStatut.setStore(magazinLiStatut);
1322 gduche 1371
		mediateur.obtenirListeValeurEtRafraichir(this, "statut", sequenceur);
103 jpm 1372
 
1373
		CellEditor statutEditor = new CellEditor(comboLiStatut) {
1374
			@Override
1375
			public Object preProcessValue(Object value) {
1376
				if (value == null) {
1377
					return value;
1378
				}
1379
				return comboLiStatut.getStore().findModel("nom", (String) value);
1380
			}
1381
 
1382
			@Override
1383
			public Object postProcessValue(Object value) {
1384
				if (value == null) {
1385
					return value;
1386
				}
1387
				return ((Valeur) value).get("nom");
1388
			}
214 jp_milcent 1389
		};
103 jpm 1390
		column = new ColumnConfig("statut", "Statut", 100);
1391
		column.setEditor(statutEditor);
102 jpm 1392
		configs.add(column);
1393
 
1329 cyprien 1394
		column = new ColumnConfig("travail", "Travail hebdo (%)", 100);
103 jpm 1395
		column.setNumberFormat(NumberFormat.getFormat("##"));
1396
		NumberField tpsWChp = new NumberField();
1397
		tpsWChp.setFormat(NumberFormat.getFormat("##"));
1398
		tpsWChp.setToolTip("Ce champ doit contenir un nombre");
1399
		column.setEditor(new CellEditor(tpsWChp));
1400
		configs.add(column);
1401
 
211 jp_milcent 1402
		column = new ColumnConfig("specialite", "Spécialité principale", 150);
103 jpm 1403
		TextField<String> speChp = new TextField<String>();
1404
		column.setEditor(new CellEditor(speChp));
1405
		configs.add(column);
1406
 
211 jp_milcent 1407
		CheckColumnConfig checkColumn = new CheckColumnConfig("contact", "Contact ?", 60);
102 jpm 1408
		configs.add(checkColumn);
1409
 
1410
		ToolBar toolBar = new ToolBar();
103 jpm 1411
 
491 gduche 1412
		Button ajouterPersonnelBtn = new Button("Ajouter");
569 jp_milcent 1413
		ajouterPersonnelBtn.setIcon(Images.ICONES.vcardAjouter());
491 gduche 1414
		ajouterPersonnelBtn.addSelectionListener(new SelectionListener<ButtonEvent>() {
103 jpm 1415
			@Override
491 gduche 1416
			public void componentSelected(ButtonEvent ce) {
295 jp_milcent 1417
				StructureAPersonne membreDuPersonnel = new StructureAPersonne("", StructureAPersonne.ROLE_EQUIPE, StructureAPersonne.ETAT_AJOUTE);
1418
				ajouterMembreAGrillePersonnel(membreDuPersonnel);
103 jpm 1419
			}
1420
		});
1421
		toolBar.add(ajouterPersonnelBtn);
243 jp_milcent 1422
 
103 jpm 1423
		toolBar.add(new SeparatorToolItem());
243 jp_milcent 1424
 
491 gduche 1425
		supprimerPersonnelBtn = new Button("Supprimer");
569 jp_milcent 1426
		supprimerPersonnelBtn.setIcon(Images.ICONES.vcardSupprimer());
491 gduche 1427
		supprimerPersonnelBtn.addSelectionListener(new SelectionListener<ButtonEvent>() {
103 jpm 1428
			@Override
491 gduche 1429
			public void componentSelected(ButtonEvent ce) {
231 jp_milcent 1430
				StructureAPersonne personne = grillePersonnel.getSelectionModel().getSelectedItem();
1431
				if (personne != null) {
1432
					// Ajout de la personne supprimée à la liste
243 jp_milcent 1433
					if (personne.getIdPersonne() != null && !personne.getIdPersonne().equals("")) {
231 jp_milcent 1434
						personnelSupprime.put(personne.getId(), personne);
1435
					}
1436
 
1437
					// Suppression de l'enregistrement de la grille
1438
					grillePersonnel.getStore().remove(personne);
1439
 
1440
					// Désactivation du bouton supprimer si la grille contient plus d'élément
1441
					if (grillePersonnel.getStore().getCount() == 0) {
491 gduche 1442
						//TODO : check : Item -> component
1443
						ce.getComponent().disable();
231 jp_milcent 1444
					}
1445
				}
103 jpm 1446
			}
1447
		});
243 jp_milcent 1448
		toolBar.add(supprimerPersonnelBtn);
1449
 
1450
		toolBar.add(new SeparatorToolItem());
1451
 
491 gduche 1452
		Button rafraichirPersonnelBtn = new Button("Rafraichir");
569 jp_milcent 1453
		rafraichirPersonnelBtn.setIcon(Images.ICONES.rafraichir());
491 gduche 1454
		rafraichirPersonnelBtn.addSelectionListener(new SelectionListener<ButtonEvent>() {
243 jp_milcent 1455
			@Override
491 gduche 1456
			public void componentSelected(ButtonEvent ce) {
243 jp_milcent 1457
				rafraichirPersonnel();
1458
			}
1459
		});
1460
		toolBar.add(rafraichirPersonnelBtn);
1461
 
1462
		toolBar.add(new SeparatorToolItem());
1463
 
1464
		personneExistanteMagazin = new ListStore<Personne>();
1465
		personneExistanteMagazin.add(new ArrayList<Personne>());
1466
 
1369 cyprien 1467
		ModelType modelTypePersonnes = new ModelType();
1468
		modelTypePersonnes.setRoot("personnes");
1469
		modelTypePersonnes.setTotalName("nbElements");
1470
		modelTypePersonnes.addField("cp_fmt_nom_complet");
1471
		modelTypePersonnes.addField("cp_nom");
1472
		modelTypePersonnes.addField("cp_prenom");
1473
		modelTypePersonnes.addField("cp_truk_courriel");
1474
		modelTypePersonnes.addField("cp_truk_telephone");
1475
		modelTypePersonnes.addField("cp_ce_truk_specialite");
1476
 
1477
		String displayNamePersonnes = "cp_fmt_nom_complet";
1478
		ProxyPersonnes<ModelData> proxyPersonnes = new ProxyPersonnes<ModelData>(sequenceur);
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
 
1520
				StructureAPersonne structureAPersonne = ce.getModel();
1521
				String etat = structureAPersonne.get("etat");
1522
 
1329 cyprien 1523
				if (etat!=null && !etat.equals(aDonnee.ETAT_AJOUTE) && structureAPersonne!=null && !UtilString.isEmpty(structureAPersonne.getId()))	{
1262 cyprien 1524
					ce.getModel().set("etat", aDonnee.ETAT_MODIFIE);
1525
				}
1239 cyprien 1526
			}
1527
		});
1528
 
295 jp_milcent 1529
  		cp.add(grillePersonnel);
231 jp_milcent 1530
		personnelOnglet.add(cp);
306 jp_milcent 1531
 
231 jp_milcent 1532
		return personnelOnglet;
1533
	}
102 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";
1367 cyprien 1573
		ProxyProjets<ModelData> proxyProjets = new ProxyProjets<ModelData>(sequenceur);
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";
1367 cyprien 1801
		ProxyValeur<ModelData> proxyPays = new ProxyValeur<ModelData>(nomListeTypes, sequenceur);
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) {
1210 cyprien 2032
 
2033
 
639 jp_milcent 2034
		try {
2035
			if (nouvellesDonnees instanceof Information) {
2036
				Information info = (Information) nouvellesDonnees;
2037
				rafraichirInformation(info);
2038
			} else if (nouvellesDonnees instanceof ValeurListe) {
2039
				ValeurListe listeValeurs = (ValeurListe) nouvellesDonnees;
2040
				rafraichirValeurListe(listeValeurs);
2041
			} else {
2042
				GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
295 jp_milcent 2043
			}
639 jp_milcent 2044
		} catch (Exception e) {
875 jpm 2045
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), e);
109 jpm 2046
		}
2047
 
1239 cyprien 2048
		controlerFermeture();
109 jpm 2049
	}
2050
 
639 jp_milcent 2051
	public void rafraichirInformation(Information info) {
2052
		if (info.getMessages() != null && !info.getMessages().toString().equals("[]")) {
2053
			GWT.log("MESSAGES:\n"+info.getMessages().toString(), null);
2054
		}
1210 cyprien 2055
 
639 jp_milcent 2056
 
2057
		if (info.getType().equals("modif_structure")) {
1210 cyprien 2058
			InfoLogger.display("Modification d'une institution", info.toString());
639 jp_milcent 2059
		} else if (info.getType().equals("ajout_structure")) {
770 jpm 2060
			if (info.getDonnee(0) != null && info.getDonnee(0) instanceof String) {
2061
				String structureId = (String) info.getDonnee(0);
1210 cyprien 2062
				InfoLogger.display("Ajout d'une Institution", "L'intitution '"+structureId+"' a bien été ajoutée");
770 jpm 2063
 
639 jp_milcent 2064
				// Suite à la récupération de l'id de l'institution nouvellement ajoutée nous ajoutons le personnel
770 jpm 2065
				mediateur.ajouterStructureAPersonne(this, structureId, personnelAjoute);
639 jp_milcent 2066
			} else {
1210 cyprien 2067
				InfoLogger.display("Ajout d'une Institution", info.toString());
639 jp_milcent 2068
			}
2069
		} else if (info.getType().equals("modif_structure_a_personne")) {
1210 cyprien 2070
			InfoLogger.display("Modification du Personnel", info.toString());
639 jp_milcent 2071
			GWT.log("Decompte:"+decompteRafraichissementPersonnel, null);
2072
			testerLancementRafraichirPersonnel();
2073
		} else if (info.getType().equals("suppression_structure_a_personne")) {
1210 cyprien 2074
			InfoLogger.display("Suppression du Personnel", info.toString());
639 jp_milcent 2075
			GWT.log("Decompte:"+decompteRafraichissementPersonnel, null);
2076
			testerLancementRafraichirPersonnel();
2077
		} else if (info.getType().equals("ajout_structure_a_personne")) {
1210 cyprien 2078
			InfoLogger.display("Ajout du Personnel", info.toString());
639 jp_milcent 2079
			GWT.log("Decompte:"+decompteRafraichissementPersonnel, null);
2080
			testerLancementRafraichirPersonnel();
2081
		} else if (info.getType().equals("selection_structure")) {
1210 cyprien 2082
			InfoLogger.display("Modification d'une institution", info.toString());
639 jp_milcent 2083
			String titre = i18nC.titreModifFormStructurePanneau();
2084
			if (info.getDonnee(0) != null) {
2085
				identification = (Structure) info.getDonnee(0);
2086
				if (onglets.getSelectedItem().equals(identificationOnglet)) {
2087
					peuplerStructureIdentification();
188 jp_milcent 2088
				}
639 jp_milcent 2089
				// Composition du titre
2090
				titre += " - ID : "+identification.getId();
2091
			}
2092
			if (info.getDonnee(1) != null) {
2093
				conservation = (StructureConservation) info.getDonnee(1);
2094
				if (onglets.getSelectedItem().equals(conservationOnglet)) {
2095
					peuplerStructureConservation();
2096
				}
2097
			}
2098
			if (info.getDonnee(2) != null) {
2099
				valorisation = (StructureValorisation) info.getDonnee(2);
2100
				if (valorisation != null) {
2101
					if (onglets.getSelectedItem().equals(valorisationOnglet)) {
2102
						peuplerStructureValorisation();
231 jp_milcent 2103
					}
639 jp_milcent 2104
				}
2105
			}
2106
		} else if (info.getType().equals("liste_structure_a_personne")) {
2107
			if (info.getDonnee(0) != null) {
2108
				personnel = (StructureAPersonneListe) info.getDonnee(0);
1210 cyprien 2109
 
639 jp_milcent 2110
				peuplerStructurePersonnel();
1262 cyprien 2111
 
639 jp_milcent 2112
				personnelOnglet.layout();
1210 cyprien 2113
				InfoLogger.display("Chargement du Personnel", "ok");
609 jp_milcent 2114
 
639 jp_milcent 2115
				// Remise à zéro des modification dans la liste du personnel
2116
				personnelModifie = new StructureAPersonneListe();
2117
				personnelAjoute = new StructureAPersonneListe();
2118
				personnelSupprime = new StructureAPersonneListe();
2119
			}
2120
		}
2121
	}
2122
 
2123
	public void rafraichirValeurListe(ValeurListe listeValeurs) {
2124
		List<Valeur> liste = listeValeurs.toList();
407 jp_milcent 2125
 
639 jp_milcent 2126
		// Test pour savoir si la liste contient des éléments
2127
		if (liste.size() > 0) {
2128
			if (listeValeurs.getId().equals(config.getListeId("stpr"))) {
2129
				magazinLstpr.removeAll();
2130
				magazinLstpr.add(liste);
2131
				comboLstpr.setStore(magazinLstpr);
2132
			}
2133
			if (listeValeurs.getId().equals(config.getListeId("stpu"))) {
2134
				magazinLstpu.removeAll();
2135
				magazinLstpu.add(liste);
2136
				comboLstpu.setStore(magazinLstpu);
2137
			}
2138
			if (listeValeurs.getId().equals(config.getListeId("statut"))) {
2139
				magazinLiStatut.removeAll();
2140
				magazinLiStatut.add(liste);
2141
				comboLiStatut.setStore(magazinLiStatut);
2142
			}
2143
			if (listeValeurs.getId().equals(config.getListeId("fonction"))) {
2144
				// FIXME : le store ne contient pas tout le temps les données, chose étrange.
2145
				// On stocke donc les données dans une variables de la classe pour recharger le store si besoin.
2146
				fonctionsListe = liste;
2147
				fonctionsMagazin.removeAll();
2148
				fonctionsMagazin.add(liste);
2149
				fonctionsCombo.setStore(fonctionsMagazin);
2150
			}
1035 gduche 2151
 
2152
			if (listeValeurs.getId().equals(config.getListeId("region"))) {
2153
				magazinRegion.removeAll();
2154
				magazinRegion.add(liste);
2155
				comboRegion.setStore(magazinRegion);
2156
 
2157
				mettreAJourRegion();
2158
			}
2159
 
2160
 
639 jp_milcent 2161
			if (listeValeurs.getId().equals(config.getListeId("localStockage"))) {
2162
				localStockageAutreChp = new TextField<String>();
2163
				creerChoixMultipleCac(localStockageTrukCp, localStockageTrukCacGrpChp, listeValeurs, localStockageAutreChp);
2164
			}
2165
			if (listeValeurs.getId().equals(config.getListeId("meubleStockage"))) {
2166
				meubleStockageAutreChp = new TextField<String>();
2167
				creerChoixMultipleCac(meubleStockageTrukCp, meubleStockageTrukCacGrpChp, listeValeurs, meubleStockageAutreChp);
2168
			}
2169
			if (listeValeurs.getId().equals(config.getListeId("parametreStockage"))) {
2170
				parametreStockageAutreChp = new TextField<String>();
2171
				creerChoixMultipleCac(parametreStockageTrukCp, parametreStockageTrukCacGrpChp, listeValeurs, parametreStockageAutreChp);
2172
			}
2173
			if (listeValeurs.getId().equals(config.getListeId("autreCollection"))) {
2174
				if (collectionAutreTrukCp != null && collectionAutreTrukCp.getItemByItemId("collectionAutreTrukCacGrpChp") == null) {
2175
					collectionAutreTrukCacGrpChp.setId("collectionAutreTrukCacGrpChp");
2176
					collectionAutreAutreChp = new TextField<String>();
2177
					creerChoixMultipleCac(collectionAutreTrukCp, collectionAutreTrukCacGrpChp, listeValeurs, collectionAutreAutreChp);
110 jpm 2178
				}
639 jp_milcent 2179
				if (autreCollectionTrukCp != null && autreCollectionTrukCp.getItemByItemId("autreCollectionTrukCacGrpChp") == null) {
2180
					autreCollectionTrukCacGrpChp.setId("autreCollectionTrukCacGrpChp");
2181
					autreCollectionAutreChp = new TextField<String>();
2182
					creerChoixMultipleCac(autreCollectionTrukCp, autreCollectionTrukCacGrpChp, listeValeurs, autreCollectionAutreChp);
277 jp_milcent 2183
				}
91 jpm 2184
			}
639 jp_milcent 2185
			if (listeValeurs.getId().equals(config.getListeId("opRestau"))) {
2186
				opRestauAutreChp = new TextField<String>();
2187
				creerChoixMultipleCac(opRestauTrukCp, opRestauTrukCacGrpChp, listeValeurs, opRestauAutreChp);
2188
			}
2189
			if (listeValeurs.getId().equals(config.getListeId("onep"))) {
2190
				creerChoixUniqueBoutonRadio(materielConservationCeRGrpChp, listeValeurs);
2191
				materielConservationCp.add(materielConservationCeRGrpChp);
2192
				materielConservationCp.layout();
2193
			}
2194
			if (listeValeurs.getId().equals(config.getListeId("autreMateriel"))) {
2195
				autreMaterielAutreChp = new TextField<String>();
2196
				creerChoixMultipleCac(autreMaterielTrukCp, autreMaterielTrukCacGrpChp, listeValeurs, autreMaterielAutreChp);
2197
			}
2198
			if (listeValeurs.getId().equals(config.getListeId("poisonTraitement"))) {
2199
				poisonTraitementAutreChp = new TextField<String>();
2200
				creerChoixMultipleCac(poisonTraitementTrukCp, poisonTraitementTrukCacGrpChp, listeValeurs, poisonTraitementAutreChp);
2201
			}
2202
			if (listeValeurs.getId().equals(config.getListeId("insecteTraitement"))) {
2203
				if (traitementTrukCp != null && traitementTrukCp.getItemByItemId("traitementTrukCacGrpChp") == null) {
2204
					traitementTrukCacGrpChp.setId("traitementTrukCacGrpChp");
2205
					traitementAutreChp = new TextField<String>();
2206
					creerChoixMultipleCac(traitementTrukCp, traitementTrukCacGrpChp, listeValeurs, traitementAutreChp);
2207
				}
2208
				if (insecteTraitementTrukCp != null && insecteTraitementTrukCp.getItemByItemId("insecteTraitementTrukCacGrpChp") == null) {
2209
					insecteTraitementTrukCacGrpChp.setId("insecteTraitementTrukCacGrpChp");
2210
					insecteTraitementAutreChp = new TextField<String>();
2211
					creerChoixMultipleCac(insecteTraitementTrukCp, insecteTraitementTrukCacGrpChp, listeValeurs, insecteTraitementAutreChp);
2212
				}
2213
			}
2214
			if (listeValeurs.getId().equals(config.getListeId("actionValorisation"))) {
2215
				actionAutreChp = new TextField<String>();
2216
				creerChoixMultipleCac(actionTrukCp, actionTrukCacGrpChp, listeValeurs, actionAutreChp);
2217
			}
2218
			if (listeValeurs.getId().equals(config.getListeId("continentEtFr"))) {
2219
				provenanceRechercheAutreChp = new TextField<String>();
2220
				creerChoixMultipleCac(provenanceRechercheTrukCp, provenanceRechercheTrukCacGrpChp, listeValeurs, provenanceRechercheAutreChp);
2221
			}
2222
			if (listeValeurs.getId().equals(config.getListeId("typeRecherche"))) {
2223
				typeRechercheAutreChp = new TextField<String>();
2224
				creerChoixMultipleCac(typeRechercheTrukCp, typeRechercheTrukCacGrpChp, listeValeurs, typeRechercheAutreChp);
2225
			}
2226
			//GWT.log("La liste #"+listeValeurs.getId()+" a été reçue!", null);
2227
		} else {
2228
			GWT.log("La liste #"+listeValeurs.getId()+" ne contient aucune valeurs!", null);
91 jpm 2229
		}
639 jp_milcent 2230
	}
2231
 
609 jp_milcent 2232
	private void testerLancementRafraichirPersonnel() {
1210 cyprien 2233
 
609 jp_milcent 2234
		decompteRafraichissementPersonnel--;
2235
		if (decompteRafraichissementPersonnel == 0) {
2236
			// Nous rechargeons la liste du Personnel
2237
			rafraichirPersonnel();
1210 cyprien 2238
		}
609 jp_milcent 2239
	}
2240
 
243 jp_milcent 2241
	private void rafraichirPersonnel() {
609 jp_milcent 2242
		decompteRafraichissementPersonnel = 0;
295 jp_milcent 2243
		if (mode.equals(MODE_MODIFIER)) {
609 jp_milcent 2244
			initialiserGrillePersonnelEnModification();
295 jp_milcent 2245
		} else if (mode.equals(MODE_AJOUTER)) {
2246
			initialiserGrillePersonnelEnAjout();
2247
		}
243 jp_milcent 2248
	}
2249
 
2250
	private void rafraichirPersonneExistante(String nom) {
1367 cyprien 2251
		mediateur.selectionnerPersonneParNomComplet(this, null, nom+"%", null);
243 jp_milcent 2252
	}
295 jp_milcent 2253
 
2254
	private void ajouterMembreAGrillePersonnel(StructureAPersonne personnel) {
2255
		grillePersonnel.stopEditing();
306 jp_milcent 2256
		personnelGrilleMagazin.insert(personnel, 0);
295 jp_milcent 2257
		grillePersonnel.startEditing(0, 0);
2258
	}
2259
 
2260
	private void initialiserGrillePersonnelEnAjout() {
2261
		personnelGrilleMagazin.removeAll();
2262
		StructureAPersonne conservateurDesCollections = new StructureAPersonne(StructureAPersonne.FONCTION_CONSERVATEUR, StructureAPersonne.ROLE_EQUIPE, StructureAPersonne.ETAT_AJOUTE);
2263
		ajouterMembreAGrillePersonnel(conservateurDesCollections);
2264
		StructureAPersonne directeurDuPersonnel = new StructureAPersonne(StructureAPersonne.FONCTION_DIRECTEUR, StructureAPersonne.ROLE_EQUIPE, StructureAPersonne.ETAT_AJOUTE);
2265
		ajouterMembreAGrillePersonnel(directeurDuPersonnel);
609 jp_milcent 2266
		personnelOnglet.layout();
295 jp_milcent 2267
	}
2268
 
1210 cyprien 2269
	private void initialiserGrillePersonnelEnModification() {
1322 gduche 2270
		mediateur.selectionnerStructureAPersonne(this, identification.getId(), StructureAPersonne.ROLE_EQUIPE, null);
295 jp_milcent 2271
	}
1210 cyprien 2272
}