1,6 → 1,7 |
package org.tela_botanica.client.vues.collection; |
|
import java.util.ArrayList; |
import java.util.HashMap; |
import java.util.Iterator; |
import java.util.List; |
|
16,6 → 17,14 |
import org.tela_botanica.client.modeles.UniteRangement; |
import org.tela_botanica.client.modeles.Valeur; |
import org.tela_botanica.client.modeles.ValeurListe; |
import org.tela_botanica.client.modeles.aDonnee; |
import org.tela_botanica.client.modeles.collection.Collection; |
import org.tela_botanica.client.modeles.collection.CollectionAPersonne; |
import org.tela_botanica.client.modeles.collection.CollectionBotanique; |
import org.tela_botanica.client.util.Debug; |
import org.tela_botanica.client.util.Pattern; |
import org.tela_botanica.client.util.UtilNombre; |
import org.tela_botanica.client.util.UtilString; |
import org.tela_botanica.client.vues.Formulaire; |
import org.tela_botanica.client.vues.FormulaireOnglet; |
|
39,9 → 48,11 |
import com.extjs.gxt.ui.client.widget.grid.AggregationRowConfig; |
import com.extjs.gxt.ui.client.widget.grid.CellEditor; |
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig; |
import com.extjs.gxt.ui.client.widget.grid.ColumnData; |
import com.extjs.gxt.ui.client.widget.grid.ColumnModel; |
import com.extjs.gxt.ui.client.widget.grid.EditorGrid; |
import com.extjs.gxt.ui.client.widget.grid.Grid; |
import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer; |
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel; |
import com.extjs.gxt.ui.client.widget.grid.HeaderGroupConfig; |
import com.extjs.gxt.ui.client.widget.grid.SummaryType; |
55,11 → 66,16 |
|
public class CollectionFormDescription extends FormulaireOnglet implements Rafraichissable { |
|
private Collection collection = null; |
private CollectionBotanique collectionBotanique = null; |
private Collection collectionCollectee = null; |
private CollectionBotanique collectionBotaniqueCollectee = null; |
|
private ChampComboBoxListeValeurs typesCollectionBotaCombo = null; |
private NumberField nbreEchantillonChp = null; |
private Grid<UniteRangement> uniteRangementGrille = null; |
private EditorGrid<UniteRangement> uniteRangementGrille = null; |
private ChampComboBoxListeValeurs etatUniteRangementCombo = null; |
private Grid<UniteBase> uniteBaseGrille = null; |
private EditorGrid<UniteBase> uniteBaseGrille = null; |
private ChampCaseACocher typePapierConservationChp = null; |
private ChampCaseACocher methodeConservationChp = null; |
private ChampSliderPourcentage specimenFixationPourcentChp = null; |
75,6 → 91,7 |
private ChampComboBoxListeValeurs determinationCombo = null; |
private ChampMultiValeursMultiTypes specimenDegradationChp = null; |
private ChampMultiValeursMultiTypes presentationDegradationChp = null; |
private ComboBox<InterneValeur> precisionCombo; |
|
public CollectionFormDescription(Formulaire formulaireCourrant) { |
initialiserOnglet(formulaireCourrant); |
141,7 → 158,7 |
return panneau; |
} |
|
private Grid<UniteRangement> creerGrilleUniteRangement() { |
private EditorGrid<UniteRangement> creerGrilleUniteRangement() { |
ListStore<UniteRangement> storeGrille = new ListStore<UniteRangement>(); |
|
List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>(); |
149,10 → 166,10 |
|
NumberField champNombre = new NumberField(); |
champNombre.setFormat(NumberFormat.getFormat("#")); |
CellEditor editeurNombre = new CellEditor(champNombre); |
|
ColumnConfig nombreColonne = new ColumnConfig("nombre", i18nC.collectionUniteNbre(), 50); |
nombreColonne.setEditor(editeurNombre); |
nombreColonne.setEditor(new CellEditor(champNombre)); |
nombreColonne.setNumberFormat(NumberFormat.getFormat("#")); |
colonnes.add(nombreColonne); |
|
ListStore<InterneValeur> precisionStore = new ListStore<InterneValeur>(); |
159,7 → 176,7 |
precisionStore.add(new InterneValeur(UniteRangement.COMPTE_APPROXIMATIF, i18nC.precisionApproximatif())); |
precisionStore.add(new InterneValeur(UniteRangement.COMPTE_EXACT, i18nC.precisionExact())); |
|
final ComboBox<InterneValeur> precisionCombo = new ComboBox<InterneValeur>(); |
precisionCombo = new ComboBox<InterneValeur>(); |
precisionCombo.setForceSelection(true); |
precisionCombo.setTriggerAction(TriggerAction.ALL); |
precisionCombo.setDisplayField("nom"); |
190,7 → 207,7 |
} |
} |
return retour; |
} |
} |
}; |
|
ColumnConfig precisionColonne = new ColumnConfig("precision", i18nC.collectionUnitePrecision(), 50); |
207,6 → 224,12 |
GridSelectionModel<UniteRangement> modeleDeSelection = new GridSelectionModel<UniteRangement>(); |
ColumnModel modeleDeColonnes = new ColumnModel(colonnes); |
|
AggregationRowConfig<UniteBase> total = new AggregationRowConfig<UniteBase>(); |
total.setHtml("type", "TOTAL"); |
total.setSummaryType("nombre", SummaryType.SUM); |
total.setSummaryFormat("nombre", NumberFormat.getFormat("#")); |
modeleDeColonnes.addAggregationRow(total); |
|
EditorGrid<UniteRangement> grilleUniteRangement = new EditorGrid<UniteRangement>(storeGrille, modeleDeColonnes); |
grilleUniteRangement.setHeight(300); |
grilleUniteRangement.setBorders(true); |
220,6 → 243,66 |
return grilleUniteRangement; |
} |
|
private String collecterGrilleUniteRangement() { |
String truk = ""; |
int nbreUnite = uniteRangementGrille.getStore().getCount(); |
for (int i = 0; i < nbreUnite; i++) { |
UniteRangement unite = uniteRangementGrille.getStore().getAt(i); |
truk += unite.getId()+aDonnee.SEPARATEUR_TYPE_VALEUR; |
truk += UtilNombre.formaterEnEntier(unite.getNombre())+aDonnee.SEPARATEUR_DONNEES; |
String precision = ""; |
InterneValeur precisionValeur = precisionCombo.getStore().findModel("nom", unite.getPrecision()); |
if (precisionValeur != null) { |
precision = precisionValeur.getAbr(); |
} |
truk += precision+aDonnee.SEPARATEUR_DONNEES; |
truk += unite.getFormat(); |
truk += (i == (nbreUnite - 1)) ? "" : aDonnee.SEPARATEUR_VALEURS; |
} |
return truk; |
} |
|
private void peuplerGrilleUniteRangement(String valeurTruk) { |
if (!UtilString.isEmpty(valeurTruk)) { |
HashMap<String,UniteRangement> unitesEnregistrees = new HashMap<String,UniteRangement>(); |
String[] unites = valeurTruk.split(Pattern.quote(aDonnee.SEPARATEUR_VALEURS)); |
for (int i = 0; i < unites.length; i++) { |
String[] uniteTypeIdDonnees = unites[i].split(Pattern.quote(aDonnee.SEPARATEUR_TYPE_VALEUR)); |
String uniteChaineDonnees = uniteTypeIdDonnees[1]; |
String[] uniteDonnees = uniteChaineDonnees.split(Pattern.quote(aDonnee.SEPARATEUR_DONNEES)); |
|
UniteRangement uniteRangement = new UniteRangement(); |
uniteRangement.setId(uniteTypeIdDonnees[0]); |
if (uniteDonnees.length > 0) { |
uniteRangement.setNombre(UtilString.formaterEnDouble(uniteDonnees[0])); |
} |
if (uniteDonnees.length > 1) { |
uniteRangement.setPrecision(uniteDonnees[1]); |
} |
if (uniteDonnees.length > 2) { |
uniteRangement.setFormat(uniteDonnees[2]); |
Debug.log(uniteTypeIdDonnees[0]+"/"+uniteTypeIdDonnees[1]+"/"+uniteDonnees[0]+"-"+uniteDonnees[1]+"-"+uniteDonnees[2]); |
} |
unitesEnregistrees.put(uniteTypeIdDonnees[0], uniteRangement); |
} |
|
ArrayList<UniteRangement> listeUniteMaj = new ArrayList<UniteRangement>(); |
int nbreUnite = uniteRangementGrille.getStore().getCount(); |
for (int i = 0; i < nbreUnite; i++) { |
UniteRangement uniteDansGrille = uniteRangementGrille.getStore().getAt(i); |
UniteRangement uniteEnregistree = unitesEnregistrees.get(uniteDansGrille.getId()); |
if (uniteEnregistree != null) { |
listeUniteMaj.add(uniteEnregistree); |
} else { |
listeUniteMaj.add(uniteDansGrille); |
} |
} |
uniteRangementGrille.getStore().removeAll(); |
uniteRangementGrille.getStore().add(listeUniteMaj); |
layout(); |
} |
} |
|
private ToolBar creerBarreOutilsGrilleUniteRangement() { |
ToolBar barreOutils = new ToolBar(); |
|
295,7 → 378,7 |
add(panneauGrille); |
} |
|
private Grid<UniteBase> creerGrilleUniteBase() { |
private EditorGrid<UniteBase> creerGrilleUniteBase() { |
ListStore<UniteBase> storeGrille = new ListStore<UniteBase>(); |
|
List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>(); |
307,6 → 390,7 |
|
ColumnConfig nombreColonne = new ColumnConfig("nombre", i18nC.collectionUniteNbre(), 50); |
nombreColonne.setEditor(editeurNombre); |
nombreColonne.setNumberFormat(NumberFormat.getFormat("#")); |
colonnes.add(nombreColonne); |
|
ListStore<InterneValeur> precisionStore = new ListStore<InterneValeur>(); |
360,6 → 444,7 |
|
ColumnConfig partNombreColonne = new ColumnConfig("nombre_part", i18nC.collectionUniteNbre(), 50); |
partNombreColonne.setEditor(editeurNombre); |
partNombreColonne.setNumberFormat(NumberFormat.getFormat("#")); |
colonnes.add(partNombreColonne); |
|
ColumnConfig partPrecisionColonne = new ColumnConfig("precision_part", i18nC.collectionUnitePrecision(), 50); |
368,6 → 453,7 |
|
ColumnConfig spNombreColonne = new ColumnConfig("nombre_sp", i18nC.collectionUniteNbre(), 50); |
spNombreColonne.setEditor(editeurNombre); |
spNombreColonne.setNumberFormat(NumberFormat.getFormat("#")); |
colonnes.add(spNombreColonne); |
|
ColumnConfig spPrecisionColonne = new ColumnConfig("precision_sp", i18nC.collectionUnitePrecision(), 50); |
548,6 → 634,39 |
this.add(etatFieldSet); |
} |
|
public void peupler() { |
initialiserCollection(); |
if (collectionBotanique != null) { |
typesCollectionBotaCombo.peupler(collectionBotanique.getType()); |
if (!UtilString.isEmpty(collectionBotanique.getNbreEchantillon())) { |
nbreEchantillonChp.setValue(Integer.parseInt(collectionBotanique.getNbreEchantillon())); |
} |
peuplerGrilleUniteRangement(collectionBotanique.getUniteRangement()); |
} |
} |
|
public void collecter() { |
initialiserCollection(); |
if (etreAccede()) { |
collectionBotaniqueCollectee.setType(typesCollectionBotaCombo.getValeur()); |
collectionBotaniqueCollectee.setNbreEchantillon(Integer.toString(nbreEchantillonChp.getValue().intValue())); |
collectionBotaniqueCollectee.setUniteRangement(collecterGrilleUniteRangement()); |
Debug.log(collecterGrilleUniteRangement()); |
} |
} |
|
private void initialiserCollection() { |
collection = ((CollectionForm) formulaire).collection; |
if (collection != null) { |
collectionBotanique = collection.getBotanique(); |
} |
|
collectionCollectee = ((CollectionForm) formulaire).collectionCollectee; |
if (collectionCollectee != null) { |
collectionBotaniqueCollectee = collectionCollectee.getBotanique(); |
} |
} |
|
public void rafraichir(Object nouvellesDonnees) { |
if (nouvellesDonnees instanceof ValeurListe) { |
ValeurListe listeValeurs = (ValeurListe) nouvellesDonnees; |
565,6 → 684,7 |
while (it.hasNext()) { |
Valeur valeur = listeValeurs.get(it.next()); |
UniteRangement unite = new UniteRangement(); |
unite.setId(valeur.getId()); |
unite.setType(valeur.getNom()); |
unite.setTypeAutre(false); |
uniteRangementGrille.getStore().add(unite); |
574,6 → 694,7 |
while (it.hasNext()) { |
Valeur valeur = listeValeurs.get(it.next()); |
UniteBase unite = new UniteBase(); |
unite.setId(valeur.getId()); |
unite.setType(valeur.getNom()); |
unite.setTypeAutre(false); |
uniteBaseGrille.getStore().add(unite); |