Subversion Repositories eFlore/Applications.coel

Rev

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

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