Subversion Repositories eFlore/Applications.coel

Rev

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