Subversion Repositories eFlore/Applications.coel

Rev

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