Subversion Repositories eFlore/Applications.coel

Rev

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