Subversion Repositories eFlore/Applications.coel

Rev

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