Subversion Repositories eFlore/Applications.coel

Rev

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

Rev Author Line No. Line
806 jpm 1
package org.tela_botanica.client.vues;
2
 
3
import java.util.ArrayList;
4
import java.util.Iterator;
5
import java.util.List;
6
 
7
import org.tela_botanica.client.Mediateur;
839 jpm 8
import org.tela_botanica.client.composants.ChampCaseACocher;
854 jpm 9
import org.tela_botanica.client.composants.ChampComboBoxListeValeurs;
857 jpm 10
import org.tela_botanica.client.composants.ChampMultiValeursMultiTypes;
806 jpm 11
import org.tela_botanica.client.images.Images;
12
import org.tela_botanica.client.interfaces.Rafraichissable;
831 jpm 13
import org.tela_botanica.client.modeles.InterneValeur;
14
import org.tela_botanica.client.modeles.UniteBase;
806 jpm 15
import org.tela_botanica.client.modeles.UniteRangement;
16
import org.tela_botanica.client.modeles.Valeur;
17
import org.tela_botanica.client.modeles.ValeurListe;
18
 
831 jpm 19
import com.extjs.gxt.ui.client.event.ButtonEvent;
839 jpm 20
import com.extjs.gxt.ui.client.event.Events;
806 jpm 21
import com.extjs.gxt.ui.client.event.Listener;
831 jpm 22
import com.extjs.gxt.ui.client.event.MessageBoxEvent;
23
import com.extjs.gxt.ui.client.event.SelectionListener;
839 jpm 24
import com.extjs.gxt.ui.client.event.SliderEvent;
806 jpm 25
import com.extjs.gxt.ui.client.store.ListStore;
26
import com.extjs.gxt.ui.client.widget.ContentPanel;
831 jpm 27
import com.extjs.gxt.ui.client.widget.Info;
28
import com.extjs.gxt.ui.client.widget.MessageBox;
839 jpm 29
import com.extjs.gxt.ui.client.widget.Slider;
30
import com.extjs.gxt.ui.client.widget.Text;
831 jpm 31
import com.extjs.gxt.ui.client.widget.button.Button;
32
import com.extjs.gxt.ui.client.widget.form.ComboBox;
33
import com.extjs.gxt.ui.client.widget.form.NumberField;
839 jpm 34
import com.extjs.gxt.ui.client.widget.form.SliderField;
831 jpm 35
import com.extjs.gxt.ui.client.widget.form.TextField;
36
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
37
import com.extjs.gxt.ui.client.widget.form.FormPanel.LabelAlign;
38
import com.extjs.gxt.ui.client.widget.grid.AggregationRowConfig;
39
import com.extjs.gxt.ui.client.widget.grid.CellEditor;
806 jpm 40
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
41
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
831 jpm 42
import com.extjs.gxt.ui.client.widget.grid.EditorGrid;
806 jpm 43
import com.extjs.gxt.ui.client.widget.grid.Grid;
44
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
831 jpm 45
import com.extjs.gxt.ui.client.widget.grid.HeaderGroupConfig;
46
import com.extjs.gxt.ui.client.widget.grid.SummaryType;
806 jpm 47
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
831 jpm 48
import com.extjs.gxt.ui.client.widget.layout.FormData;
49
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
50
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
51
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
806 jpm 52
import com.google.gwt.core.client.GWT;
831 jpm 53
import com.google.gwt.i18n.client.NumberFormat;
806 jpm 54
 
55
public class CollectionFormDescription extends FormulaireOnglet implements Rafraichissable {
56
 
57
	private Grid<UniteRangement> uniteRangementGrille = null;
854 jpm 58
	private ChampComboBoxListeValeurs etatUniteRangementCombo = null;
831 jpm 59
	private Grid<UniteBase> uniteBaseGrille = null;
839 jpm 60
	private ChampCaseACocher typePapierConservationChp = null;
61
	private ChampCaseACocher methodeConservationChp = null;
62
	private SliderField specimenFixationPourcentChp = null;
63
	private SliderField etiquetteFixationPourcentChp = null;
854 jpm 64
	private ChampCaseACocher specimentMethodeFixationChp = null;
65
	private ChampCaseACocher etiquetteMethodeFixationSurSupportChp = null;
66
	private ChampCaseACocher etiquetteMethodeFixationSurSpecimenChp = null;
67
	private ChampCaseACocher typeEcritureChp = null;
68
	private ChampComboBoxListeValeurs traitementCombo = null;
69
	private ChampCaseACocher poisonTraitementChp = null;
70
	private ChampCaseACocher insecteTraitementChp = null;
71
	private ChampComboBoxListeValeurs etatGeneralCombo = null;
72
	private ChampComboBoxListeValeurs determinationCombo = null;
857 jpm 73
	private ChampMultiValeursMultiTypes specimenDegradationChp = null;
74
	private ChampMultiValeursMultiTypes presentationDegradationChp = null;
831 jpm 75
 
806 jpm 76
	public CollectionFormDescription(Formulaire formulaireCourrant) {
77
		initialiserOnglet(formulaireCourrant);
78
		setId("description");
79
		setText(Mediateur.i18nC.collectionDescription());
831 jpm 80
 
81
		FormLayout formulaireLayout = (FormLayout) this.getLayout();
82
		formulaireLayout.setLabelAlign(LabelAlign.LEFT);
83
		formulaireLayout.setLabelWidth(300);
806 jpm 84
 
831 jpm 85
		creerUniteRangement();
86
		creerUniteBase();
87
 
839 jpm 88
		typePapierConservationChp = new ChampCaseACocher(i18nC.typePapierConservation(), "typePapier", true);
89
		add(typePapierConservationChp);
90
 
91
		methodeConservationChp = new ChampCaseACocher(i18nC.methodeConservation(), "methodeRangement", true);
92
		add(methodeConservationChp);
93
 
94
		Text fixationPoucentLabel = new Text(i18nC.fixationPourcent());
95
		add(fixationPoucentLabel);
96
 
854 jpm 97
		Slider specimenFixationPourcentSlider = creerSliderPoucentage(i18nC.specimenFixationPourcent(), specimenFixationPourcentChp);
839 jpm 98
		specimenFixationPourcentSlider.addListener(Events.Change, new Listener<SliderEvent>() {
99
			public void handleEvent(SliderEvent be) {
100
				int pourcent = ((Slider) be.getComponent()).getValue();
101
				specimenFixationPourcentChp.setFieldLabel(i18nC.specimenFixationPourcent()+" ("+pourcent+"%) ");
102
			}
103
		});
104
		specimenFixationPourcentChp = new SliderField(specimenFixationPourcentSlider);
105
		specimenFixationPourcentChp.setFieldLabel(i18nC.specimenFixationPourcent());
106
		add(specimenFixationPourcentChp, new FormData(200, 0));
107
 
854 jpm 108
		Slider etiquetteFixationPourcentSlider = creerSliderPoucentage(i18nC.etiquetteFixationPourcent(), etiquetteFixationPourcentChp);
839 jpm 109
		etiquetteFixationPourcentSlider.addListener(Events.Change, new Listener<SliderEvent>() {
110
			public void handleEvent(SliderEvent be) {
111
				int pourcent = ((Slider) be.getComponent()).getValue();
112
				etiquetteFixationPourcentChp.setFieldLabel(i18nC.etiquetteFixationPourcent()+" ("+pourcent+"%) ");
113
			}
114
		});
115
		etiquetteFixationPourcentChp = new SliderField(etiquetteFixationPourcentSlider);
116
		etiquetteFixationPourcentChp.setFieldLabel(i18nC.etiquetteFixationPourcent());
117
		add(etiquetteFixationPourcentChp, new FormData(200, 0));
118
 
854 jpm 119
		specimentMethodeFixationChp = new ChampCaseACocher(i18nC.specimenMethodeFixation(), "methodeFixation", true);
120
		add(specimentMethodeFixationChp);
839 jpm 121
 
854 jpm 122
		etiquetteMethodeFixationSurSupportChp = new ChampCaseACocher(i18nC.etiquetteMethodeFixationSurSupport(), "methodeFixation", true);
123
		add(etiquetteMethodeFixationSurSupportChp);
124
 
125
		etiquetteMethodeFixationSurSpecimenChp = new ChampCaseACocher(i18nC.etiquetteMethodeFixationSurSpecimen(), "methodeFixationSurSpecimen", true);
126
		add(etiquetteMethodeFixationSurSpecimenChp);
127
 
128
		typeEcritureChp = new ChampCaseACocher(i18nC.typeEcriture(), "typeEcriture", false);
129
		add(typeEcritureChp);
130
 
131
		traitementCombo  = new ChampComboBoxListeValeurs(i18nC.collectionTraitement(), "onpi");
132
		traitementCombo.setTrie("id_valeur");
133
		add(traitementCombo, new FormData(300, 0));
134
 
135
		poisonTraitementChp = new ChampCaseACocher(i18nC.collectionTraitementPoison(), "poisonTraitement", true);
136
		add(poisonTraitementChp);
137
 
138
		insecteTraitementChp = new ChampCaseACocher(i18nC.collectionTraitementInsecte(), "insecteTraitement", true);
139
		add(insecteTraitementChp);
140
 
857 jpm 141
		etatGeneralCombo = new ChampComboBoxListeValeurs(i18nC.collectionEtatGeneral(), "etat");
854 jpm 142
		etatGeneralCombo.setToolTip(i18nC.collectionEtatGeneralInfo());
143
		etatGeneralCombo.setTrie("id_valeur");
144
		add(etatGeneralCombo, new FormData(300, 0));
145
 
857 jpm 146
		specimenDegradationChp = new ChampMultiValeursMultiTypes(i18nC.degradationSpecimen(), 600, true);
147
		specimenDegradationChp.initialiserType("specimenDegradation");
148
		specimenDegradationChp.initialiserCombobox("etat");
149
		add(specimenDegradationChp);
150
 
151
		presentationDegradationChp = new ChampMultiValeursMultiTypes(i18nC.degradationPresentation(), 600, true);
152
		presentationDegradationChp.initialiserType("supportDegradation");
153
		presentationDegradationChp.initialiserCombobox("etat");
154
		add(presentationDegradationChp);
155
 
156
		determinationCombo = new ChampComboBoxListeValeurs(i18nC.collectionDetermination(), "niveauDetermination");
854 jpm 157
		determinationCombo.setTrie("id_valeur");
158
		add(determinationCombo, new FormData(450, 0));
159
 
839 jpm 160
		layout();
806 jpm 161
	}
162
 
163
 
831 jpm 164
	private void creerUniteRangement() {
165
		ContentPanel panneauGrille = creerPanneauContenantGrille(i18nC.collectionUniteRangementTitre());
166
		uniteRangementGrille  = creerGrilleUniteRangement();
806 jpm 167
		panneauGrille.add(uniteRangementGrille);
831 jpm 168
		ToolBar barreOutils = creerBarreOutilsGrilleUniteRangement();
169
		panneauGrille.setTopComponent(barreOutils);
806 jpm 170
		add(panneauGrille);
831 jpm 171
 
854 jpm 172
		etatUniteRangementCombo = new ChampComboBoxListeValeurs(i18nC.collectionUniteRangementEtatGeneral(), "etat");
831 jpm 173
		etatUniteRangementCombo.setToolTip(i18nC.collectionUniteRangementEtatGeneralInfo());
854 jpm 174
		etatUniteRangementCombo.setTrie("id_valeur");
831 jpm 175
		add(etatUniteRangementCombo, new FormData(300, 0));
806 jpm 176
	}
831 jpm 177
 
178
	private ContentPanel creerPanneauContenantGrille(String titre) {
806 jpm 179
		ContentPanel panneau = new ContentPanel();
831 jpm 180
		panneau.setHeading(titre);
806 jpm 181
		panneau.setIcon(Images.ICONES.table());
182
		panneau.setLayout(new FitLayout());
183
		panneau.setFrame(true);
184
 
185
		return panneau;
186
	}
187
 
831 jpm 188
	private Grid<UniteRangement> creerGrilleUniteRangement() {
806 jpm 189
		ListStore<UniteRangement> storeGrille = new ListStore<UniteRangement>();
190
 
191
		List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>();
831 jpm 192
		colonnes.add(new ColumnConfig("type", i18nC.collectionUniteType(), 150));
806 jpm 193
 
831 jpm 194
		NumberField champNombre = new NumberField();
195
		champNombre.setFormat(NumberFormat.getFormat("#"));
196
		CellEditor editeurNombre = new CellEditor(champNombre);
197
 
198
		ColumnConfig nombreColonne = new ColumnConfig("nombre", i18nC.collectionUniteNbre(), 50);
199
		nombreColonne.setEditor(editeurNombre);
200
		colonnes.add(nombreColonne);
201
 
202
		ListStore<InterneValeur> precisionStore = new ListStore<InterneValeur>();
203
		precisionStore.add(new InterneValeur(UniteRangement.COMPTE_APPROXIMATIF, i18nC.precisionApproximatif()));
204
		precisionStore.add(new InterneValeur(UniteRangement.COMPTE_EXACT, i18nC.precisionExact()));
205
 
206
		final ComboBox<InterneValeur> precisionCombo = new ComboBox<InterneValeur>();
207
		precisionCombo.setForceSelection(true);
208
		precisionCombo.setTriggerAction(TriggerAction.ALL);
209
		precisionCombo.setDisplayField("nom");
210
		precisionCombo.setStore(precisionStore);
211
		precisionCombo.setEditable(false);
212
 
213
		CellEditor editeurPrecision = new CellEditor(precisionCombo) {
214
			@Override
215
			public Object preProcessValue(Object valeur) {
216
				InterneValeur retour = null;
217
				if (valeur != null ) {
218
					if (precisionCombo.getStore().findModel("nom", valeur.toString()) != null) {
219
						retour = precisionCombo.getStore().findModel("nom", valeur.toString());
220
					} else if (precisionCombo.getStore().findModel("abr", valeur.toString()) != null) {
221
						retour = precisionCombo.getStore().findModel("abr", valeur.toString());
222
					}
223
				}
224
				return retour;
225
			}
226
 
227
			@Override
228
			public Object postProcessValue(Object valeur) {
229
				String retour = null;
230
				if (valeur != null ) {
231
					if (valeur instanceof InterneValeur) {
232
						InterneValeur valeurInterne = (InterneValeur) valeur;
233
						retour = valeurInterne.getNom();
234
					}
235
				}
236
				return retour;
237
			}
238
		};
239
 
240
		ColumnConfig precisionColonne = new ColumnConfig("precision", i18nC.collectionUnitePrecision(), 50);
241
		precisionColonne.setEditor(editeurPrecision);
242
		colonnes.add(precisionColonne);
243
 
244
		TextField<String> formatChp = new TextField<String>();
245
		formatChp.setAllowBlank(false);
246
 
247
		ColumnConfig formatColonne =  new ColumnConfig("format", i18nC.collectionUniteFormat(), 100);
248
		formatColonne.setEditor(new CellEditor(formatChp));
249
		colonnes.add(formatColonne);
250
 
806 jpm 251
		GridSelectionModel<UniteRangement> modeleDeSelection = new GridSelectionModel<UniteRangement>();
252
		ColumnModel modeleDeColonnes = new ColumnModel(colonnes);
253
 
831 jpm 254
		EditorGrid<UniteRangement> grilleUniteRangement = new EditorGrid<UniteRangement>(storeGrille, modeleDeColonnes);
806 jpm 255
		grilleUniteRangement.setHeight(300);
256
		grilleUniteRangement.setBorders(true);
257
		grilleUniteRangement.setSelectionModel(modeleDeSelection);
258
		grilleUniteRangement.getView().setForceFit(true);
259
		grilleUniteRangement.getView().setAutoFill(true);
260
		grilleUniteRangement.setAutoExpandColumn("type");
261
		grilleUniteRangement.setStripeRows(true);
262
		grilleUniteRangement.setTrackMouseOver(true);
263
 
264
		mediateur.obtenirListeValeurEtRafraichir(this, "typeUniteRangement");
265
 
266
		return grilleUniteRangement;
267
	}
268
 
831 jpm 269
	private ToolBar creerBarreOutilsGrilleUniteRangement() {
270
		ToolBar barreOutils = new ToolBar();
271
 
272
		Button ajouterBouton = creerBoutonAjouterUniteRangement();
273
		barreOutils.add(ajouterBouton);
274
 
275
		barreOutils.add(new SeparatorToolItem());
276
 
277
		Button supprimerBouton = creerBoutonSupprimerUniteRangement();
278
		barreOutils.add(supprimerBouton);
279
 
280
		return barreOutils;
281
	}
282
 
283
	private Button creerBoutonAjouterUniteRangement() {
284
		Button bouton = new Button(i18nC.ajouter());
285
		bouton.setIcon(Images.ICONES.ajouter());
286
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
287
			@Override
288
			public void componentSelected(ButtonEvent ce) {
289
				final MessageBox box = MessageBox.prompt(i18nC.collectionUniteType(), i18nC.collectionUniteRangementSaisirType());
290
					box.addCallback(new Listener<MessageBoxEvent>() {
291
					public void handleEvent(MessageBoxEvent be) {
292
						final UniteRangement unite = new UniteRangement();
293
						unite.setType(be.getValue());
294
						unite.setTypeAutre(true);
295
						uniteRangementGrille.getStore().add(unite);
296
					}
297
				});
298
			}
299
		});
300
		return bouton;
301
	}
302
 
303
	private Button creerBoutonSupprimerUniteRangement() {
304
		Button bouton = new Button(i18nC.supprimer());
305
		bouton.setIcon(Images.ICONES.supprimer());
306
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
307
			@Override
308
			public void componentSelected(ButtonEvent ce) {
309
				UniteRangement uniteRangementSelectionnee = uniteRangementGrille.getSelectionModel().getSelectedItem();
310
				if (uniteRangementSelectionnee == null) {
311
					Info.display(i18nC.informationTitreGenerique(), Mediateur.i18nM.veuillezSelectionner(i18nC.selectionnerUniteRangement()));
312
				} else if (uniteRangementSelectionnee.getTypeAutre() == false) {
313
					Info.display(i18nC.informationTitreGenerique(), i18nC.selectionnerUniteRangementAjoute());
314
				} else {
315
					uniteRangementGrille.getStore().remove(uniteRangementSelectionnee);
316
				}
317
			}
318
		});
319
		return bouton;
320
	}
321
 
322
	private void creerUniteBase() {
323
		ContentPanel panneauGrille = creerPanneauContenantGrille(i18nC.collectionUniteBaseTitre());
324
		uniteBaseGrille  = creerGrilleUniteBase();
325
		panneauGrille.add(uniteBaseGrille);
326
		ToolBar barreOutils = creerBarreOutilsGrilleUniteBase();
327
		panneauGrille.setTopComponent(barreOutils);
328
		add(panneauGrille);
329
	}
330
 
331
	private Grid<UniteBase> creerGrilleUniteBase() {
332
		ListStore<UniteBase> storeGrille = new ListStore<UniteBase>();
333
 
334
		List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>();
335
		colonnes.add(new ColumnConfig("type", i18nC.collectionUniteType(), 150));
336
 
337
		NumberField champNombre = new NumberField();
338
		champNombre.setFormat(NumberFormat.getFormat("#"));
339
		CellEditor editeurNombre = new CellEditor(champNombre);
340
 
341
		ColumnConfig nombreColonne = new ColumnConfig("nombre", i18nC.collectionUniteNbre(), 50);
342
		nombreColonne.setEditor(editeurNombre);
343
		colonnes.add(nombreColonne);
344
 
345
		ListStore<InterneValeur> precisionStore = new ListStore<InterneValeur>();
346
		precisionStore.add(new InterneValeur(UniteRangement.COMPTE_APPROXIMATIF, i18nC.precisionApproximatif()));
347
		precisionStore.add(new InterneValeur(UniteRangement.COMPTE_EXACT, i18nC.precisionExact()));
348
 
349
		final ComboBox<InterneValeur> precisionCombo = new ComboBox<InterneValeur>();
350
		precisionCombo.setForceSelection(true);
351
		precisionCombo.setTriggerAction(TriggerAction.ALL);
352
		precisionCombo.setDisplayField("nom");
353
		precisionCombo.setStore(precisionStore);
354
		precisionCombo.setEditable(false);
355
 
356
		CellEditor editeurPrecision = new CellEditor(precisionCombo) {
357
			@Override
358
			public Object preProcessValue(Object valeur) {
359
				InterneValeur retour = null;
360
				if (valeur != null ) {
361
					if (precisionCombo.getStore().findModel("nom", valeur.toString()) != null) {
362
						retour = precisionCombo.getStore().findModel("nom", valeur.toString());
363
					} else if (precisionCombo.getStore().findModel("abr", valeur.toString()) != null) {
364
						retour = precisionCombo.getStore().findModel("abr", valeur.toString());
365
					}
366
				}
367
				return retour;
368
			}
369
 
370
			@Override
371
			public Object postProcessValue(Object valeur) {
372
				String retour = null;
373
				if (valeur != null ) {
374
					if (valeur instanceof InterneValeur) {
375
						InterneValeur valeurInterne = (InterneValeur) valeur;
376
						retour = valeurInterne.getNom();
377
					}
378
				}
379
				return retour;
380
			}
381
		};
382
 
383
		ColumnConfig precisionColonne = new ColumnConfig("precision", i18nC.collectionUnitePrecision(), 50);
384
		precisionColonne.setEditor(editeurPrecision);
385
		colonnes.add(precisionColonne);
386
 
387
		TextField<String> formatChp = new TextField<String>();
388
		formatChp.setAllowBlank(false);
389
 
390
		ColumnConfig formatColonne =  new ColumnConfig("format", i18nC.collectionUniteFormat(), 100);
391
		formatColonne.setEditor(new CellEditor(formatChp));
392
		colonnes.add(formatColonne);
393
 
394
		ColumnConfig partNombreColonne = new ColumnConfig("nombre_part", i18nC.collectionUniteNbre(), 50);
395
		partNombreColonne.setEditor(editeurNombre);
396
		colonnes.add(partNombreColonne);
397
 
398
		ColumnConfig partPrecisionColonne = new ColumnConfig("precision_part", i18nC.collectionUnitePrecision(), 50);
399
		partPrecisionColonne.setEditor(editeurPrecision);
400
		colonnes.add(partPrecisionColonne);
401
 
402
		ColumnConfig spNombreColonne = new ColumnConfig("nombre_sp", i18nC.collectionUniteNbre(), 50);
403
		spNombreColonne.setEditor(editeurNombre);
404
		colonnes.add(spNombreColonne);
405
 
406
		ColumnConfig spPrecisionColonne = new ColumnConfig("precision_sp", i18nC.collectionUnitePrecision(), 50);
407
		spPrecisionColonne.setEditor(editeurPrecision);
408
		colonnes.add(spPrecisionColonne);
409
 
410
		GridSelectionModel<UniteBase> modeleDeSelection = new GridSelectionModel<UniteBase>();
411
		ColumnModel modeleDeColonnes = new ColumnModel(colonnes);
412
		modeleDeColonnes.addHeaderGroup(0, 0, new HeaderGroupConfig(i18nC.collectionUniteBase(), 1, 4));
413
		modeleDeColonnes.addHeaderGroup(0, 4, new HeaderGroupConfig(i18nC.collectionUniteBasePart(), 1, 2));
414
		modeleDeColonnes.addHeaderGroup(0, 6, new HeaderGroupConfig(i18nC.collectionUniteBaseSp(), 1, 2));
415
 
416
		AggregationRowConfig<UniteBase> total = new AggregationRowConfig<UniteBase>();
417
		total.setHtml("type", "TOTAL");
418
		total.setSummaryType("nombre", SummaryType.SUM);
419
		total.setSummaryFormat("nombre", NumberFormat.getFormat("#"));
420
		total.setSummaryType("nombre_part", SummaryType.SUM);
421
		total.setSummaryFormat("nombre_part", NumberFormat.getFormat("#"));
422
		total.setSummaryType("nombre_sp", SummaryType.SUM);
423
		total.setSummaryFormat("nombre_sp", NumberFormat.getFormat("#"));
424
		modeleDeColonnes.addAggregationRow(total);
425
 
426
		EditorGrid<UniteBase> grilleUniteBase = new EditorGrid<UniteBase>(storeGrille, modeleDeColonnes);
427
		grilleUniteBase.setHeight(200);
428
		grilleUniteBase.setBorders(true);
429
		grilleUniteBase.setSelectionModel(modeleDeSelection);
430
		grilleUniteBase.getView().setForceFit(true);
431
		grilleUniteBase.getView().setAutoFill(true);
432
		grilleUniteBase.setAutoExpandColumn("type");
433
		grilleUniteBase.setStripeRows(true);
434
		grilleUniteBase.setTrackMouseOver(true);
435
 
436
		mediateur.obtenirListeValeurEtRafraichir(this, "typeUniteBase");
437
 
438
		return grilleUniteBase;
439
	}
440
 
441
	private ToolBar creerBarreOutilsGrilleUniteBase() {
442
		ToolBar barreOutils = new ToolBar();
443
 
444
		Button ajouterBouton = creerBoutonAjouterUniteBase();
445
		barreOutils.add(ajouterBouton);
446
 
447
		barreOutils.add(new SeparatorToolItem());
448
 
449
		Button supprimerBouton = creerBoutonSupprimerUniteBase();
450
		barreOutils.add(supprimerBouton);
451
 
452
		return barreOutils;
453
	}
454
 
455
	private Button creerBoutonAjouterUniteBase() {
456
		Button bouton = new Button(i18nC.ajouter());
457
		bouton.setIcon(Images.ICONES.ajouter());
458
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
459
			@Override
460
			public void componentSelected(ButtonEvent ce) {
461
				final MessageBox box = MessageBox.prompt(i18nC.collectionUniteType(), i18nC.collectionUniteBaseSaisirType());
462
					box.addCallback(new Listener<MessageBoxEvent>() {
463
					public void handleEvent(MessageBoxEvent be) {
464
						final UniteBase unite = new UniteBase();
465
						unite.setType(be.getValue());
466
						unite.setTypeAutre(true);
467
						uniteBaseGrille.getStore().add(unite);
468
					}
469
				});
470
			}
471
		});
472
		return bouton;
473
	}
474
 
475
	private Button creerBoutonSupprimerUniteBase() {
476
		Button bouton = new Button(i18nC.supprimer());
477
		bouton.setIcon(Images.ICONES.supprimer());
478
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
479
			@Override
480
			public void componentSelected(ButtonEvent ce) {
481
				UniteBase uniteBaseSelectionnee = uniteBaseGrille.getSelectionModel().getSelectedItem();
482
				if (uniteBaseSelectionnee == null) {
483
					Info.display(i18nC.informationTitreGenerique(), Mediateur.i18nM.veuillezSelectionner(i18nC.selectionnerUniteBase()));
484
				} else if (uniteBaseSelectionnee.getTypeAutre() == false) {
485
					Info.display(i18nC.informationTitreGenerique(), i18nC.selectionnerUniteBaseAjoute());
486
				} else {
487
					uniteBaseGrille.getStore().remove(uniteBaseSelectionnee);
488
				}
489
			}
490
		});
491
		return bouton;
492
	}
493
 
854 jpm 494
	private Slider creerSliderPoucentage(final String message, final SliderField champSlider) {
495
		Slider slider = new Slider();
496
		slider.setMinValue(0);
497
		slider.setMaxValue(100);
498
		slider.setValue(0);
499
		slider.setIncrement(1);
500
		slider.setMessage("{0} "+message);
501
		return slider;
502
	}
503
 
806 jpm 504
	public void rafraichir(Object nouvellesDonnees) {
505
		if (nouvellesDonnees instanceof ValeurListe) {
506
			ValeurListe listeValeurs = (ValeurListe) nouvellesDonnees;
507
			rafraichirValeurListe(listeValeurs);
508
		} else {
509
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
510
		}
511
	}
512
 
513
	private void rafraichirValeurListe(ValeurListe listeValeurs) {
514
		if (listeValeurs.getId().equals(config.getListeId("typeUniteRangement"))) {
515
			Iterator<String> it = listeValeurs.keySet().iterator();
516
			while (it.hasNext()) {
517
				Valeur valeur = listeValeurs.get(it.next());
518
				UniteRangement unite = new UniteRangement();
519
				unite.setType(valeur.getNom());
831 jpm 520
				unite.setTypeAutre(false);
806 jpm 521
				uniteRangementGrille.getStore().add(unite);
522
			}
831 jpm 523
		} else if (listeValeurs.getId().equals(config.getListeId("typeUniteBase"))) {
524
			Iterator<String> it = listeValeurs.keySet().iterator();
525
			while (it.hasNext()) {
526
				Valeur valeur = listeValeurs.get(it.next());
527
				UniteBase unite = new UniteBase();
528
				unite.setType(valeur.getNom());
529
				unite.setTypeAutre(false);
530
				uniteBaseGrille.getStore().add(unite);
531
			}
806 jpm 532
		} else {
533
			GWT.log("Gestion de la liste "+listeValeurs.getId()+" non implémenté!", null);
534
		}
535
	}
536
}