Subversion Repositories eFlore/Applications.coel

Rev

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