Subversion Repositories eFlore/Applications.coel

Rev

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

Rev Author Line No. Line
934 jpm 1
package org.tela_botanica.client.vues.collection;
806 jpm 2
 
3
import java.util.ArrayList;
948 jpm 4
import java.util.HashMap;
806 jpm 5
import java.util.Iterator;
6
import java.util.List;
7
 
8
import org.tela_botanica.client.Mediateur;
839 jpm 9
import org.tela_botanica.client.composants.ChampCaseACocher;
854 jpm 10
import org.tela_botanica.client.composants.ChampComboBoxListeValeurs;
857 jpm 11
import org.tela_botanica.client.composants.ChampMultiValeursMultiTypes;
858 jpm 12
import org.tela_botanica.client.composants.ChampSliderPourcentage;
806 jpm 13
import org.tela_botanica.client.images.Images;
14
import org.tela_botanica.client.interfaces.Rafraichissable;
831 jpm 15
import org.tela_botanica.client.modeles.InterneValeur;
806 jpm 16
import org.tela_botanica.client.modeles.Valeur;
17
import org.tela_botanica.client.modeles.ValeurListe;
948 jpm 18
import org.tela_botanica.client.modeles.aDonnee;
19
import org.tela_botanica.client.modeles.collection.Collection;
20
import org.tela_botanica.client.modeles.collection.CollectionBotanique;
949 jpm 21
import org.tela_botanica.client.modeles.collection.UniteBase;
22
import org.tela_botanica.client.modeles.collection.UniteRangement;
948 jpm 23
import org.tela_botanica.client.util.Debug;
24
import org.tela_botanica.client.util.Pattern;
25
import org.tela_botanica.client.util.UtilNombre;
26
import org.tela_botanica.client.util.UtilString;
934 jpm 27
import org.tela_botanica.client.vues.Formulaire;
28
import org.tela_botanica.client.vues.FormulaireOnglet;
806 jpm 29
 
859 jpm 30
import com.extjs.gxt.ui.client.Style.Scroll;
831 jpm 31
import com.extjs.gxt.ui.client.event.ButtonEvent;
806 jpm 32
import com.extjs.gxt.ui.client.event.Listener;
831 jpm 33
import com.extjs.gxt.ui.client.event.MessageBoxEvent;
34
import com.extjs.gxt.ui.client.event.SelectionListener;
806 jpm 35
import com.extjs.gxt.ui.client.store.ListStore;
36
import com.extjs.gxt.ui.client.widget.ContentPanel;
831 jpm 37
import com.extjs.gxt.ui.client.widget.Info;
38
import com.extjs.gxt.ui.client.widget.MessageBox;
839 jpm 39
import com.extjs.gxt.ui.client.widget.Text;
831 jpm 40
import com.extjs.gxt.ui.client.widget.button.Button;
41
import com.extjs.gxt.ui.client.widget.form.ComboBox;
862 jpm 42
import com.extjs.gxt.ui.client.widget.form.FieldSet;
831 jpm 43
import com.extjs.gxt.ui.client.widget.form.NumberField;
44
import com.extjs.gxt.ui.client.widget.form.TextField;
45
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
46
import com.extjs.gxt.ui.client.widget.form.FormPanel.LabelAlign;
47
import com.extjs.gxt.ui.client.widget.grid.AggregationRowConfig;
48
import com.extjs.gxt.ui.client.widget.grid.CellEditor;
806 jpm 49
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
50
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
831 jpm 51
import com.extjs.gxt.ui.client.widget.grid.EditorGrid;
806 jpm 52
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
831 jpm 53
import com.extjs.gxt.ui.client.widget.grid.HeaderGroupConfig;
54
import com.extjs.gxt.ui.client.widget.grid.SummaryType;
806 jpm 55
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
831 jpm 56
import com.extjs.gxt.ui.client.widget.layout.FormData;
57
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
58
import com.extjs.gxt.ui.client.widget.toolbar.SeparatorToolItem;
59
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;
60
import com.google.gwt.i18n.client.NumberFormat;
806 jpm 61
 
62
public class CollectionFormDescription extends FormulaireOnglet implements Rafraichissable {
63
 
948 jpm 64
	private Collection collection = null;
65
	private CollectionBotanique collectionBotanique = null;
66
	private Collection collectionCollectee = null;
67
	private CollectionBotanique collectionBotaniqueCollectee = null;
68
 
960 jpm 69
	private static ListStore<InterneValeur> precisionStore = null;
858 jpm 70
	private ChampComboBoxListeValeurs typesCollectionBotaCombo = null;
71
	private NumberField nbreEchantillonChp = null;
948 jpm 72
	private EditorGrid<UniteRangement> uniteRangementGrille = null;
854 jpm 73
	private ChampComboBoxListeValeurs etatUniteRangementCombo = null;
948 jpm 74
	private EditorGrid<UniteBase> uniteBaseGrille = null;
839 jpm 75
	private ChampCaseACocher typePapierConservationChp = null;
76
	private ChampCaseACocher methodeConservationChp = null;
858 jpm 77
	private ChampSliderPourcentage specimenFixationPourcentChp = null;
78
	private ChampSliderPourcentage etiquetteFixationPourcentChp = null;
854 jpm 79
	private ChampCaseACocher specimentMethodeFixationChp = null;
80
	private ChampCaseACocher etiquetteMethodeFixationSurSupportChp = null;
81
	private ChampCaseACocher etiquetteMethodeFixationSurSpecimenChp = null;
82
	private ChampCaseACocher typeEcritureChp = null;
83
	private ChampComboBoxListeValeurs traitementCombo = null;
84
	private ChampCaseACocher poisonTraitementChp = null;
85
	private ChampCaseACocher insecteTraitementChp = null;
86
	private ChampComboBoxListeValeurs etatGeneralCombo = null;
87
	private ChampComboBoxListeValeurs determinationCombo = null;
857 jpm 88
	private ChampMultiValeursMultiTypes specimenDegradationChp = null;
89
	private ChampMultiValeursMultiTypes presentationDegradationChp = null;
955 jpm 90
 
806 jpm 91
	public CollectionFormDescription(Formulaire formulaireCourrant) {
92
		initialiserOnglet(formulaireCourrant);
93
		setId("description");
94
		setText(Mediateur.i18nC.collectionDescription());
831 jpm 95
 
96
		FormLayout formulaireLayout = (FormLayout) this.getLayout();
97
		formulaireLayout.setLabelAlign(LabelAlign.LEFT);
98
		formulaireLayout.setLabelWidth(300);
806 jpm 99
 
862 jpm 100
		creerFieldsetPrecision();
949 jpm 101
		creerStorePrecision();
862 jpm 102
		creerUniteRangement();
103
		creerUniteBase();
104
		creerFieldsetConservation();
105
		creerFieldsetEtiquette();
106
		creerFieldsetTraitement();
107
		creerFieldsetEtat();
108
 
109
		layout();
110
	}
111
 
112
	private void creerFieldsetPrecision() {
113
		FieldSet precisionFieldSet = new FieldSet();
954 jpm 114
		precisionFieldSet.setHeading(i18nC.collectionTitrePrecision());
862 jpm 115
		precisionFieldSet.setCollapsible(true);
116
		precisionFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));
117
 
858 jpm 118
		typesCollectionBotaCombo = new ChampComboBoxListeValeurs(i18nC.typeCollectionBotanique(), "typeCollectionBota");
119
		typesCollectionBotaCombo.setTabIndex(tabIndex++);
862 jpm 120
		precisionFieldSet.add(typesCollectionBotaCombo, new FormData(250, 0));
858 jpm 121
 
122
		nbreEchantillonChp = new NumberField();
123
		nbreEchantillonChp.setFieldLabel(i18nC.nbreEchantillon());
124
		nbreEchantillonChp.setToolTip(i18nC.nbreEchantillonInfo());
125
		nbreEchantillonChp.setFormat(NumberFormat.getFormat("#"));
862 jpm 126
		precisionFieldSet.add(nbreEchantillonChp);
858 jpm 127
 
862 jpm 128
		this.add(precisionFieldSet);
806 jpm 129
	}
130
 
960 jpm 131
	private static void creerStorePrecision() {
132
		if (precisionStore == null) {
133
			precisionStore = new ListStore<InterneValeur>();
134
			precisionStore.add(new InterneValeur(UniteRangement.COMPTE_APPROXIMATIF, Mediateur.i18nC.precisionApproximatif()));
135
			precisionStore.add(new InterneValeur(UniteRangement.COMPTE_EXACT, Mediateur.i18nC.precisionExact()));
136
		}
949 jpm 137
	}
138
 
960 jpm 139
	private static String getPrecisionNom(String precisionAbr) {
949 jpm 140
		String precision = "";
956 jpm 141
		if (!precisionAbr.equals("NULL")) {
960 jpm 142
			creerStorePrecision();
956 jpm 143
			InterneValeur precisionValeur = precisionStore.findModel("abr", precisionAbr);
144
			if (precisionValeur != null && !precisionValeur.getNom().equals("NULL")) {
145
				precision = precisionValeur.getNom();
146
			}
949 jpm 147
		}
148
		return precision;
149
	}
150
 
960 jpm 151
	private static String getPrecisionAbr(String precisionNom) {
949 jpm 152
		String precision = "";
956 jpm 153
		if (!precisionNom.equals("NULL")) {
960 jpm 154
			creerStorePrecision();
956 jpm 155
			InterneValeur precisionValeur = precisionStore.findModel("nom", precisionNom);
156
			if (precisionValeur != null) {
157
				precision = precisionValeur.getAbr();
158
			}
949 jpm 159
		}
160
		return precision;
161
	}
162
 
163
	private ComboBox<InterneValeur> getChampPrecision() {
164
		ComboBox<InterneValeur> precisionCombo = new ComboBox<InterneValeur>();
165
		precisionCombo.setForceSelection(true);
166
		precisionCombo.setTriggerAction(TriggerAction.ALL);
167
		precisionCombo.setDisplayField("nom");
168
		precisionCombo.setStore(precisionStore);
169
		precisionCombo.setEditable(false);
170
		return precisionCombo;
171
	}
172
 
831 jpm 173
	private void creerUniteRangement() {
174
		ContentPanel panneauGrille = creerPanneauContenantGrille(i18nC.collectionUniteRangementTitre());
862 jpm 175
 
831 jpm 176
		uniteRangementGrille  = creerGrilleUniteRangement();
858 jpm 177
		mediateur.obtenirListeValeurEtRafraichir(this, "typeUniteRangement");
806 jpm 178
		panneauGrille.add(uniteRangementGrille);
862 jpm 179
 
831 jpm 180
		ToolBar barreOutils = creerBarreOutilsGrilleUniteRangement();
181
		panneauGrille.setTopComponent(barreOutils);
862 jpm 182
 
806 jpm 183
		add(panneauGrille);
184
	}
831 jpm 185
 
186
	private ContentPanel creerPanneauContenantGrille(String titre) {
806 jpm 187
		ContentPanel panneau = new ContentPanel();
831 jpm 188
		panneau.setHeading(titre);
806 jpm 189
		panneau.setIcon(Images.ICONES.table());
190
		panneau.setLayout(new FitLayout());
191
		panneau.setFrame(true);
859 jpm 192
		panneau.setScrollMode(Scroll.AUTO);
862 jpm 193
		panneau.setCollapsible(true);
194
		panneau.setStyleAttribute("margin", "5px 0");
806 jpm 195
 
196
		return panneau;
197
	}
198
 
948 jpm 199
	private EditorGrid<UniteRangement> creerGrilleUniteRangement() {
806 jpm 200
		ListStore<UniteRangement> storeGrille = new ListStore<UniteRangement>();
201
 
202
		List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>();
831 jpm 203
		colonnes.add(new ColumnConfig("type", i18nC.collectionUniteType(), 150));
806 jpm 204
 
831 jpm 205
		NumberField champNombre = new NumberField();
206
		champNombre.setFormat(NumberFormat.getFormat("#"));
207
 
208
		ColumnConfig nombreColonne = new ColumnConfig("nombre", i18nC.collectionUniteNbre(), 50);
948 jpm 209
		nombreColonne.setEditor(new CellEditor(champNombre));
210
		nombreColonne.setNumberFormat(NumberFormat.getFormat("#"));
831 jpm 211
		colonnes.add(nombreColonne);
949 jpm 212
 
213
		CellEditor editeurPrecision = new CellEditor(getChampPrecision()) {
831 jpm 214
			@Override
215
			public Object preProcessValue(Object valeur) {
216
				InterneValeur retour = null;
217
				if (valeur != null ) {
949 jpm 218
					if (precisionStore.findModel("nom", valeur.toString()) != null) {
219
						retour = precisionStore.findModel("nom", valeur.toString());
220
					} else if (precisionStore.findModel("abr", valeur.toString()) != null) {
221
						retour = precisionStore.findModel("abr", valeur.toString());
831 jpm 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;
948 jpm 237
			}
831 jpm 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
		ColumnConfig formatColonne =  new ColumnConfig("format", i18nC.collectionUniteFormat(), 100);
246
		formatColonne.setEditor(new CellEditor(formatChp));
247
		colonnes.add(formatColonne);
248
 
806 jpm 249
		GridSelectionModel<UniteRangement> modeleDeSelection = new GridSelectionModel<UniteRangement>();
250
		ColumnModel modeleDeColonnes = new ColumnModel(colonnes);
251
 
948 jpm 252
		AggregationRowConfig<UniteBase> total = new AggregationRowConfig<UniteBase>();
954 jpm 253
		total.setHtml("type", i18nC.total());
948 jpm 254
		total.setSummaryType("nombre", SummaryType.SUM);
255
		total.setSummaryFormat("nombre", NumberFormat.getFormat("#"));
256
		modeleDeColonnes.addAggregationRow(total);
257
 
831 jpm 258
		EditorGrid<UniteRangement> grilleUniteRangement = new EditorGrid<UniteRangement>(storeGrille, modeleDeColonnes);
806 jpm 259
		grilleUniteRangement.setHeight(300);
260
		grilleUniteRangement.setBorders(true);
261
		grilleUniteRangement.setSelectionModel(modeleDeSelection);
262
		grilleUniteRangement.getView().setForceFit(true);
263
		grilleUniteRangement.getView().setAutoFill(true);
264
		grilleUniteRangement.setAutoExpandColumn("type");
265
		grilleUniteRangement.setStripeRows(true);
266
		grilleUniteRangement.setTrackMouseOver(true);
267
 
268
		return grilleUniteRangement;
269
	}
270
 
948 jpm 271
	private String collecterGrilleUniteRangement() {
272
		String truk = "";
273
		int nbreUnite = uniteRangementGrille.getStore().getCount();
274
		for (int i = 0; i < nbreUnite; i++) {
275
			UniteRangement unite = uniteRangementGrille.getStore().getAt(i);
956 jpm 276
			if (unite.getTypeAutre()) {
277
				truk += unite.getType();
278
			} else {
279
				truk += unite.getId();
280
			}
281
			truk += aDonnee.SEPARATEUR_TYPE_VALEUR;
948 jpm 282
			truk += UtilNombre.formaterEnEntier(unite.getNombre())+aDonnee.SEPARATEUR_DONNEES;
949 jpm 283
			truk += getPrecisionAbr(unite.getPrecision())+aDonnee.SEPARATEUR_DONNEES;
948 jpm 284
			truk += unite.getFormat();
285
			truk += (i == (nbreUnite - 1)) ? "" : aDonnee.SEPARATEUR_VALEURS;
286
		}
287
		return truk;
288
	}
289
 
290
	private void peuplerGrilleUniteRangement(String valeurTruk) {
291
		if (!UtilString.isEmpty(valeurTruk)) {
960 jpm 292
			HashMap<String,UniteRangement> unitesEnregistrees = parserValeurUniteRangement(valeurTruk);
293
 
294
			ArrayList<UniteRangement> listeUniteMaj = new ArrayList<UniteRangement>();
295
			int nbreUnite = uniteRangementGrille.getStore().getCount();
296
			for (int i = 0; i < nbreUnite; i++) {
297
				UniteRangement uniteDansGrille = uniteRangementGrille.getStore().getAt(i);
298
				UniteRangement uniteEnregistree = unitesEnregistrees.get(uniteDansGrille.getId());
299
				if (uniteEnregistree != null) {
300
					uniteEnregistree.setType(uniteDansGrille.getType());
301
					listeUniteMaj.add(uniteEnregistree);
302
				} else {
303
					listeUniteMaj.add(uniteDansGrille);
304
				}
305
			}
306
 
307
			Iterator<String> it = unitesEnregistrees.keySet().iterator();
308
			while (it.hasNext()) {
309
				String cle = it.next();
310
				if (cle.matches(aDonnee.TYPE_AUTRE+aDonnee.SEPARATEUR_TYPE_VALEUR)) {
311
					UniteRangement uniteAutreEnregistree = unitesEnregistrees.get(cle);
312
					listeUniteMaj.add(uniteAutreEnregistree);
313
				}
314
			}
315
 
316
			uniteRangementGrille.getStore().removeAll();
317
			uniteRangementGrille.getStore().add(listeUniteMaj);
318
			layout();
319
		}
320
	}
321
 
322
	public static HashMap<String,UniteRangement> parserValeurUniteRangement(String valeurTruk) {
323
		HashMap<String,UniteRangement> unitesEnregistrees = new HashMap<String,UniteRangement>();
324
		if (!UtilString.isEmpty(valeurTruk)) {
948 jpm 325
			String[] unites = valeurTruk.split(Pattern.quote(aDonnee.SEPARATEUR_VALEURS));
326
			for (int i = 0; i < unites.length; i++) {
327
				String[] uniteTypeIdDonnees = unites[i].split(Pattern.quote(aDonnee.SEPARATEUR_TYPE_VALEUR));
328
				String uniteChaineDonnees = uniteTypeIdDonnees[1];
329
				String[] uniteDonnees = uniteChaineDonnees.split(Pattern.quote(aDonnee.SEPARATEUR_DONNEES));
330
 
331
				UniteRangement uniteRangement = new UniteRangement();
332
				if (uniteDonnees.length > 0) {
949 jpm 333
					uniteRangement.setNombre(UtilString.formaterEnEntier(uniteDonnees[0]));
948 jpm 334
				}
335
				if (uniteDonnees.length > 1) {
949 jpm 336
					uniteRangement.setPrecision(getPrecisionNom(uniteDonnees[1]));
948 jpm 337
				}
338
				if (uniteDonnees.length > 2) {
339
					uniteRangement.setFormat(uniteDonnees[2]);
340
				}
956 jpm 341
 
342
				if (uniteTypeIdDonnees[0].matches("[0-9]+")) {
343
					uniteRangement.setId(uniteTypeIdDonnees[0]);
344
					uniteRangement.setTypeAutre(false);
345
					unitesEnregistrees.put(uniteTypeIdDonnees[0], uniteRangement);
346
				} else {
347
					uniteRangement.setType(uniteTypeIdDonnees[0]);
348
					uniteRangement.setTypeAutre(true);
960 jpm 349
					String id = aDonnee.TYPE_AUTRE+aDonnee.SEPARATEUR_TYPE_VALEUR+uniteTypeIdDonnees[0]+"-"+i;
350
					unitesEnregistrees.put(id, uniteRangement);
956 jpm 351
				}
948 jpm 352
			}
353
		}
960 jpm 354
		return unitesEnregistrees;
948 jpm 355
	}
356
 
831 jpm 357
	private ToolBar creerBarreOutilsGrilleUniteRangement() {
358
		ToolBar barreOutils = new ToolBar();
359
 
360
		Button ajouterBouton = creerBoutonAjouterUniteRangement();
361
		barreOutils.add(ajouterBouton);
362
 
363
		barreOutils.add(new SeparatorToolItem());
364
 
365
		Button supprimerBouton = creerBoutonSupprimerUniteRangement();
862 jpm 366
		barreOutils.add(supprimerBouton);
831 jpm 367
 
862 jpm 368
		barreOutils.add(new SeparatorToolItem());
369
		barreOutils.add(new Text(i18nC.collectionUniteRangementEtatGeneralLabel()));
370
		etatUniteRangementCombo = new ChampComboBoxListeValeurs("", "etat");
371
		etatUniteRangementCombo.setEmptyText(i18nC.collectionUniteRangementEtatGeneral());
372
		etatUniteRangementCombo.setToolTip(i18nC.collectionUniteRangementEtatGeneralInfo());
373
		etatUniteRangementCombo.setTrie("id_valeur");
374
		etatUniteRangementCombo.setWidth(300);
375
		barreOutils.add(etatUniteRangementCombo);
376
 
831 jpm 377
		return barreOutils;
378
	}
379
 
380
	private Button creerBoutonAjouterUniteRangement() {
381
		Button bouton = new Button(i18nC.ajouter());
382
		bouton.setIcon(Images.ICONES.ajouter());
383
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
384
			@Override
385
			public void componentSelected(ButtonEvent ce) {
386
				final MessageBox box = MessageBox.prompt(i18nC.collectionUniteType(), i18nC.collectionUniteRangementSaisirType());
387
					box.addCallback(new Listener<MessageBoxEvent>() {
388
					public void handleEvent(MessageBoxEvent be) {
956 jpm 389
						if (!UtilString.isEmpty(be.getValue()) && !be.getValue().matches("[0-9]+")) {
390
							final UniteRangement unite = new UniteRangement();
391
							unite.setType(be.getValue());
392
							unite.setTypeAutre(true);
393
							uniteRangementGrille.getStore().add(unite);
394
						} else {
395
							Info.display("Information", "Vous ne pouvez pas saisir de valeur vide ou numérique");
396
						}
831 jpm 397
					}
398
				});
399
			}
400
		});
401
		return bouton;
402
	}
403
 
404
	private Button creerBoutonSupprimerUniteRangement() {
405
		Button bouton = new Button(i18nC.supprimer());
406
		bouton.setIcon(Images.ICONES.supprimer());
407
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
408
			@Override
409
			public void componentSelected(ButtonEvent ce) {
410
				UniteRangement uniteRangementSelectionnee = uniteRangementGrille.getSelectionModel().getSelectedItem();
411
				if (uniteRangementSelectionnee == null) {
412
					Info.display(i18nC.informationTitreGenerique(), Mediateur.i18nM.veuillezSelectionner(i18nC.selectionnerUniteRangement()));
413
				} else if (uniteRangementSelectionnee.getTypeAutre() == false) {
414
					Info.display(i18nC.informationTitreGenerique(), i18nC.selectionnerUniteRangementAjoute());
415
				} else {
416
					uniteRangementGrille.getStore().remove(uniteRangementSelectionnee);
417
				}
418
			}
419
		});
420
		return bouton;
421
	}
422
 
423
	private void creerUniteBase() {
424
		ContentPanel panneauGrille = creerPanneauContenantGrille(i18nC.collectionUniteBaseTitre());
862 jpm 425
 
831 jpm 426
		uniteBaseGrille  = creerGrilleUniteBase();
858 jpm 427
		mediateur.obtenirListeValeurEtRafraichir(this, "typeUniteBase");
831 jpm 428
		panneauGrille.add(uniteBaseGrille);
862 jpm 429
 
831 jpm 430
		ToolBar barreOutils = creerBarreOutilsGrilleUniteBase();
431
		panneauGrille.setTopComponent(barreOutils);
862 jpm 432
 
831 jpm 433
		add(panneauGrille);
434
	}
949 jpm 435
 
948 jpm 436
	private EditorGrid<UniteBase> creerGrilleUniteBase() {
831 jpm 437
		ListStore<UniteBase> storeGrille = new ListStore<UniteBase>();
438
 
439
		List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>();
440
		colonnes.add(new ColumnConfig("type", i18nC.collectionUniteType(), 150));
441
 
442
		NumberField champNombre = new NumberField();
443
		champNombre.setFormat(NumberFormat.getFormat("#"));
444
		CellEditor editeurNombre = new CellEditor(champNombre);
445
 
446
		ColumnConfig nombreColonne = new ColumnConfig("nombre", i18nC.collectionUniteNbre(), 50);
447
		nombreColonne.setEditor(editeurNombre);
948 jpm 448
		nombreColonne.setNumberFormat(NumberFormat.getFormat("#"));
831 jpm 449
		colonnes.add(nombreColonne);
450
 
949 jpm 451
		CellEditor editeurPrecision = new CellEditor(getChampPrecision()) {
831 jpm 452
			@Override
453
			public Object preProcessValue(Object valeur) {
454
				InterneValeur retour = null;
455
				if (valeur != null ) {
949 jpm 456
					if (precisionStore.findModel("nom", valeur.toString()) != null) {
457
						retour = precisionStore.findModel("nom", valeur.toString());
458
					} else if (precisionStore.findModel("abr", valeur.toString()) != null) {
459
						retour = precisionStore.findModel("abr", valeur.toString());
831 jpm 460
					}
461
				}
462
				return retour;
463
			}
464
 
465
			@Override
466
			public Object postProcessValue(Object valeur) {
467
				String retour = null;
468
				if (valeur != null ) {
469
					if (valeur instanceof InterneValeur) {
470
						InterneValeur valeurInterne = (InterneValeur) valeur;
471
						retour = valeurInterne.getNom();
472
					}
473
				}
474
				return retour;
475
			}
476
		};
477
 
478
		ColumnConfig precisionColonne = new ColumnConfig("precision", i18nC.collectionUnitePrecision(), 50);
479
		precisionColonne.setEditor(editeurPrecision);
480
		colonnes.add(precisionColonne);
481
 
482
		TextField<String> formatChp = new TextField<String>();
483
		ColumnConfig formatColonne =  new ColumnConfig("format", i18nC.collectionUniteFormat(), 100);
484
		formatColonne.setEditor(new CellEditor(formatChp));
485
		colonnes.add(formatColonne);
486
 
487
		ColumnConfig partNombreColonne = new ColumnConfig("nombre_part", i18nC.collectionUniteNbre(), 50);
488
		partNombreColonne.setEditor(editeurNombre);
948 jpm 489
		partNombreColonne.setNumberFormat(NumberFormat.getFormat("#"));
831 jpm 490
		colonnes.add(partNombreColonne);
491
 
492
		ColumnConfig partPrecisionColonne = new ColumnConfig("precision_part", i18nC.collectionUnitePrecision(), 50);
493
		partPrecisionColonne.setEditor(editeurPrecision);
494
		colonnes.add(partPrecisionColonne);
495
 
496
		ColumnConfig spNombreColonne = new ColumnConfig("nombre_sp", i18nC.collectionUniteNbre(), 50);
497
		spNombreColonne.setEditor(editeurNombre);
948 jpm 498
		spNombreColonne.setNumberFormat(NumberFormat.getFormat("#"));
831 jpm 499
		colonnes.add(spNombreColonne);
500
 
501
		ColumnConfig spPrecisionColonne = new ColumnConfig("precision_sp", i18nC.collectionUnitePrecision(), 50);
502
		spPrecisionColonne.setEditor(editeurPrecision);
503
		colonnes.add(spPrecisionColonne);
504
 
505
		GridSelectionModel<UniteBase> modeleDeSelection = new GridSelectionModel<UniteBase>();
506
		ColumnModel modeleDeColonnes = new ColumnModel(colonnes);
507
		modeleDeColonnes.addHeaderGroup(0, 0, new HeaderGroupConfig(i18nC.collectionUniteBase(), 1, 4));
508
		modeleDeColonnes.addHeaderGroup(0, 4, new HeaderGroupConfig(i18nC.collectionUniteBasePart(), 1, 2));
509
		modeleDeColonnes.addHeaderGroup(0, 6, new HeaderGroupConfig(i18nC.collectionUniteBaseSp(), 1, 2));
510
 
511
		AggregationRowConfig<UniteBase> total = new AggregationRowConfig<UniteBase>();
512
		total.setHtml("type", "TOTAL");
513
		total.setSummaryType("nombre", SummaryType.SUM);
514
		total.setSummaryFormat("nombre", NumberFormat.getFormat("#"));
515
		total.setSummaryType("nombre_part", SummaryType.SUM);
516
		total.setSummaryFormat("nombre_part", NumberFormat.getFormat("#"));
517
		total.setSummaryType("nombre_sp", SummaryType.SUM);
518
		total.setSummaryFormat("nombre_sp", NumberFormat.getFormat("#"));
519
		modeleDeColonnes.addAggregationRow(total);
520
 
521
		EditorGrid<UniteBase> grilleUniteBase = new EditorGrid<UniteBase>(storeGrille, modeleDeColonnes);
522
		grilleUniteBase.setHeight(200);
523
		grilleUniteBase.setBorders(true);
524
		grilleUniteBase.setSelectionModel(modeleDeSelection);
525
		grilleUniteBase.getView().setForceFit(true);
526
		grilleUniteBase.getView().setAutoFill(true);
527
		grilleUniteBase.setAutoExpandColumn("type");
528
		grilleUniteBase.setStripeRows(true);
529
		grilleUniteBase.setTrackMouseOver(true);
530
 
531
		return grilleUniteBase;
532
	}
533
 
949 jpm 534
	private String collecterGrilleUniteBase() {
535
		String truk = "";
536
		int nbreUnite = uniteBaseGrille.getStore().getCount();
537
		for (int i = 0; i < nbreUnite; i++) {
538
			UniteBase unite = uniteBaseGrille.getStore().getAt(i);
956 jpm 539
			if (unite.getTypeAutre()) {
540
				truk += unite.getType();
541
			} else {
542
				truk += unite.getId();
543
			}
544
			truk += aDonnee.SEPARATEUR_TYPE_VALEUR;
949 jpm 545
			truk += UtilNombre.formaterEnEntier(unite.getNombre())+aDonnee.SEPARATEUR_DONNEES;
546
			truk += getPrecisionAbr(unite.getPrecision())+aDonnee.SEPARATEUR_DONNEES;
547
			truk += unite.getFormat()+aDonnee.SEPARATEUR_DONNEES;
548
			truk += UtilNombre.formaterEnEntier(unite.getNombrePart())+aDonnee.SEPARATEUR_DONNEES;
549
			truk += getPrecisionAbr(unite.getPrecisionPart())+aDonnee.SEPARATEUR_DONNEES;
550
			truk += UtilNombre.formaterEnEntier(unite.getNombreSp())+aDonnee.SEPARATEUR_DONNEES;
551
			truk += getPrecisionAbr(unite.getPrecisionSp());
552
			truk += (i == (nbreUnite - 1)) ? "" : aDonnee.SEPARATEUR_VALEURS;
553
		}
554
		return truk;
555
	}
556
 
557
	private void peuplerGrilleUniteBase(String valeurTruk) {
558
		if (!UtilString.isEmpty(valeurTruk)) {
960 jpm 559
			HashMap<String,UniteBase> unitesEnregistrees = parserValeurUniteBase(valeurTruk);
560
 
561
			ArrayList<UniteBase> listeUniteMaj = new ArrayList<UniteBase>();
562
			int nbreUnite = uniteBaseGrille.getStore().getCount();
563
			for (int i = 0; i < nbreUnite; i++) {
564
				UniteBase uniteDansGrille = uniteBaseGrille.getStore().getAt(i);
565
				UniteBase uniteEnregistree = unitesEnregistrees.get(uniteDansGrille.getId());
566
				if (uniteEnregistree != null) {
567
					uniteEnregistree.setType(uniteDansGrille.getType());
568
					listeUniteMaj.add(uniteEnregistree);
569
				} else {
570
					listeUniteMaj.add(uniteDansGrille);
571
				}
572
			}
573
 
574
			Iterator<String> it = unitesEnregistrees.keySet().iterator();
575
			while (it.hasNext()) {
576
				String cle = it.next();
577
				if (cle.matches(aDonnee.TYPE_AUTRE+aDonnee.SEPARATEUR_TYPE_VALEUR)) {
578
					UniteBase uniteAutreEnregistree = unitesEnregistrees.get(cle);
579
					listeUniteMaj.add(uniteAutreEnregistree);
580
				}
581
			}
582
 
583
			uniteBaseGrille.getStore().removeAll();
584
			uniteBaseGrille.getStore().add(listeUniteMaj);
585
			layout();
586
		}
587
	}
588
 
589
	public static HashMap<String,UniteBase> parserValeurUniteBase(String valeurTruk) {
590
		HashMap<String,UniteBase> unitesEnregistrees = new HashMap<String,UniteBase>();
591
		if (!UtilString.isEmpty(valeurTruk)) {
949 jpm 592
			String[] unites = valeurTruk.split(Pattern.quote(aDonnee.SEPARATEUR_VALEURS));
593
			for (int i = 0; i < unites.length; i++) {
594
				String[] uniteTypeIdDonnees = unites[i].split(Pattern.quote(aDonnee.SEPARATEUR_TYPE_VALEUR));
595
				String uniteChaineDonnees = uniteTypeIdDonnees[1];
596
				String[] uniteDonnees = uniteChaineDonnees.split(Pattern.quote(aDonnee.SEPARATEUR_DONNEES));
597
 
598
				UniteBase uniteBase = new UniteBase();
599
				if (uniteDonnees.length > 0) {
600
					uniteBase.setNombre(UtilString.formaterEnEntier(uniteDonnees[0]));
601
				}
602
				if (uniteDonnees.length > 1) {
603
					uniteBase.setPrecision(getPrecisionNom(uniteDonnees[1]));
604
				}
605
				if (uniteDonnees.length > 2) {
606
					uniteBase.setFormat(uniteDonnees[2]);
607
				}
608
				if (uniteDonnees.length > 3) {
609
					uniteBase.setNombrePart(UtilString.formaterEnEntier(uniteDonnees[3]));
610
				}
611
				if (uniteDonnees.length > 4) {
612
					uniteBase.setPrecisionPart(getPrecisionNom(uniteDonnees[4]));
613
				}
614
				if (uniteDonnees.length > 5) {
615
					uniteBase.setNombreSp(UtilString.formaterEnEntier(uniteDonnees[5]));
616
				}
617
				if (uniteDonnees.length > 6) {
618
					uniteBase.setPrecisionSp(getPrecisionNom(uniteDonnees[6]));
619
				}
956 jpm 620
 
621
				if (uniteTypeIdDonnees[0].matches("[0-9]+")) {
622
					uniteBase.setId(uniteTypeIdDonnees[0]);
623
					uniteBase.setTypeAutre(false);
624
					unitesEnregistrees.put(uniteTypeIdDonnees[0], uniteBase);
625
				} else {
626
					uniteBase.setType(uniteTypeIdDonnees[0]);
627
					uniteBase.setTypeAutre(true);
960 jpm 628
					String id = aDonnee.TYPE_AUTRE+aDonnee.SEPARATEUR_TYPE_VALEUR+uniteTypeIdDonnees[0]+"-"+i;
629
					unitesEnregistrees.put(id, uniteBase);
956 jpm 630
				}
949 jpm 631
			}
632
		}
960 jpm 633
		return unitesEnregistrees;
949 jpm 634
	}
635
 
831 jpm 636
	private ToolBar creerBarreOutilsGrilleUniteBase() {
637
		ToolBar barreOutils = new ToolBar();
638
 
639
		Button ajouterBouton = creerBoutonAjouterUniteBase();
640
		barreOutils.add(ajouterBouton);
641
 
642
		barreOutils.add(new SeparatorToolItem());
643
 
644
		Button supprimerBouton = creerBoutonSupprimerUniteBase();
645
		barreOutils.add(supprimerBouton);
646
 
647
		return barreOutils;
648
	}
649
 
650
	private Button creerBoutonAjouterUniteBase() {
651
		Button bouton = new Button(i18nC.ajouter());
652
		bouton.setIcon(Images.ICONES.ajouter());
653
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
654
			@Override
655
			public void componentSelected(ButtonEvent ce) {
656
				final MessageBox box = MessageBox.prompt(i18nC.collectionUniteType(), i18nC.collectionUniteBaseSaisirType());
657
					box.addCallback(new Listener<MessageBoxEvent>() {
658
					public void handleEvent(MessageBoxEvent be) {
956 jpm 659
						if (!UtilString.isEmpty(be.getValue()) && !be.getValue().matches("[0-9]+")) {
660
							final UniteBase unite = new UniteBase();
661
							unite.setType(be.getValue());
662
							unite.setTypeAutre(true);
663
							uniteBaseGrille.getStore().add(unite);
664
						} else {
665
							Info.display("Information", "Vous ne pouvez pas saisir de valeur vide ou numérique");
666
						}
831 jpm 667
					}
668
				});
669
			}
670
		});
671
		return bouton;
672
	}
673
 
674
	private Button creerBoutonSupprimerUniteBase() {
675
		Button bouton = new Button(i18nC.supprimer());
676
		bouton.setIcon(Images.ICONES.supprimer());
677
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {
678
			@Override
679
			public void componentSelected(ButtonEvent ce) {
680
				UniteBase uniteBaseSelectionnee = uniteBaseGrille.getSelectionModel().getSelectedItem();
681
				if (uniteBaseSelectionnee == null) {
682
					Info.display(i18nC.informationTitreGenerique(), Mediateur.i18nM.veuillezSelectionner(i18nC.selectionnerUniteBase()));
683
				} else if (uniteBaseSelectionnee.getTypeAutre() == false) {
684
					Info.display(i18nC.informationTitreGenerique(), i18nC.selectionnerUniteBaseAjoute());
685
				} else {
686
					uniteBaseGrille.getStore().remove(uniteBaseSelectionnee);
687
				}
688
			}
689
		});
690
		return bouton;
691
	}
692
 
862 jpm 693
	private void creerFieldsetConservation() {
694
		FieldSet conservationFieldSet = new FieldSet();
954 jpm 695
		conservationFieldSet.setHeading(i18nC.collectionTitreConservation());
862 jpm 696
		conservationFieldSet.setCollapsible(true);
697
		conservationFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));
698
 
699
		typePapierConservationChp = new ChampCaseACocher(i18nC.typePapierConservation(), "typePapier", true);
700
		conservationFieldSet.add(typePapierConservationChp);
701
 
702
		methodeConservationChp = new ChampCaseACocher(i18nC.methodeConservation(), "methodeRangement", true);
703
		conservationFieldSet.add(methodeConservationChp);
704
 
705
		this.add(conservationFieldSet);
706
	}
707
 
708
	private void creerFieldsetEtiquette() {
709
		FieldSet etiquetteFieldSet = new FieldSet();
954 jpm 710
		etiquetteFieldSet.setHeading(i18nC.collectionTitreEtiquette());
862 jpm 711
		etiquetteFieldSet.setCollapsible(true);
712
		etiquetteFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));
713
 
714
		Text fixationPoucentLabel = new Text(i18nC.fixationPourcent());
715
		etiquetteFieldSet.add(fixationPoucentLabel);
716
 
717
		specimenFixationPourcentChp = new ChampSliderPourcentage(i18nC.specimenFixationPourcent());
718
		etiquetteFieldSet.add(specimenFixationPourcentChp, new FormData(200, 0));
719
 
720
		etiquetteFixationPourcentChp = new ChampSliderPourcentage(i18nC.etiquetteFixationPourcent());
721
		etiquetteFieldSet.add(etiquetteFixationPourcentChp, new FormData(200, 0));
722
 
723
		specimentMethodeFixationChp = new ChampCaseACocher(i18nC.specimenMethodeFixation(), "methodeFixation", true);
724
		etiquetteFieldSet.add(specimentMethodeFixationChp);
725
 
726
		etiquetteMethodeFixationSurSupportChp = new ChampCaseACocher(i18nC.etiquetteMethodeFixationSurSupport(), "methodeFixation", true);
727
		etiquetteFieldSet.add(etiquetteMethodeFixationSurSupportChp);
728
 
729
		etiquetteMethodeFixationSurSpecimenChp = new ChampCaseACocher(i18nC.etiquetteMethodeFixationSurSpecimen(), "methodeFixationSurSpecimen", true);
730
		etiquetteFieldSet.add(etiquetteMethodeFixationSurSpecimenChp);
731
 
732
		typeEcritureChp = new ChampCaseACocher(i18nC.typeEcriture(), "typeEcriture", false);
733
		etiquetteFieldSet.add(typeEcritureChp);
734
 
735
		this.add(etiquetteFieldSet);
736
	}
737
 
738
	private void creerFieldsetTraitement() {
739
		FieldSet traitementFieldSet = new FieldSet();
954 jpm 740
		traitementFieldSet.setHeading(i18nC.collectionTitreTraitement());
862 jpm 741
		traitementFieldSet.setCollapsible(true);
742
		traitementFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));
743
 
744
		traitementCombo  = new ChampComboBoxListeValeurs(i18nC.collectionTraitement(), "onpi");
745
		traitementCombo.setTrie("id_valeur");
746
		traitementFieldSet.add(traitementCombo, new FormData(300, 0));
747
 
748
		poisonTraitementChp = new ChampCaseACocher(i18nC.collectionTraitementPoison(), "poisonTraitement", true);
749
		traitementFieldSet.add(poisonTraitementChp);
750
 
751
		insecteTraitementChp = new ChampCaseACocher(i18nC.collectionTraitementInsecte(), "insecteTraitement", true);
752
		traitementFieldSet.add(insecteTraitementChp);
753
 
754
		this.add(traitementFieldSet);
755
	}
756
 
757
	private void creerFieldsetEtat() {
758
		FieldSet etatFieldSet = new FieldSet();
954 jpm 759
		etatFieldSet.setHeading(i18nC.collectionTitreEtatEtDegradation());
862 jpm 760
		etatFieldSet.setCollapsible(true);
761
		etatFieldSet.setLayout(Formulaire.creerFormLayout(largeurLabelDefaut, alignementLabelDefaut));
762
 
763
		etatGeneralCombo = new ChampComboBoxListeValeurs(i18nC.collectionEtatGeneral(), "etat");
764
		etatGeneralCombo.setToolTip(i18nC.collectionEtatGeneralInfo());
765
		etatGeneralCombo.setTrie("id_valeur");
766
		etatFieldSet.add(etatGeneralCombo, new FormData(300, 0));
767
 
768
		specimenDegradationChp = new ChampMultiValeursMultiTypes(i18nC.degradationSpecimen(), 150, true);
769
		specimenDegradationChp.initialiserType("specimenDegradation");
770
		specimenDegradationChp.initialiserCombobox("niveauImportance");
771
		etatFieldSet.add(specimenDegradationChp);
772
 
773
		presentationDegradationChp = new ChampMultiValeursMultiTypes(i18nC.degradationPresentation(), 150, 200, true);
774
		presentationDegradationChp.initialiserType("supportDegradation");
775
		presentationDegradationChp.initialiserCombobox("niveauImportance");
776
		etatFieldSet.add(presentationDegradationChp);
777
 
778
		determinationCombo = new ChampComboBoxListeValeurs(i18nC.collectionDetermination(), "niveauDetermination");
779
		determinationCombo.setTrie("id_valeur");
780
		etatFieldSet.add(determinationCombo, new FormData(450, 0));
781
 
782
		this.add(etatFieldSet);
783
	}
784
 
948 jpm 785
	public void peupler() {
786
		initialiserCollection();
787
		if (collectionBotanique != null) {
788
			typesCollectionBotaCombo.peupler(collectionBotanique.getType());
789
			if (!UtilString.isEmpty(collectionBotanique.getNbreEchantillon())) {
790
				nbreEchantillonChp.setValue(Integer.parseInt(collectionBotanique.getNbreEchantillon()));
791
			}
954 jpm 792
 
948 jpm 793
			peuplerGrilleUniteRangement(collectionBotanique.getUniteRangement());
954 jpm 794
			etatUniteRangementCombo.peupler(collectionBotanique.getUniteRangementEtat());
795
 
949 jpm 796
			peuplerGrilleUniteBase(collectionBotanique.getUniteBase());
954 jpm 797
 
798
			typePapierConservationChp.peupler(collectionBotanique.getConservationPapierType());
799
			methodeConservationChp.peupler(collectionBotanique.getConservationMethode());
800
 
955 jpm 801
			specimenFixationPourcentChp.peupler(collectionBotanique.getSpecimenFixationPourcent());
956 jpm 802
			etiquetteFixationPourcentChp.peupler(collectionBotanique.getEtiquetteFixationPourcent());
955 jpm 803
			specimentMethodeFixationChp.peupler(collectionBotanique.getSpecimenFixationMethode());
804
			etiquetteMethodeFixationSurSupportChp.peupler(collectionBotanique.getEtiquetteFixationSupport());
805
			etiquetteMethodeFixationSurSpecimenChp.peupler(collectionBotanique.getEtiquetteFixationSpecimen());
806
			typeEcritureChp.peupler(collectionBotanique.getEtiquetteEcriture());
954 jpm 807
 
955 jpm 808
			traitementCombo.peupler(collectionBotanique.getTraitement());
809
			poisonTraitementChp.peupler(collectionBotanique.getTraitementPoison());
810
			insecteTraitementChp.peupler(collectionBotanique.getTraitementInsecte());
954 jpm 811
 
955 jpm 812
			etatGeneralCombo.peupler(collectionBotanique.getEtatGeneral());
813
			specimenDegradationChp.peupler(collectionBotanique.getDegradationSpecimen());
814
			presentationDegradationChp.peupler(collectionBotanique.getDegradationPresentation());
815
			determinationCombo.peupler(collectionBotanique.getDetermination());
948 jpm 816
		}
817
	}
818
 
819
	public void collecter() {
820
		initialiserCollection();
821
		if (etreAccede()) {
822
			collectionBotaniqueCollectee.setType(typesCollectionBotaCombo.getValeur());
968 jpm 823
			if (nbreEchantillonChp.getValue() != null) {
824
				collectionBotaniqueCollectee.setNbreEchantillon(Integer.toString(nbreEchantillonChp.getValue().intValue()));
825
			}
954 jpm 826
 
948 jpm 827
			collectionBotaniqueCollectee.setUniteRangement(collecterGrilleUniteRangement());
954 jpm 828
			collectionBotaniqueCollectee.setUniteRangementEtat(etatUniteRangementCombo.getValeur());
829
 
949 jpm 830
			collectionBotaniqueCollectee.setUniteBase(collecterGrilleUniteBase());
954 jpm 831
 
832
			collectionBotaniqueCollectee.setConservationPapierType(typePapierConservationChp.getValeur());
833
			collectionBotaniqueCollectee.setConservationMethode(methodeConservationChp.getValeur());
834
 
835
			collectionBotaniqueCollectee.setSpecimenFixationPourcent(specimenFixationPourcentChp.getValeur());
956 jpm 836
			collectionBotaniqueCollectee.setEtiquetteFixationPourcent(etiquetteFixationPourcentChp.getValeur());
954 jpm 837
			collectionBotaniqueCollectee.setSpecimenFixationMethode(specimentMethodeFixationChp.getValeur());
838
			collectionBotaniqueCollectee.setEtiquetteFixationSupport(etiquetteMethodeFixationSurSupportChp.getValeur());
839
			collectionBotaniqueCollectee.setEtiquetteFixationSpecimen(etiquetteMethodeFixationSurSpecimenChp.getValeur());
840
			collectionBotaniqueCollectee.setEtiquetteEcriture(typeEcritureChp.getValeur());
841
 
842
			collectionBotaniqueCollectee.setTraitement(traitementCombo.getValeur());
843
			collectionBotaniqueCollectee.setTraitementPoison(poisonTraitementChp.getValeur());
844
			collectionBotaniqueCollectee.setTraitementInsecte(insecteTraitementChp.getValeur());
845
 
846
			collectionBotaniqueCollectee.setEtatGeneral(etatGeneralCombo.getValeur());
847
			collectionBotaniqueCollectee.setDegradationSpecimen(specimenDegradationChp.getValeurs());
848
			collectionBotaniqueCollectee.setDegradationPresentation(presentationDegradationChp.getValeurs());
849
			collectionBotaniqueCollectee.setDetermination(determinationCombo.getValeur());
948 jpm 850
		}
851
	}
852
 
853
	private void initialiserCollection() {
854
		collection = ((CollectionForm) formulaire).collection;
855
		if (collection != null) {
856
			collectionBotanique = collection.getBotanique();
857
		}
858
 
859
		collectionCollectee = ((CollectionForm) formulaire).collectionCollectee;
860
		if (collectionCollectee != null) {
861
			collectionBotaniqueCollectee = collectionCollectee.getBotanique();
862
		}
863
	}
864
 
806 jpm 865
	public void rafraichir(Object nouvellesDonnees) {
866
		if (nouvellesDonnees instanceof ValeurListe) {
867
			ValeurListe listeValeurs = (ValeurListe) nouvellesDonnees;
868
			rafraichirValeurListe(listeValeurs);
869
		} else {
954 jpm 870
			Debug.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()));
806 jpm 871
		}
872
	}
873
 
874
	private void rafraichirValeurListe(ValeurListe listeValeurs) {
954 jpm 875
		if (listeValeurs.getId().equals(config.getListeId("typeUniteRangement"))) {
806 jpm 876
			Iterator<String> it = listeValeurs.keySet().iterator();
877
			while (it.hasNext()) {
878
				Valeur valeur = listeValeurs.get(it.next());
879
				UniteRangement unite = new UniteRangement();
948 jpm 880
				unite.setId(valeur.getId());
806 jpm 881
				unite.setType(valeur.getNom());
831 jpm 882
				unite.setTypeAutre(false);
806 jpm 883
				uniteRangementGrille.getStore().add(unite);
884
			}
831 jpm 885
		} else if (listeValeurs.getId().equals(config.getListeId("typeUniteBase"))) {
886
			Iterator<String> it = listeValeurs.keySet().iterator();
887
			while (it.hasNext()) {
888
				Valeur valeur = listeValeurs.get(it.next());
889
				UniteBase unite = new UniteBase();
948 jpm 890
				unite.setId(valeur.getId());
831 jpm 891
				unite.setType(valeur.getNom());
892
				unite.setTypeAutre(false);
893
				uniteBaseGrille.getStore().add(unite);
894
			}
806 jpm 895
		} else {
954 jpm 896
			Debug.log("Gestion de la liste "+listeValeurs.getId()+" non implémenté!");
806 jpm 897
		}
898
	}
899
}