Subversion Repositories eFlore/Applications.coel

Rev

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