Subversion Repositories eFlore/Applications.coel

Rev

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