Subversion Repositories eFlore/Applications.coel

Rev

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