Subversion Repositories eFlore/Applications.coel

Rev

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

Rev Author Line No. Line
69 jpm 1
package org.tela_botanica.client.vues;
2
 
91 jpm 3
import java.util.ArrayList;
4
import java.util.Iterator;
69 jpm 5
import java.util.List;
6
 
119 jpm 7
import org.tela_botanica.client.Mediateur;
91 jpm 8
import org.tela_botanica.client.Modele;
9
import org.tela_botanica.client.RegistreId;
115 jpm 10
import org.tela_botanica.client.i18n.Constantes;
69 jpm 11
import org.tela_botanica.client.interfaces.Rafraichissable;
91 jpm 12
import org.tela_botanica.client.modeles.Configuration;
153 jpm 13
import org.tela_botanica.client.modeles.Information;
100 jpm 14
import org.tela_botanica.client.modeles.InterneValeur;
15
import org.tela_botanica.client.modeles.InterneValeurListe;
102 jpm 16
import org.tela_botanica.client.modeles.Personne;
119 jpm 17
import org.tela_botanica.client.modeles.Structure;
91 jpm 18
import org.tela_botanica.client.modeles.Valeur;
19
import org.tela_botanica.client.modeles.ValeurListe;
69 jpm 20
 
111 jpm 21
import com.extjs.gxt.ui.client.Events;
91 jpm 22
import com.extjs.gxt.ui.client.Registry;
69 jpm 23
import com.extjs.gxt.ui.client.Style.HorizontalAlignment;
110 jpm 24
import com.extjs.gxt.ui.client.Style.Scroll;
111 jpm 25
import com.extjs.gxt.ui.client.event.ComponentEvent;
26
import com.extjs.gxt.ui.client.event.Listener;
100 jpm 27
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
28
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
103 jpm 29
import com.extjs.gxt.ui.client.event.SelectionListener;
30
import com.extjs.gxt.ui.client.event.ToolBarEvent;
69 jpm 31
import com.extjs.gxt.ui.client.store.ListStore;
111 jpm 32
import com.extjs.gxt.ui.client.widget.Component;
102 jpm 33
import com.extjs.gxt.ui.client.widget.ContentPanel;
153 jpm 34
import com.extjs.gxt.ui.client.widget.Info;
69 jpm 35
import com.extjs.gxt.ui.client.widget.LayoutContainer;
100 jpm 36
import com.extjs.gxt.ui.client.widget.TabItem;
37
import com.extjs.gxt.ui.client.widget.TabPanel;
69 jpm 38
import com.extjs.gxt.ui.client.widget.button.Button;
108 jpm 39
import com.extjs.gxt.ui.client.widget.form.CheckBox;
40
import com.extjs.gxt.ui.client.widget.form.CheckBoxGroup;
69 jpm 41
import com.extjs.gxt.ui.client.widget.form.ComboBox;
100 jpm 42
import com.extjs.gxt.ui.client.widget.form.DateField;
119 jpm 43
import com.extjs.gxt.ui.client.widget.form.Field;
100 jpm 44
import com.extjs.gxt.ui.client.widget.form.FieldSet;
69 jpm 45
import com.extjs.gxt.ui.client.widget.form.FormPanel;
103 jpm 46
import com.extjs.gxt.ui.client.widget.form.LabelField;
102 jpm 47
import com.extjs.gxt.ui.client.widget.form.NumberField;
109 jpm 48
import com.extjs.gxt.ui.client.widget.form.Radio;
49
import com.extjs.gxt.ui.client.widget.form.RadioGroup;
69 jpm 50
import com.extjs.gxt.ui.client.widget.form.TextField;
51
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
52
import com.extjs.gxt.ui.client.widget.form.FormPanel.LabelAlign;
102 jpm 53
import com.extjs.gxt.ui.client.widget.grid.CellEditor;
54
import com.extjs.gxt.ui.client.widget.grid.CheckBoxSelectionModel;
55
import com.extjs.gxt.ui.client.widget.grid.CheckColumnConfig;
56
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
57
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
58
import com.extjs.gxt.ui.client.widget.grid.EditorGrid;
69 jpm 59
import com.extjs.gxt.ui.client.widget.layout.ColumnData;
60
import com.extjs.gxt.ui.client.widget.layout.ColumnLayout;
61
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
62
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
100 jpm 63
import com.extjs.gxt.ui.client.widget.layout.FormData;
69 jpm 64
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
110 jpm 65
import com.extjs.gxt.ui.client.widget.tips.ToolTipConfig;
102 jpm 66
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
67
import com.extjs.gxt.ui.client.widget.toolbar.TextToolItem;
68
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
91 jpm 69
import com.google.gwt.core.client.GWT;
100 jpm 70
import com.google.gwt.i18n.client.DateTimeFormat;
102 jpm 71
import com.google.gwt.i18n.client.NumberFormat;
133 jpm 72
import com.google.gwt.user.client.Window;
69 jpm 73
 
74
public class FormStructureVue extends LayoutContainer implements Rafraichissable {
115 jpm 75
 
76
	private Constantes i18nC = null;
119 jpm 77
	private Mediateur mediateur = null;
78
	private Modele modele = null ;
79
 
80
	private FormPanel structureFormPanneau;
133 jpm 81
	private int tabIndex = 100;
115 jpm 82
 
91 jpm 83
	private ListStore<Valeur> magazinLstpr = null;
84
	private ComboBox<Valeur> comboLstpr = null;
85
	private ListStore<Valeur> magazinLstpu = null;
86
	private ComboBox<Valeur> comboLstpu = null;
103 jpm 87
	private ListStore<Valeur> magazinLiStatut = null;
88
	private ComboBox<Valeur> comboLiStatut = null;
89
	private ListStore<Valeur> magazinLiFonction = null;
90
	private ComboBox<Valeur> comboLiFonction = null;
100 jpm 91
	private ComboBox<InterneValeur> comboAcronyme = null;
92
	private TextField<String> ihChp = null;
93
	private TextField<String> mnhnChp = null;
94
	private ComboBox<InterneValeur> comboTypeStructure = null;
108 jpm 95
	private TabItem personnelOnglet = null;
103 jpm 96
	private EditorGrid<Personne> grillePersonnel = null;
97
	private ListStore<Personne> personnelGrilleMagazin = null;
98
	private LabelField nbreTotalPersonnelChp = null;
108 jpm 99
	private TabItem conservationOnglet = null;
115 jpm 100
	private CheckBoxGroup localStockageTrukCacGrpChp = null;
101
	private ContentPanel localStockageTrukCp = null;
102
	private CheckBoxGroup meubleStockageTrukCacGrpChp = null;
103
	private ContentPanel meubleStockageTrukCp = null;
104
	private CheckBoxGroup parametreStockageTrukCacGrpChp = null;
105
	private ContentPanel parametreStockageTrukCp = null;
111 jpm 106
	private ContentPanel collectionAutreTrukCp = null;
107
	private CheckBoxGroup collectionAutreTrukCacGrpChp = null;
115 jpm 108
	private CheckBoxGroup opRestauTrukCacGrpChp = null;
111 jpm 109
	private ContentPanel opRestauTrukCp = null;
115 jpm 110
	private CheckBoxGroup autreMaterielTrukCacGrpChp = null;
111
	private ContentPanel autreMaterielTrukCp = null;
111 jpm 112
	private ContentPanel traitementTrukCp = null;
113
	private CheckBoxGroup traitementTrukCacGrpChp = null;
115 jpm 114
	private ContentPanel poisonTraitementTrukCp = null;
111 jpm 115
	private ContentPanel insecteTraitementTrukCp = null;
116
	private CheckBoxGroup insecteTraitementTrukCacGrpChp = null;
115 jpm 117
	private CheckBoxGroup poisonTraitementTrukCacGrpChp = null;
111 jpm 118
	private TabItem valorisationOnglet = null;
115 jpm 119
	private ContentPanel actionTrukCp = null;
120
	private CheckBoxGroup actionTrukCacGrpChp = null;
121
	private ContentPanel autreCollectionTrukCp = null;
119 jpm 122
	private CheckBoxGroup autreCollectionTrukCacGrpChp = null;
115 jpm 123
	private ContentPanel provenanceRechercheTrukCp = null;
124
	private CheckBoxGroup provenanceRechercheTrukCacGrpChp = null;
125
	private CheckBoxGroup typeRechercheTrukCacGrpChp = null;
119 jpm 126
	private ContentPanel typeRechercheTrukCp = null;
115 jpm 127
	private TextField<String> futureActionChp = null;
128
	private TextField<String> sansMotifAccesChp = null;
129
	private TextField<String> avecMotifAccesChp = null;
130
	private TextField<String> formationChp = null;
131
	private RadioGroup traitementAcquisitionMarkRGrpChp = null;
132
	private LabelField traitementAcquisitionMarkLabel = null;
133
	private RadioGroup materielConservationCeRGrpChp = null;
119 jpm 134
 
135
	private RadioGroup actionMarkRGrpChp;
136
	private TextField<String> nomStructureChp;
137
	private DateField dateFondationChp;
138
	private TextField<String> adrChp;
139
	private TextField<String> cpChp;
140
	private TextField<String> villeChp;
141
	private TextField<String> regionChp;
142
	private TextField<String> paysChp;
143
	private TextField<String> telChp;
144
	private TextField<String> faxChp;
145
	private TextField<String> emailChp;
146
	private TextField<String> urlChp;
91 jpm 147
 
69 jpm 148
	public FormStructureVue() {
100 jpm 149
		//+-----------------------------------------------------------------------------------------------------------+
150
		// Initialisation de variables
115 jpm 151
		i18nC = GWT.create(Constantes.class);
69 jpm 152
		setLayout(new FitLayout());
119 jpm 153
		modele = Registry.get(RegistreId.MODELE);
154
		mediateur = Registry.get(RegistreId.MEDIATEUR);
155
 
100 jpm 156
		//+-----------------------------------------------------------------------------------------------------------+
110 jpm 157
		// Création du panneau du FORMULAIRE GÉNÉRAL
119 jpm 158
		structureFormPanneau = new FormPanel();
159
		structureFormPanneau.setFrame(true);
160
		structureFormPanneau.setIconStyle("icone-form-ajouter");
161
		structureFormPanneau.setCollapsible(false);
162
		structureFormPanneau.setHeading(i18nC.titreAjoutFormStructurePanneau());
163
		structureFormPanneau.setButtonAlign(HorizontalAlignment.CENTER);
164
		structureFormPanneau.setLayout(new FlowLayout());
100 jpm 165
 
110 jpm 166
		//+-----------------------------------------------------------------------------------------------------------+
100 jpm 167
		// Création des onglets
102 jpm 168
		TabPanel onglets = new TabPanel();
110 jpm 169
		// NOTE : pour faire apparaître les scrollBar il faut définir la hauteur du panneau d'onglets à 100% (autoHeight ne semble pas fonctionner)
170
		onglets.setHeight("100%");
69 jpm 171
 
100 jpm 172
		//+-----------------------------------------------------------------------------------------------------------+
173
		// Onlget formulaire IDENTIFICATION
110 jpm 174
		onglets.add(creerOngletIdentification());
69 jpm 175
 
100 jpm 176
		//+-----------------------------------------------------------------------------------------------------------+
177
		// Onlget formulaire PERSONNEL
103 jpm 178
		onglets.add(creerOngletPersonnel());
91 jpm 179
 
100 jpm 180
		//+-----------------------------------------------------------------------------------------------------------+
181
		// Onlget formulaire CONSERVATION
108 jpm 182
		onglets.add(creerOngletConservation());
100 jpm 183
 
184
		//+-----------------------------------------------------------------------------------------------------------+
185
		// Onlget formulaire VALORISATION
111 jpm 186
		onglets.add(creerOngletValorisation());
100 jpm 187
 
188
		//+-----------------------------------------------------------------------------------------------------------+
189
		// Gestion du FORMULAIRE GÉNÉRAL
190
 
119 jpm 191
		// Sélection de l'onglet par défaut
192
		//onglets.setSelection(valorisationOnglet);
193
		// Ajout des onglets au formulaire général
194
		structureFormPanneau.add(onglets);
69 jpm 195
 
196
		// Ajout des boutons au panneau formulaire
197
		Button annulerBtn = new Button("Annuler");
119 jpm 198
		structureFormPanneau.addButton(annulerBtn);
69 jpm 199
		Button validerBtn = new Button("Valider");
119 jpm 200
		validerBtn.addSelectionListener(new SelectionListener<ComponentEvent>() {
201
 
202
			@Override
203
			public void componentSelected(ComponentEvent ce) {
204
				soumettreFormulaire();
205
			}
206
 
207
		});
208
		structureFormPanneau.addButton(validerBtn);
69 jpm 209
 
210
		// Ajout du panneau Formulaire à la disposition générale
119 jpm 211
		add(structureFormPanneau);
69 jpm 212
	}
108 jpm 213
 
119 jpm 214
	private void soumettreFormulaire() {
215
		GWT.log("Soumission du formulaire", null);
216
		ajouterStructure();
217
 
218
	}
219
 
220
	private void ajouterStructure() {
221
		Structure structure = new Structure();
222
		structure.setNom(nomStructureChp.getValue());
133 jpm 223
		if (dateFondationChp.getValue() != null) {
224
			structure.setDateFondation(DateTimeFormat.getFormat("yyyy-MM-dd HH:mm:ss").format(dateFondationChp.getValue()));
225
		}
119 jpm 226
 
227
		structure.setAdresse(adrChp.getValue());
228
		structure.setCodePostal(cpChp.getValue());
229
		structure.setVille(villeChp.getValue());
230
		structure.setRegion(regionChp.getValue());
231
		structure.setPays(paysChp.getValue());
232
 
233
		structure.setTelephone(telChp.getValue());
234
		structure.setFax(faxChp.getValue());
235
		structure.setCourriel(emailChp.getValue());
236
		structure.setUrl(urlChp.getValue());
237
 
238
		mediateur.ajouterStructure(this, structure);
239
	}
240
 
111 jpm 241
	private TabItem creerOngletValorisation() {
242
		valorisationOnglet = new TabItem();
243
		valorisationOnglet.setText("Valorisation");
244
		valorisationOnglet.setScrollMode(Scroll.AUTO);
245
		valorisationOnglet.setLayout(creerFormLayout(650, LabelAlign.TOP, null));
246
 
119 jpm 247
		actionMarkRGrpChp = creerChoixUniqueRadioGroupe("action_mark", "ouiNon");
111 jpm 248
		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 ?");
249
		valorisationOnglet.add(actionMarkRGrpChp);
250
 
119 jpm 251
 
111 jpm 252
		actionTrukCp = creerChoixMultipleCp("actionValorisation");
253
		actionTrukCp.hide();
115 jpm 254
		actionTrukCacGrpChp = new CheckBoxGroup();
255
		actionTrukCacGrpChp.setFieldLabel("Si oui, lesquelles ?");
111 jpm 256
		valorisationOnglet.add(actionTrukCp);
257
 
258
		TextField<String> publicationChp = new TextField<String>();
259
		publicationChp.setFieldLabel("Quelques titres des ouvrages, articles scientifiques, ...");
260
		valorisationOnglet.add(publicationChp);
261
 
262
		autreCollectionTrukCp = creerChoixMultipleCp("autreCollection");
119 jpm 263
		autreCollectionTrukCacGrpChp = new CheckBoxGroup();
264
		autreCollectionTrukCacGrpChp.setFieldLabel("L'organisme dispose-t-il d'autres collections (permettant une valorisation pluridisciplinaire) ?");
111 jpm 265
		valorisationOnglet.add(autreCollectionTrukCp);
266
 
115 jpm 267
		RadioGroup futureActionMarkRGrpChp = creerChoixUniqueRadioGroupe("future_action_mark", "ouiNon");
111 jpm 268
		futureActionMarkRGrpChp.setFieldLabel("Envisagez vous des actions de valorisation dans le cadre de votre politique culturelle ?");
269
		valorisationOnglet.add(futureActionMarkRGrpChp);
270
 
271
		futureActionChp = new TextField<String>();
272
		futureActionChp.setFieldLabel("Si oui, lesquelles ?");
273
		futureActionChp.hide();
274
		valorisationOnglet.add(futureActionChp);
275
 
115 jpm 276
		RadioGroup rechercheMarkRGrpChp = creerChoixUniqueRadioGroupe("recherche_mark", "ouiNon");
111 jpm 277
		rechercheMarkRGrpChp.setFieldLabel("Vos collections botaniques sont-elles utilisées pour des recherches scientifiques ?");
278
		valorisationOnglet.add(rechercheMarkRGrpChp);
279
 
280
		provenanceRechercheTrukCp = creerChoixMultipleCp("continentEtFr");
281
		provenanceRechercheTrukCp.hide();
115 jpm 282
		provenanceRechercheTrukCacGrpChp = new CheckBoxGroup();
283
		provenanceRechercheTrukCacGrpChp.setFieldLabel("Si oui, par des chercheurs (professionnels ou amateurs) de quelle provenance ?");
111 jpm 284
		valorisationOnglet.add(provenanceRechercheTrukCp);
285
 
119 jpm 286
		typeRechercheTrukCp = creerChoixMultipleCp("typeRecherche");
287
		typeRechercheTrukCp.hide();
115 jpm 288
		typeRechercheTrukCacGrpChp = new CheckBoxGroup();
289
		typeRechercheTrukCacGrpChp.setFieldLabel("Et pour quelles recherches ?");
119 jpm 290
		valorisationOnglet.add(typeRechercheTrukCp);
111 jpm 291
 
115 jpm 292
		RadioGroup sansMotifAccesMarkRGrpChp = creerChoixUniqueRadioGroupe("sans_motif_acces_mark", "ouiNon");
111 jpm 293
		sansMotifAccesMarkRGrpChp.setFieldLabel("Peut-on consulter vos collections botaniques sans motif de recherches scientifiques ?");
294
		valorisationOnglet.add(sansMotifAccesMarkRGrpChp);
295
 
296
		sansMotifAccesChp = new TextField<String>();
297
		sansMotifAccesChp.hide();
298
		sansMotifAccesChp.setFieldLabel("Si oui, quelles démarches doit-on faire pour les consulter ?");
299
		valorisationOnglet.add(sansMotifAccesChp);
300
 
115 jpm 301
		RadioGroup avecMotifAccesMarkRGrpChp = creerChoixUniqueRadioGroupe("avec_motif_acces_mark", "ouiNon");
111 jpm 302
		avecMotifAccesMarkRGrpChp.setFieldLabel("Peut-on visiter vos collections botaniques avec des objectifs de recherches scientifiques ?");
303
		valorisationOnglet.add(avecMotifAccesMarkRGrpChp);
304
 
115 jpm 305
		valorisationOnglet.add(avecMotifAccesChp = new TextField<String>());
111 jpm 306
		avecMotifAccesChp.hide();
307
		avecMotifAccesChp.setFieldLabel("Si oui, quelles démarches doit-on faire pour les visiter ?");
308
 
309
		return valorisationOnglet;
310
	}
311
 
108 jpm 312
	private TabItem creerOngletConservation() {
313
		conservationOnglet = new TabItem();
314
		conservationOnglet.setText("Conservation");
110 jpm 315
		conservationOnglet.setScrollMode(Scroll.AUTO);
108 jpm 316
		conservationOnglet.setLayout(creerFormLayout(650, LabelAlign.TOP, null));
317
 
115 jpm 318
		RadioGroup markFormationRGrpChp = creerChoixUniqueRadioGroupe("formation_mark", "ouiNon");
109 jpm 319
		markFormationRGrpChp.setFieldLabel("Le personnel s'occupant des collections a-t-il suivi des formations en conservations ?");
320
		conservationOnglet.add(markFormationRGrpChp);
108 jpm 321
 
111 jpm 322
		formationChp = new TextField<String>();
323
		formationChp.hide();
324
		formationChp.setFieldLabel("Si oui, lesquelles ?");
108 jpm 325
		conservationOnglet.add(formationChp);
326
 
115 jpm 327
		RadioGroup markInteretFormationRGrpChp = creerChoixUniqueRadioGroupe("interet_formation_mark", "ouiNon");
109 jpm 328
		markInteretFormationRGrpChp.setFieldLabel("Seriez vous intéressé par une formation à la conservation et à la restauration d'herbier ?");
329
		conservationOnglet.add(markInteretFormationRGrpChp);
108 jpm 330
 
115 jpm 331
		localStockageTrukCp = creerChoixMultipleCp("localStockage");
332
		localStockageTrukCacGrpChp = new CheckBoxGroup();
333
		localStockageTrukCacGrpChp.setFieldLabel("Avez vous des locaux spécifiques de stockage des collections botaniques ?");
334
		conservationOnglet.add(localStockageTrukCp);
108 jpm 335
 
115 jpm 336
		meubleStockageTrukCp = creerChoixMultipleCp("meubleStockage");
337
		meubleStockageTrukCacGrpChp = new CheckBoxGroup();
338
		meubleStockageTrukCacGrpChp.setFieldLabel("Avez vous des meubles spécifiques au stockage des collections botaniques ?");
339
		conservationOnglet.add(meubleStockageTrukCp);
108 jpm 340
 
115 jpm 341
		parametreStockageTrukCp = creerChoixMultipleCp("parametreStockage");
342
		parametreStockageTrukCacGrpChp = new CheckBoxGroup();
343
		parametreStockageTrukCacGrpChp.setFieldLabel("Quels paramètres maîtrisez vous ?");
344
		conservationOnglet.add(parametreStockageTrukCp);
109 jpm 345
 
115 jpm 346
		RadioGroup collectionCommuneMarkRGrpChp = creerChoixUniqueRadioGroupe("collection_commune_mark", "ouiNon");
111 jpm 347
		collectionCommuneMarkRGrpChp.setFieldLabel("Les collections botaniques sont-elles conservées avec d'autres collections  dans les mêmes locaux (problème de conservation en commun) ?");
348
		conservationOnglet.add(collectionCommuneMarkRGrpChp);
109 jpm 349
 
111 jpm 350
		collectionAutreTrukCp = creerChoixMultipleCp("autreCollection");
115 jpm 351
		collectionAutreTrukCacGrpChp = new CheckBoxGroup();
352
		collectionAutreTrukCacGrpChp.setFieldLabel("Si oui, lesquelles ?");
111 jpm 353
		collectionAutreTrukCp.hide();
354
		conservationOnglet.add(collectionAutreTrukCp);
110 jpm 355
 
115 jpm 356
		RadioGroup accesControleMarkRGrpChp = creerChoixUniqueRadioGroupe("mark_acces_controle", "ouiNon");
357
		accesControleMarkRGrpChp.setFieldLabel("L'accès à vos collections botanique est-il contrôlé (ex. : manipulation réservées à des personnes compétentes) ?");
358
		conservationOnglet.add(accesControleMarkRGrpChp);
110 jpm 359
 
115 jpm 360
		RadioGroup restaurationMarkRGrpChp = creerChoixUniqueRadioGroupe("restauration_mark", "ouiNon");
361
		restaurationMarkRGrpChp.setFieldLabel("Effectuez vous des opérations de restauration ou de remise en état de vos collections botaniques ?");
362
		conservationOnglet.add(restaurationMarkRGrpChp);
110 jpm 363
 
111 jpm 364
		opRestauTrukCp = creerChoixMultipleCp("opRestau");
115 jpm 365
		opRestauTrukCacGrpChp = new CheckBoxGroup();
366
		opRestauTrukCacGrpChp.setFieldLabel("Si oui, lesquelles ?");
111 jpm 367
		opRestauTrukCp.hide();
368
		conservationOnglet.add(opRestauTrukCp);
110 jpm 369
 
115 jpm 370
		materielConservationCeRGrpChp = creerChoixUniqueRadioGroupe("materiel_conservation_ce", "onep");
371
		materielConservationCeRGrpChp.setFieldLabel("Utilisez vous du matériel de conservation ?");
372
		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..."));
373
		conservationOnglet.add(materielConservationCeRGrpChp);
110 jpm 374
 
115 jpm 375
		autreMaterielTrukCp = creerChoixMultipleCp("autreMateriel");
376
		autreMaterielTrukCp.hide();
377
		autreMaterielTrukCacGrpChp = new CheckBoxGroup();
378
		autreMaterielTrukCacGrpChp.setFieldLabel("Si non, qu'utilisez vous comme matériel ?");
379
		conservationOnglet.add(autreMaterielTrukCp);
110 jpm 380
 
115 jpm 381
		RadioGroup markTraitementRGrpChp = creerChoixUniqueRadioGroupe("traitement_mark", "ouiNon");
110 jpm 382
		markTraitementRGrpChp.setFieldLabel("Réalisez vous actuellement des traitements globaux contre les insectes ?");
383
		conservationOnglet.add(markTraitementRGrpChp);
384
 
111 jpm 385
		traitementTrukCp = creerChoixMultipleCp("insecteTraitement");
115 jpm 386
		traitementTrukCp.hide();
387
		traitementTrukCacGrpChp = new CheckBoxGroup();
388
		traitementTrukCacGrpChp.setFieldLabel("Si oui, lesquels ?");
111 jpm 389
		conservationOnglet.add(traitementTrukCp);
110 jpm 390
 
115 jpm 391
		RadioGroup markCollectionAcquisitionRGrpChp = creerChoixUniqueRadioGroupe("collection_acquisition_mark", "ouiNon");
110 jpm 392
		markCollectionAcquisitionRGrpChp.setFieldLabel("Actuellement, vos collections botaniques s'accroissent-elles de nouvelles acquisitions ?");
393
		conservationOnglet.add(markCollectionAcquisitionRGrpChp);
394
 
115 jpm 395
		RadioGroup markEchantillonAcquisitionRGrpChp = creerChoixUniqueRadioGroupe("echantillon_acquisition_mark", "ouiNon");
110 jpm 396
		markEchantillonAcquisitionRGrpChp.setFieldLabel("Actuellement, mettez vous en herbier de nouveaux échantillons ?");
397
		conservationOnglet.add(markEchantillonAcquisitionRGrpChp);
398
 
115 jpm 399
		traitementAcquisitionMarkRGrpChp = creerChoixUniqueRadioGroupe("traitement_acquisition_mark", "ouiNon");
400
		traitementAcquisitionMarkRGrpChp.hide();
401
		traitementAcquisitionMarkRGrpChp.setFieldLabel("Si oui, faites-vous un traitement contre les insectes avant l'intégration dans vos collections ?");
402
		conservationOnglet.add(traitementAcquisitionMarkRGrpChp);
110 jpm 403
 
115 jpm 404
		traitementAcquisitionMarkLabel = new LabelField();
405
		traitementAcquisitionMarkLabel.hide();
406
		traitementAcquisitionMarkLabel.setFieldLabel("Si oui, lesquels ?");
407
		conservationOnglet.add(traitementAcquisitionMarkLabel);
110 jpm 408
 
115 jpm 409
		poisonTraitementTrukCp = creerChoixMultipleCp("poisonTraitement");
410
		poisonTraitementTrukCp.hide();
411
		poisonTraitementTrukCacGrpChp = new CheckBoxGroup();
412
		poisonTraitementTrukCacGrpChp.setFieldLabel("Empoisonnement");
413
		poisonTraitementTrukCacGrpChp.setLabelStyle("font-weight:normal;text-decoration:underline;");
414
		poisonTraitementTrukCacGrpChp.setLabelSeparator("");
415
		conservationOnglet.add(poisonTraitementTrukCp);
110 jpm 416
 
111 jpm 417
		insecteTraitementTrukCp = creerChoixMultipleCp("insecteTraitement");
115 jpm 418
		insecteTraitementTrukCp.hide();
419
		insecteTraitementTrukCacGrpChp = new CheckBoxGroup();
420
		insecteTraitementTrukCacGrpChp.setLabelStyle("font-weight:normal;text-decoration:underline;");
421
		insecteTraitementTrukCacGrpChp.setLabelSeparator("");
422
		insecteTraitementTrukCacGrpChp.setFieldLabel("Désinsectisation");
111 jpm 423
		conservationOnglet.add(insecteTraitementTrukCp);
110 jpm 424
 
108 jpm 425
		return conservationOnglet;
426
	}
427
 
103 jpm 428
	private TabItem creerOngletPersonnel() {
108 jpm 429
		personnelOnglet = new TabItem();
103 jpm 430
		personnelOnglet.setText("Personnel");
110 jpm 431
		personnelOnglet.setScrollMode(Scroll.AUTO);
432
		personnelOnglet.setLayout(creerFormLayout(400, LabelAlign.LEFT, null));
103 jpm 433
 
434
		NumberField nbreTotalPersonneStructureChp = new NumberField();
435
		nbreTotalPersonneStructureChp.setFieldLabel("Nombre de personne travaillant dans l'institution");
436
		nbreTotalPersonneStructureChp.setFormat(NumberFormat.getFormat("#"));
437
		nbreTotalPersonneStructureChp.setToolTip("Ce champ doit contenir un nombre");
438
		personnelOnglet.add(nbreTotalPersonneStructureChp);
439
 
440
		personnelOnglet.add(this.creerGrillePersonnel());
441
 
442
		nbreTotalPersonnelChp = new LabelField();
443
		nbreTotalPersonnelChp.setFieldLabel("Nombre de personne travaillant sur les collections");
444
		nbreTotalPersonnelChp.setLabelSeparator(":");
445
		nbreTotalPersonnelChp.setValue(""+grillePersonnel.getStore().getCount());
446
		personnelOnglet.add(nbreTotalPersonnelChp);
447
 
448
		return personnelOnglet;
449
	}
450
 
102 jpm 451
	private ContentPanel creerGrillePersonnel() {
103 jpm 452
 
102 jpm 453
		List<Personne> personnes = new ArrayList<Personne>();
454
		personnes.add(new Personne(Valeur.FONCTION_DIRECTEUR));
455
		personnes.add(new Personne(Valeur.FONCTION_CONSERVATEUR));
456
 
103 jpm 457
		personnelGrilleMagazin = new ListStore<Personne>();
458
		personnelGrilleMagazin.add(personnes);
459
 
102 jpm 460
		List<ColumnConfig> configs = new ArrayList<ColumnConfig>();
461
 
462
		CheckBoxSelectionModel<Personne> sm = new CheckBoxSelectionModel<Personne>();
463
		configs.add(sm.getColumn());
103 jpm 464
 
465
		ColumnConfig column = new ColumnConfig("ce_truk_fonction", "Fonction", 100);
119 jpm 466
		modele.obtenirListeValeurs(((Configuration) Registry.get(RegistreId.CONFIG)).getListeId("fonction"));
103 jpm 467
		magazinLiFonction = new ListStore<Valeur>();
468
		magazinLiFonction.add(new ArrayList<Valeur>());
469
 
470
		comboLiFonction = new ComboBox<Valeur>();
471
		comboLiFonction.setTriggerAction(TriggerAction.ALL);
472
		comboLiFonction.setEditable(true);
473
		comboLiFonction.setDisplayField("nom");
474
		//comboLiStatut.setEmptyText("Sélectionez une fonction...");
475
		comboLiFonction.setStore(magazinLiFonction);
476
 
477
		CellEditor fonctionEditor = new CellEditor(comboLiFonction) {
478
			@Override
479
			public Object preProcessValue(Object value) {
480
				if (value == null) {
481
					return value;
482
				}
483
				//GWT.log("pre : "+value.toString(), null);
484
				return comboLiFonction.getStore().findModel("nom", (String) value);
485
			}
486
 
487
			@Override
488
			public Object postProcessValue(Object value) {
489
				if (value == null) {
490
					return value;
491
				}
492
				//GWT.log("post : "+value.toString(), null);
493
				return ((Valeur) value).get("nom");
494
			}
495
		};
496
		column.setEditor(fonctionEditor);
102 jpm 497
		configs.add(column);
498
 
499
		column = new ColumnConfig();
500
		column.setId("prenom");
103 jpm 501
		column.setHeader("Prénom");
502
		column.setWidth(100);
503
		TextField<String> prenomChp = new TextField<String>();
504
		prenomChp.setAllowBlank(false);
505
		prenomChp.getMessages().setBlankText("Ce champ est obligatoire.");
506
		prenomChp.setAutoValidate(true);
507
		column.setEditor(new CellEditor(prenomChp));
102 jpm 508
		configs.add(column);
509
 
510
		column = new ColumnConfig();
511
		column.setId("nom");
512
		column.setHeader("Nom");
103 jpm 513
		column.setWidth(100);
514
		TextField<String> nomChp = new TextField<String>();
515
		nomChp.setAllowBlank(false);
516
		nomChp.getMessages().setBlankText("Ce champ est obligatoire.");
517
		nomChp.setAutoValidate(true);
518
		column.setEditor(new CellEditor(nomChp));
102 jpm 519
		configs.add(column);
520
 
103 jpm 521
		column = new ColumnConfig("tel", "Téléphone", 100);
522
		TextField<String> telChp = new TextField<String>();
523
		column.setEditor(new CellEditor(telChp));
102 jpm 524
		configs.add(column);
525
 
526
		column = new ColumnConfig("fax", "Fax", 100);
103 jpm 527
		TextField<String> faxChp = new TextField<String>();
528
		column.setEditor(new CellEditor(faxChp));
102 jpm 529
		configs.add(column);
530
 
103 jpm 531
		column = new ColumnConfig("courriel", "Courriel", 100);
532
		TextField<String> emailChp = new TextField<String>();
533
		column.setEditor(new CellEditor(emailChp));
102 jpm 534
		configs.add(column);
535
 
119 jpm 536
		modele.obtenirListeValeurs(((Configuration) Registry.get(RegistreId.CONFIG)).getListeId("statut"));
103 jpm 537
		magazinLiStatut = new ListStore<Valeur>();
538
		magazinLiStatut.add(new ArrayList<Valeur>());
539
 
540
		comboLiStatut = new ComboBox<Valeur>();
541
		comboLiStatut.setTriggerAction(TriggerAction.ALL);
542
		comboLiStatut.setEditable(false);
543
		comboLiStatut.setDisplayField("nom");
544
		comboLiStatut.setEmptyText("Sélectionez un statut...");
545
		comboLiStatut.setStore(magazinLiStatut);
546
 
547
		CellEditor statutEditor = new CellEditor(comboLiStatut) {
548
			@Override
549
			public Object preProcessValue(Object value) {
550
				if (value == null) {
551
					return value;
552
				}
553
				//GWT.log("pre : "+value.toString(), null);
554
				return comboLiStatut.getStore().findModel("nom", (String) value);
555
			}
556
 
557
			@Override
558
			public Object postProcessValue(Object value) {
559
				if (value == null) {
560
					return value;
561
				}
562
				//GWT.log("post : "+value.toString(), null);
563
				return ((Valeur) value).get("nom");
564
			}
565
		};
566
		column = new ColumnConfig("statut", "Statut", 100);
567
		column.setEditor(statutEditor);
102 jpm 568
		configs.add(column);
569
 
103 jpm 570
		column = new ColumnConfig("tps_w", "Temps travail", 100);
571
		column.setNumberFormat(NumberFormat.getFormat("##"));
572
		NumberField tpsWChp = new NumberField();
573
		tpsWChp.setFormat(NumberFormat.getFormat("##"));
574
		tpsWChp.setToolTip("Ce champ doit contenir un nombre");
575
		column.setEditor(new CellEditor(tpsWChp));
576
		configs.add(column);
577
 
578
		column = new ColumnConfig("specialites", "Spécialités botaniques", 150);
579
		TextField<String> speChp = new TextField<String>();
580
		column.setEditor(new CellEditor(speChp));
581
		configs.add(column);
582
 
583
		CheckColumnConfig checkColumn = new CheckColumnConfig("mark_contact", "Contact ?", 60);
102 jpm 584
		configs.add(checkColumn);
585
 
586
		ContentPanel cp = new ContentPanel();
587
		cp.setHeading("Personnes travaillant sur les collections");
110 jpm 588
		cp.setIconStyle("icone-table");
589
		cp.setScrollMode(Scroll.AUTO);
103 jpm 590
		cp.setLayout(new FitLayout());
110 jpm 591
		cp.setSize(1100, 200);
102 jpm 592
		cp.setFrame(true);
593
 
594
		ToolBar toolBar = new ToolBar();
103 jpm 595
 
596
		TextToolItem ajouterPersonnelBtn = new TextToolItem("Ajouter", "icone-vcard-ajouter");
597
		ajouterPersonnelBtn.addSelectionListener(new SelectionListener<ToolBarEvent>() {
598
			@Override
599
			public void componentSelected(ToolBarEvent ce) {
600
				Personne personne = new Personne();
601
				grillePersonnel.stopEditing();
602
				personnelGrilleMagazin.insert(personne, 0);
603
				grillePersonnel.startEditing(0, 0);
604
				// Mise à jour du nombre de personnel travaillant sur les collections
605
				nbreTotalPersonnelChp.setValue(""+grillePersonnel.getStore().getCount());
606
				// Activation du bouton supprimer si la grille contient un élément
607
				if (grillePersonnel.getStore().getCount() > 0) {
608
					ce.component.enable();
609
				}
610
			}
611
		});
612
		toolBar.add(ajouterPersonnelBtn);
613
		toolBar.add(new SeparatorToolItem());
614
		TextToolItem supprimerPersonnelBtn = new TextToolItem("Supprimer", "icone-vcard-supprimer");
615
		supprimerPersonnelBtn.addSelectionListener(new SelectionListener<ToolBarEvent>() {
616
			@Override
617
			public void componentSelected(ToolBarEvent ce) {
618
				grillePersonnel.getStore().remove(grillePersonnel.getStore().getAt(0));
619
				// Mise à jour du nombre de personnel travaillant sur les collections
620
				nbreTotalPersonnelChp.setValue(""+grillePersonnel.getStore().getCount());
621
				// Désactivation du bouton supprimer si la grille contient plus d'élément
622
				if (grillePersonnel.getStore().getCount() == 0) {
623
					ce.item.disable();
624
				}
625
			}
626
		});
627
		toolBar.add(supprimerPersonnelBtn);
102 jpm 628
		cp.setTopComponent(toolBar);
629
 
630
		ColumnModel cm = new ColumnModel(configs);
631
 
103 jpm 632
		grillePersonnel = new EditorGrid<Personne>(personnelGrilleMagazin, cm);
633
		grillePersonnel.setBorders(true);
634
		grillePersonnel.setSelectionModel(sm);
635
		grillePersonnel.addPlugin(sm);
636
		grillePersonnel.addPlugin(checkColumn);
110 jpm 637
  		grillePersonnel.setAutoExpandColumn("specialites");
102 jpm 638
 
103 jpm 639
		cp.add(grillePersonnel);
102 jpm 640
		return cp;
641
	}
642
 
110 jpm 643
	private TabItem creerOngletIdentification() {
644
		//+-----------------------------------------------------------------------------------------------------------+
645
		// Onlget formulaire IDENTIFICATION
646
		TabItem identificationOnglet = new TabItem();
647
		identificationOnglet.setText("Identification");
648
		identificationOnglet.setLayout(new FormLayout());
649
 
650
		//+-----------------------------------------------------------------------------------------------------------+
651
		// Fieldset IDENTITÉ
652
		FieldSet fieldSetIdentite = new FieldSet();
653
		fieldSetIdentite.setHeading("Identité");
654
		fieldSetIdentite.setCollapsible(true);
655
		fieldSetIdentite.setLayout(creerFormLayout(200, LabelAlign.LEFT, 4));
656
 
119 jpm 657
		nomStructureChp = new TextField<String>();
133 jpm 658
		nomStructureChp.setTabIndex(100);
110 jpm 659
		nomStructureChp.setFieldLabel("Nom de la structure");
660
		nomStructureChp.setAllowBlank(false);
661
		nomStructureChp.getMessages().setBlankText("Ce champ est obligatoire.");
662
		fieldSetIdentite.add(nomStructureChp, new FormData(450, 0));
663
 
664
		// Création du sous-formulaire : Acronyme
665
		LayoutContainer ligne = new LayoutContainer();
666
		ligne.setLayout(new ColumnLayout());
667
		LayoutContainer gauche = new LayoutContainer();
668
		gauche.setLayout(creerFormLayout(200, LabelAlign.LEFT, 0));
669
		LayoutContainer droite = new LayoutContainer();
670
		droite.setLayout(creerFormLayout(0, null, 0));
671
 
672
		ListStore<InterneValeur> acronymes = new ListStore<InterneValeur>();
673
		acronymes.add(InterneValeurListe.getTypeAcronyme());
674
 
133 jpm 675
		comboAcronyme = new ComboBox<InterneValeur>();
676
		comboAcronyme.setTabIndex(101);
110 jpm 677
		comboAcronyme.setEmptyText("Sélectioner un type d'acronyme...");
678
		comboAcronyme.setFieldLabel("Acronymes");
679
		comboAcronyme.setDisplayField("nom");
680
		comboAcronyme.setStore(acronymes);
681
		comboAcronyme.setEditable(false);
682
		comboAcronyme.setTypeAhead(true);
683
		comboAcronyme.setTriggerAction(TriggerAction.ALL);
684
		comboAcronyme.addSelectionChangedListener(new SelectionChangedListener<InterneValeur>() {
685
			@Override
686
			public void selectionChanged(SelectionChangedEvent<InterneValeur> se) {
687
				String acronymeAbr = se.getSelectedItem().getAbr();
688
				if (acronymeAbr.equals("IH")) {
689
					mnhnChp.hide();
690
					ihChp.show();
691
				} else if (acronymeAbr.equals("MNHN")) {
692
					ihChp.hide();
693
					mnhnChp.show();
694
				} else if (acronymeAbr.equals("")) {
695
					ihChp.hide();
696
					mnhnChp.hide();
697
					comboAcronyme.clearSelections();
698
				}
699
			}
700
        });
701
		gauche.add(comboAcronyme);
702
 
703
		ihChp = new TextField<String>();
704
		//ihChp.setEmptyText("Index Herbariorum");
133 jpm 705
		ihChp.setTabIndex(102);
110 jpm 706
		ihChp.setLabelSeparator("");
707
		ihChp.setToolTip("Index Herbariorum : herbier de plus de 5000 échantillons");
708
		ihChp.hide();
709
		droite.add(ihChp);
710
 
133 jpm 711
		mnhnChp = new TextField<String>();
712
		mnhnChp.setTabIndex(103);
110 jpm 713
		//mnhnChp.setEmptyText("MNHN");
714
		mnhnChp.setLabelSeparator("");
715
		mnhnChp.setToolTip("Acronyme MNHN : herbier de moins de 5000 échantillons");
716
		mnhnChp.hide();
717
		droite.add(mnhnChp);
718
 
719
		ligne.add(gauche, new ColumnData(0.5));
720
		ligne.add(droite, new ColumnData(0.5));
721
		fieldSetIdentite.add(ligne);
722
 
723
		// Création du sous-formulaire : Type de Structure
724
		LayoutContainer ligneTs = new LayoutContainer();
725
		ligneTs.setLayout(new ColumnLayout());
726
 
727
		LayoutContainer gaucheTs = new LayoutContainer();
728
		gaucheTs.setLayout(creerFormLayout(200, LabelAlign.LEFT, 0));
729
 
730
		LayoutContainer droiteTs = new LayoutContainer();
731
		droiteTs.setLayout(creerFormLayout(0, null, 0));
732
 
733
		ListStore<InterneValeur> typesStructure = new ListStore<InterneValeur>();
734
		typesStructure.add(InterneValeurListe.getTypeStructure());
735
 
133 jpm 736
		comboTypeStructure = new ComboBox<InterneValeur>();
737
		comboTypeStructure.setTabIndex(104);
110 jpm 738
		comboTypeStructure.setEmptyText("Sélectioner un type de structure...");
739
		comboTypeStructure.setFieldLabel("Statut des structures");
740
		comboTypeStructure.setDisplayField("nom");
741
		comboTypeStructure.setStore(typesStructure);
742
		comboTypeStructure.setEditable(false);
743
		comboTypeStructure.setTypeAhead(true);
744
		comboTypeStructure.setTriggerAction(TriggerAction.ALL);
745
		comboTypeStructure.addSelectionChangedListener(new SelectionChangedListener<InterneValeur>() {
746
			@Override
747
			public void selectionChanged(SelectionChangedEvent<InterneValeur> se) {
748
				String typeAbr = se.getSelectedItem().getAbr();
749
				if (typeAbr.equals("stpu")) {
750
					comboLstpr.hide();
751
					comboLstpu.show();
752
				} else if (typeAbr.equals("stpr")) {
753
					comboLstpu.hide();
754
					comboLstpr.show();
755
				} else if (typeAbr.equals("")) {
756
					comboLstpr.hide();
757
					comboLstpu.hide();
758
					comboTypeStructure.clearSelections();
759
				}
760
			}
761
        });
762
		gaucheTs.add(comboTypeStructure);
763
 
119 jpm 764
		modele.obtenirListeValeurs(((Configuration) Registry.get(RegistreId.CONFIG)).getListeId("stpu"));
110 jpm 765
		magazinLstpu = new ListStore<Valeur>();
766
		magazinLstpu.add(new ArrayList<Valeur>());
133 jpm 767
		comboLstpu = new ComboBox<Valeur>();
768
		comboLstpu.setTabIndex(105);
110 jpm 769
		//comboLstpu.setFieldLabel("Statut des structures publiques");
770
		comboLstpu.setLabelSeparator("");
771
		comboLstpu.setDisplayField("nom");
772
		comboLstpu.setEditable(false);
773
		comboLstpu.setTriggerAction(TriggerAction.ALL);
774
		comboLstpu.setStore(magazinLstpu);
775
		comboLstpu.hide();
776
		droiteTs.add(comboLstpu);
777
 
119 jpm 778
		modele.obtenirListeValeurs(((Configuration) Registry.get(RegistreId.CONFIG)).getListeId("stpr"));
110 jpm 779
		magazinLstpr = new ListStore<Valeur>();
780
		magazinLstpr.add(new ArrayList<Valeur>());
133 jpm 781
		comboLstpr = new ComboBox<Valeur>();
782
		comboLstpr.setTabIndex(106);
110 jpm 783
		//comboLstpr.setFieldLabel("Statut des structures privées");
784
		comboLstpr.setLabelSeparator("");
785
		comboLstpr.setDisplayField("nom");
786
		comboLstpr.setEditable(false);
787
		comboLstpr.setTriggerAction(TriggerAction.ALL);
788
		comboLstpr.setStore(magazinLstpr);
789
		comboLstpr.hide();
790
		droiteTs.add(comboLstpr);
791
 
792
		ligneTs.add(gaucheTs, new ColumnData(0.5));
793
		ligneTs.add(droiteTs, new ColumnData(0.5));
794
		fieldSetIdentite.add(ligneTs);
795
 
119 jpm 796
		dateFondationChp = new DateField();
133 jpm 797
		dateFondationChp.setTabIndex(107);
110 jpm 798
		dateFondationChp.setFieldLabel("Date de fondation");
799
		dateFondationChp.getPropertyEditor().getFormat();
800
		dateFondationChp.getPropertyEditor().setFormat(DateTimeFormat.getFormat("dd/MM/yyyy"));
801
		dateFondationChp.getMessages().setInvalidText("La valeur saisie n'est pas une date valide. La date doit être au format «jj/mm/aaaa».");
802
		fieldSetIdentite.add(dateFondationChp);
803
 
804
		identificationOnglet.add(fieldSetIdentite);
805
 
806
		//+-----------------------------------------------------------------------------------------------------------+
807
		// Fieldset ADRESSE
808
		LayoutContainer principalFdAdresse = new LayoutContainer();
809
		principalFdAdresse.setLayout(new ColumnLayout());
810
 
811
		LayoutContainer gaucheFdAdresse = new LayoutContainer();
812
		gaucheFdAdresse.setLayout(creerFormLayout(100, LabelAlign.LEFT, 0));
813
 
814
		LayoutContainer droiteFdAdresse = new LayoutContainer();
815
		droiteFdAdresse.setLayout(creerFormLayout(100, LabelAlign.LEFT, 0));
816
 
817
		FieldSet fieldSetAdresse = new FieldSet();
818
		fieldSetAdresse.setHeading("Adresse");
819
		fieldSetAdresse.setCollapsible(true);
820
 
821
		fieldSetAdresse.setLayout(creerFormLayout(100, LabelAlign.LEFT, 4));
822
 
133 jpm 823
		adrChp = new TextField<String>();
824
		adrChp.setTabIndex(108);
110 jpm 825
		adrChp.setFieldLabel("Adresse");
826
		fieldSetAdresse.add(adrChp, new FormData(550, 0));
827
 
133 jpm 828
		cpChp = new TextField<String>();
829
		cpChp.setTabIndex(109);
110 jpm 830
		cpChp.setFieldLabel("Code postal");
831
		gaucheFdAdresse.add(cpChp);
832
 
133 jpm 833
		villeChp = new TextField<String>();
834
		villeChp.setTabIndex(110);
110 jpm 835
		villeChp.setFieldLabel("Ville");
836
		droiteFdAdresse.add(villeChp);
837
 
133 jpm 838
		regionChp = new TextField<String>();
839
		regionChp.setTabIndex(111);
110 jpm 840
		regionChp.setFieldLabel("Région");
841
		gaucheFdAdresse.add(regionChp);
842
 
133 jpm 843
		paysChp = new TextField<String>();
844
		paysChp.setTabIndex(112);
110 jpm 845
		paysChp.setFieldLabel("Pays");
846
		droiteFdAdresse.add(paysChp);
847
 
848
		principalFdAdresse.add(gaucheFdAdresse, new ColumnData(.5));
849
		principalFdAdresse.add(droiteFdAdresse, new ColumnData(.5));
850
		fieldSetAdresse.add(principalFdAdresse);
851
		identificationOnglet.add(fieldSetAdresse);
852
 
853
		//+-----------------------------------------------------------------------------------------------------------+
854
		// Fieldset TÉLÉPHONE et EMAIL
855
		LayoutContainer principalFdTelMail = new LayoutContainer();
856
		principalFdTelMail.setLayout(new ColumnLayout());
857
 
858
		LayoutContainer gaucheFdTelMail = new LayoutContainer();
859
		gaucheFdTelMail.setLayout(creerFormLayout(100, LabelAlign.LEFT, 0));
860
 
861
		LayoutContainer droiteFdTelMail = new LayoutContainer();
862
		droiteFdTelMail.setLayout(creerFormLayout(100, LabelAlign.LEFT, 0));
863
 
864
		FieldSet fieldSetTelMail = new FieldSet();
865
		fieldSetTelMail.setHeading("Communication");
866
		fieldSetTelMail.setCollapsible(true);
867
 
868
		fieldSetTelMail.setLayout(creerFormLayout(200, LabelAlign.LEFT, 4));
869
 
133 jpm 870
		telChp = new TextField<String>();
871
		telChp.setTabIndex(113);
110 jpm 872
		telChp.setFieldLabel("Téléphone");
873
		gaucheFdTelMail.add(telChp);
874
 
133 jpm 875
		faxChp = new TextField<String>();
876
		faxChp.setTabIndex(114);
110 jpm 877
		faxChp.setFieldLabel("Fax");
878
		droiteFdTelMail.add(faxChp);
879
 
133 jpm 880
		emailChp = new TextField<String>();
881
		emailChp.setTabIndex(115);
110 jpm 882
		emailChp.setFieldLabel("Courriel");
883
		emailChp.setToolTip("Saisir le courriel de l'organisation, pas de courriel individuel. Ex. : accueil@organisation.org");
884
		gaucheFdTelMail.add(emailChp);
885
 
133 jpm 886
		urlChp = new TextField<String>();
887
		urlChp.setTabIndex(116);
110 jpm 888
		urlChp.setFieldLabel("Site web");
889
		droiteFdTelMail.add(urlChp);
890
 
891
		principalFdTelMail.add(gaucheFdTelMail, new ColumnData(.5));
892
		principalFdTelMail.add(droiteFdTelMail, new ColumnData(.5));
893
		fieldSetTelMail.add(principalFdTelMail);
894
		identificationOnglet.add(fieldSetTelMail);
895
 
896
		return identificationOnglet;
897
	}
898
 
108 jpm 899
	/** Méthode simplifiant la création de FormLayout.
110 jpm 900
	 * Chacun des paramètres peut prendre la valeur null pour utiliser la valeur par défaut.
108 jpm 901
	 *
110 jpm 902
	 * @param labelWidth largeur des labels.
108 jpm 903
	 * @param labelAlign alignement des labels
904
	 * @param padding padding du layout
905
	 * @return
906
	 */
907
	private FormLayout creerFormLayout(Integer labelWidth, LabelAlign labelAlign, Integer padding) {
908
		FormLayout formLayout = new FormLayout();
110 jpm 909
		if (labelWidth != null) {
910
			formLayout.setLabelWidth(labelWidth);
911
		}
912
		if (labelAlign != null) {
913
			formLayout.setLabelAlign(labelAlign);
914
		}
108 jpm 915
		if (padding != null) {
916
			formLayout.setPadding(padding);
917
		}
918
		return formLayout;
919
	}
920
 
109 jpm 921
	/** Méthode simplifiant la création de bouton radio oui/non
922
	 *
923
	 * @param listeNom nom de la liste de valeur
924
	 * @return
925
	 */
115 jpm 926
	private RadioGroup creerChoixUniqueRadioGroupe(String groupeNom, String listeNom) {
927
		groupeNom += "_grp";
928
		// NOTE : il semblerait qu'il faille aussi utiliser setName() pour éviter tout problème...
929
		RadioGroup radioGroup = new RadioGroup(groupeNom);
930
		radioGroup.setName(groupeNom);
119 jpm 931
 
115 jpm 932
		if (! listeNom.equals("ouiNon")) {
119 jpm 933
			modele.obtenirListeValeurs(((Configuration) Registry.get(RegistreId.CONFIG)).getListeId(listeNom));
115 jpm 934
		} else {
935
			ValeurListe ouiNonListe = new ValeurListe();
119 jpm 936
			ouiNonListe.ajouter(new Valeur("000999", "Oui", "NULL", "NULL"));
937
			ouiNonListe.ajouter(new Valeur("000998", "Non", "NULL", "NULL"));
115 jpm 938
			creerChoixUniqueBoutonRadio(radioGroup, ouiNonListe);
939
		}
109 jpm 940
 
115 jpm 941
		return radioGroup;
109 jpm 942
	}
943
 
115 jpm 944
	private void creerChoixUniqueBoutonRadio(RadioGroup radioGroupe, ValeurListe listeValeurs) {
945
		for (Iterator<String> it = listeValeurs.keySet().iterator(); it.hasNext();) {
946
			Valeur val = listeValeurs.get(it.next());
947
 
948
			Radio radioBtn = new Radio();
119 jpm 949
			radioGroupe.add(radioBtn);
950
			radioBtn.setName(radioGroupe.getName().replace("_grp", ""));
115 jpm 951
			//radioBtn.setId(val.getId()+"_"+radioBtn.getName());
952
			radioBtn.setBoxLabel(val.getNom());
119 jpm 953
			radioBtn.addListener(Events.Change, new Listener<ComponentEvent>() {
115 jpm 954
 
119 jpm 955
				public void handleEvent(ComponentEvent be) {
133 jpm 956
					//Window.alert(((Radio) be.component).getName());
957
					afficherChampSupplementaire(((Radio) be.component));
115 jpm 958
				}
959
 
960
			});
119 jpm 961
 
115 jpm 962
			if (! val.getDescription().equals("NULL")) {
963
				radioBtn.setToolTip(new ToolTipConfig(val.getNom(), val.getDescription()));
964
			}
965
		}
966
	}
967
 
968
	private void afficherChampSupplementaire(Radio radioBtn) {
119 jpm 969
		//GWT.log("Nom btn : "+radioBtn.getName()+" - Nom group : "+radioBtn.getGroup().getName(), null);
115 jpm 970
		// Valeur du bouton radio déclenchant l'affichage des composants cachés
971
		String valeurPourAfficher = "oui";
111 jpm 972
 
115 jpm 973
		// Construction de la liste des composants à afficher/cacher
974
		String radioGroupeNom = radioBtn.getGroup().getName();
975
		ArrayList<Object> composants = new ArrayList<Object>();
976
		if (radioGroupeNom.equals("action_mark_grp")) {
977
			composants.add(actionTrukCp);
978
		} else if (radioGroupeNom.equals("future_action_mark_grp")) {
979
			composants.add(futureActionChp);
980
		} else if (radioGroupeNom.equals("sans_motif_acces_mark_grp")) {
981
			composants.add(sansMotifAccesChp);
982
		} else if (radioGroupeNom.equals("avec_motif_acces_mark_grp")) {
983
			composants.add(avecMotifAccesChp);
984
		} else if (radioGroupeNom.equals("recherche_mark_grp")) {
985
			composants.add(provenanceRechercheTrukCp);
119 jpm 986
			composants.add(typeRechercheTrukCp);
115 jpm 987
		} else if (radioGroupeNom.equals("formation_mark_grp")) {
988
			composants.add(formationChp);
989
		} else if (radioGroupeNom.equals("collection_commune_mark_grp")) {
990
			composants.add(collectionAutreTrukCp);
991
		} else if (radioGroupeNom.equals("restauration_mark_grp")) {
992
			composants.add(opRestauTrukCp);
993
		} else if (radioGroupeNom.equals("traitement_mark_grp")) {
994
			composants.add(traitementTrukCp);
995
		} else if (radioGroupeNom.equals("echantillon_acquisition_mark_grp")) {
996
			composants.add(traitementAcquisitionMarkRGrpChp);
997
		} else if (radioGroupeNom.equals("traitement_acquisition_mark_grp")) {
998
			composants.add(traitementAcquisitionMarkLabel);
999
			composants.add(poisonTraitementTrukCp);
1000
			composants.add(insecteTraitementTrukCp);
1001
		} else if (radioGroupeNom.equals("materiel_conservation_ce_grp")) {
1002
			composants.add(autreMaterielTrukCp);
1003
			valeurPourAfficher = "non";
1004
		}
111 jpm 1005
 
115 jpm 1006
		// Nous affichons/cachons les composant de la liste
1007
		final int tailleMax = composants.size();
1008
		//GWT.log("Id : "+radioBtn.getId()+" - Class : "+radioBtn.getClass().toString()+"- Taille : "+tailleMax, null);
119 jpm 1009
		//Window.alert("Radio grp nom : "+radioGroupeNom+" - Id btn : "+radioBtn.getId()+" - Class : "+radioBtn.getClass().toString()+"- Taille : "+tailleMax);
111 jpm 1010
		for (int i = 0; i < tailleMax; i++) {
1011
			// En fonction du type de bouton cliquer, on affiche ou cache les champs
115 jpm 1012
			String type = radioBtn.getBoxLabel().toLowerCase();
119 jpm 1013
			//GWT.log(type, null);
115 jpm 1014
			if (radioBtn.getValue() == true) {
1015
				if (type.equals(valeurPourAfficher)) {
1016
					((Component) composants.get(i)).show();
1017
				} else {
1018
					((Component) composants.get(i)).hide();
1019
				}
111 jpm 1020
			}
1021
			// Si on a à faire à un ContentPanel, on l'actualise pour déclencher l'affichage
115 jpm 1022
			if (composants.get(i) instanceof ContentPanel) {
1023
				((ContentPanel) composants.get(i)).layout();
111 jpm 1024
			}
1025
		}
1026
 
1027
	}
1028
 
109 jpm 1029
	/** Méthode simplifiant la création de choix multiple sous forme de case à cocher.
1030
	 * Apelle un service retournant la liste des valeurs représentant les cases à cocher.
1031
	 * Ajoute ou pas un champ "Autre".
1032
	 *
1033
	 * @param listeNom nom de la liste de valeur
1034
	 * @return
1035
	 */
1036
	private ContentPanel creerChoixMultipleCp(String listeNom) {
119 jpm 1037
		modele.obtenirListeValeurs(((Configuration) Registry.get(RegistreId.CONFIG)).getListeId(listeNom));
109 jpm 1038
		ContentPanel cp = new ContentPanel();
1039
		cp.setLayout(creerFormLayout(650, LabelAlign.TOP, 0));
1040
		cp.setHeaderVisible(false);
1041
		return cp;
1042
	}
1043
 
1044
	/** Méthode simplifiant la création de choix multiple sous forme de case à cocher.
1045
	 * Apelle un service retournant la liste des valeurs représentant les cases à cocher.
1046
	 * Ajoute ou pas un champ "Autre".
1047
	 *
1048
	 * @param cp panneau conteant le groupe de case à cocher
1049
	 * @param cacGroup le groupe de case à cocher
1050
	 * @param listeValeurs la liste de valeurs à transformer en case à cocher
1051
	 * @param boolAutreChp booléen indiquant si oui ou non le champ autre doit apparaître
1052
	 * @return
1053
	 */
115 jpm 1054
	private void creerChoixMultipleCac(ContentPanel cp, CheckBoxGroup cacGroupe, ValeurListe listeValeurs, Boolean boolAutreChp) {
110 jpm 1055
		cacGroupe.setAutoWidth(true);
109 jpm 1056
		for (Iterator<String> it = listeValeurs.keySet().iterator(); it.hasNext();) {
111 jpm 1057
			Valeur val = listeValeurs.get(it.next());
1058
			String nom =  val.get("nom");
109 jpm 1059
			CheckBox cac = new CheckBox();
115 jpm 1060
			cac.setId("val-"+val.getId());
111 jpm 1061
			cac.setBoxLabel(nom);
1062
			if (! val.getDescription().equals("NULL")) {
1063
				cac.setToolTip(new ToolTipConfig(val.getNom(), val.getDescription()));
109 jpm 1064
			}
1065
			cacGroupe.add(cac);
1066
		}
1067
		cp.add(cacGroupe);
1068
 
1069
		if (boolAutreChp == true) {
1070
			ContentPanel autreCp = new ContentPanel();
1071
			autreCp.setLayout(creerFormLayout(75, LabelAlign.TOP, 0));
1072
			autreCp.setHeaderVisible(false);
119 jpm 1073
			TextField<String> autreChp = new TextField<String>();
1074
			autreChp.setFieldLabel("Autre");
1075
			autreChp.setLabelStyle("font-weight:normal;");
1076
			autreCp.add(autreChp);
109 jpm 1077
			cp.add(autreCp);
1078
		}
1079
 
1080
		cp.layout();
1081
	}
1082
 
69 jpm 1083
	public void rafraichir(Object nouvelleDonnees) {
153 jpm 1084
		if (nouvelleDonnees instanceof Information) {
1085
			Information info = (Information) nouvelleDonnees;
1086
			if (info.getType().equals("ajout_structure")) {
1087
				GWT.log(info.getMessages().toString(), null);
1088
				Info.display("Ajout d'une Institution", info.toString());
1089
			}
119 jpm 1090
		} else if (nouvelleDonnees instanceof ValeurListe) {
91 jpm 1091
			ValeurListe listeValeurs = (ValeurListe) nouvelleDonnees;
1092
 
1093
			List<Valeur> liste = new ArrayList<Valeur>();
1094
			for (Iterator<String> it = listeValeurs.keySet().iterator(); it.hasNext();) {
1095
				liste.add(listeValeurs.get(it.next()));
1096
			}
1097
			// Test pour savoir si la liste contient des éléments
1098
			if (liste.size() > 0) {
1099
				Configuration config = (Configuration) Registry.get(RegistreId.CONFIG);
1100
				if (listeValeurs.getId().equals(config.getListeId("stpr"))) {
1101
					magazinLstpr.removeAll();
1102
					magazinLstpr.add(liste);
1103
					comboLstpr.setStore(magazinLstpr);
1104
				}
1105
				if (listeValeurs.getId().equals(config.getListeId("stpu"))) {
1106
					magazinLstpu.removeAll();
1107
					magazinLstpu.add(liste);
1108
					comboLstpu.setStore(magazinLstpu);
1109
				}
103 jpm 1110
				if (listeValeurs.getId().equals(config.getListeId("statut"))) {
1111
					magazinLiStatut.removeAll();
1112
					magazinLiStatut.add(liste);
1113
					comboLiStatut.setStore(magazinLiStatut);
1114
				}
1115
				if (listeValeurs.getId().equals(config.getListeId("fonction"))) {
1116
					magazinLiFonction.removeAll();
1117
					magazinLiFonction.add(liste);
1118
					comboLiFonction.setStore(magazinLiFonction);
1119
				}
108 jpm 1120
				if (listeValeurs.getId().equals(config.getListeId("localStockage"))) {
115 jpm 1121
					creerChoixMultipleCac(localStockageTrukCp, localStockageTrukCacGrpChp, listeValeurs, true);
108 jpm 1122
				}
1123
				if (listeValeurs.getId().equals(config.getListeId("meubleStockage"))) {
115 jpm 1124
					creerChoixMultipleCac(meubleStockageTrukCp, meubleStockageTrukCacGrpChp, listeValeurs, true);
108 jpm 1125
				}
109 jpm 1126
				if (listeValeurs.getId().equals(config.getListeId("parametreStockage"))) {
115 jpm 1127
					creerChoixMultipleCac(parametreStockageTrukCp, parametreStockageTrukCacGrpChp, listeValeurs, true);
109 jpm 1128
				}
110 jpm 1129
				if (listeValeurs.getId().equals(config.getListeId("autreCollection"))) {
111 jpm 1130
					if (collectionAutreTrukCp.getItemByItemId("collectionAutreTrukCacGrpChp") == null) {
1131
						collectionAutreTrukCacGrpChp.setId("collectionAutreTrukCacGrpChp");
115 jpm 1132
						creerChoixMultipleCac(collectionAutreTrukCp, collectionAutreTrukCacGrpChp, listeValeurs, true);
111 jpm 1133
					}
1134
					if (autreCollectionTrukCp.getItemByItemId("autreCollectionTrukCacGrpChp") == null) {
119 jpm 1135
						autreCollectionTrukCacGrpChp.setId("autreCollectionTrukCacGrpChp");
1136
						creerChoixMultipleCac(autreCollectionTrukCp, autreCollectionTrukCacGrpChp, listeValeurs, true);
111 jpm 1137
					}
110 jpm 1138
				}
1139
				if (listeValeurs.getId().equals(config.getListeId("opRestau"))) {
115 jpm 1140
					creerChoixMultipleCac(opRestauTrukCp, opRestauTrukCacGrpChp, listeValeurs, true);
110 jpm 1141
				}
1142
				if (listeValeurs.getId().equals(config.getListeId("onep"))) {
115 jpm 1143
					creerChoixUniqueBoutonRadio(materielConservationCeRGrpChp, listeValeurs);
110 jpm 1144
				}
1145
				if (listeValeurs.getId().equals(config.getListeId("autreMateriel"))) {
115 jpm 1146
					creerChoixMultipleCac(autreMaterielTrukCp, autreMaterielTrukCacGrpChp, listeValeurs, true);
110 jpm 1147
				}
1148
				if (listeValeurs.getId().equals(config.getListeId("poisonTraitement"))) {
115 jpm 1149
					creerChoixMultipleCac(poisonTraitementTrukCp, poisonTraitementTrukCacGrpChp, listeValeurs, true);
110 jpm 1150
				}
1151
				if (listeValeurs.getId().equals(config.getListeId("insecteTraitement"))) {
115 jpm 1152
					if (traitementTrukCp.getItemByItemId("traitementTrukCacGrpChp") == null) {
1153
						traitementTrukCacGrpChp.setId("traitementTrukCacGrpChp");
1154
						creerChoixMultipleCac(traitementTrukCp, traitementTrukCacGrpChp, listeValeurs, true);
110 jpm 1155
					}
115 jpm 1156
					if (insecteTraitementTrukCp.getItemByItemId("insecteTraitementTrukCacGrpChp") == null) {
1157
						insecteTraitementTrukCacGrpChp.setId("insecteTraitementTrukCacGrpChp");
1158
						creerChoixMultipleCac(insecteTraitementTrukCp, insecteTraitementTrukCacGrpChp, listeValeurs, true);
110 jpm 1159
					}
1160
				}
111 jpm 1161
				if (listeValeurs.getId().equals(config.getListeId("actionValorisation"))) {
115 jpm 1162
					creerChoixMultipleCac(actionTrukCp, actionTrukCacGrpChp, listeValeurs, true);
111 jpm 1163
				}
1164
				if (listeValeurs.getId().equals(config.getListeId("continentEtFr"))) {
115 jpm 1165
					creerChoixMultipleCac(provenanceRechercheTrukCp, provenanceRechercheTrukCacGrpChp, listeValeurs, true);
111 jpm 1166
				}
1167
				if (listeValeurs.getId().equals(config.getListeId("typeRecherche"))) {
119 jpm 1168
					creerChoixMultipleCac(typeRechercheTrukCp, typeRechercheTrukCacGrpChp, listeValeurs, true);
111 jpm 1169
				}
110 jpm 1170
				//GWT.log("La liste #"+listeValeurs.getId()+" a été reçue!", null);
91 jpm 1171
			} else {
1172
				GWT.log("La liste #"+listeValeurs.getId()+" ne contient aucune valeurs!", null);
1173
			}
1174
		}
69 jpm 1175
	}
100 jpm 1176
 
115 jpm 1177
}