Subversion Repositories eFlore/Applications.coel

Compare Revisions

Ignore whitespace Rev 948 → Rev 949

/trunk/src/org/tela_botanica/client/vues/collection/CollectionFormDescription.java
13,14 → 13,13
import org.tela_botanica.client.images.Images;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.InterneValeur;
import org.tela_botanica.client.modeles.UniteBase;
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.modeles.collection.UniteBase;
import org.tela_botanica.client.modeles.collection.UniteRangement;
import org.tela_botanica.client.util.Debug;
import org.tela_botanica.client.util.Pattern;
import org.tela_botanica.client.util.UtilNombre;
48,11 → 47,8
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;
71,6 → 67,7
private Collection collectionCollectee = null;
private CollectionBotanique collectionBotaniqueCollectee = null;
private ListStore<InterneValeur> precisionStore = null;
private ChampComboBoxListeValeurs typesCollectionBotaCombo = null;
private NumberField nbreEchantillonChp = null;
private EditorGrid<UniteRangement> uniteRangementGrille = null;
91,8 → 88,8
private ChampComboBoxListeValeurs determinationCombo = null;
private ChampMultiValeursMultiTypes specimenDegradationChp = null;
private ChampMultiValeursMultiTypes presentationDegradationChp = null;
private ComboBox<InterneValeur> precisionCombo;
public CollectionFormDescription(Formulaire formulaireCourrant) {
initialiserOnglet(formulaireCourrant);
setId("description");
103,6 → 100,7
formulaireLayout.setLabelWidth(300);
creerFieldsetPrecision();
creerStorePrecision();
creerUniteRangement();
creerUniteBase();
creerFieldsetConservation();
132,6 → 130,40
this.add(precisionFieldSet);
}
private void creerStorePrecision() {
precisionStore = new ListStore<InterneValeur>();
precisionStore.add(new InterneValeur(UniteRangement.COMPTE_APPROXIMATIF, i18nC.precisionApproximatif()));
precisionStore.add(new InterneValeur(UniteRangement.COMPTE_EXACT, i18nC.precisionExact()));
}
private String getPrecisionNom(String precisionAbr) {
String precision = "";
InterneValeur precisionValeur = precisionStore.findModel("abr", precisionAbr);
if (precisionValeur != null) {
precision = precisionValeur.getNom();
}
return precision;
}
private String getPrecisionAbr(String precisionNom) {
String precision = "";
InterneValeur precisionValeur = precisionStore.findModel("nom", precisionNom);
if (precisionValeur != null) {
precision = precisionValeur.getAbr();
}
return precision;
}
private ComboBox<InterneValeur> getChampPrecision() {
ComboBox<InterneValeur> precisionCombo = new ComboBox<InterneValeur>();
precisionCombo.setForceSelection(true);
precisionCombo.setTriggerAction(TriggerAction.ALL);
precisionCombo.setDisplayField("nom");
precisionCombo.setStore(precisionStore);
precisionCombo.setEditable(false);
return precisionCombo;
}
private void creerUniteRangement() {
ContentPanel panneauGrille = creerPanneauContenantGrille(i18nC.collectionUniteRangementTitre());
171,27 → 203,16
nombreColonne.setEditor(new CellEditor(champNombre));
nombreColonne.setNumberFormat(NumberFormat.getFormat("#"));
colonnes.add(nombreColonne);
ListStore<InterneValeur> precisionStore = new ListStore<InterneValeur>();
precisionStore.add(new InterneValeur(UniteRangement.COMPTE_APPROXIMATIF, i18nC.precisionApproximatif()));
precisionStore.add(new InterneValeur(UniteRangement.COMPTE_EXACT, i18nC.precisionExact()));
precisionCombo = new ComboBox<InterneValeur>();
precisionCombo.setForceSelection(true);
precisionCombo.setTriggerAction(TriggerAction.ALL);
precisionCombo.setDisplayField("nom");
precisionCombo.setStore(precisionStore);
precisionCombo.setEditable(false);
CellEditor editeurPrecision = new CellEditor(precisionCombo) {
CellEditor editeurPrecision = new CellEditor(getChampPrecision()) {
@Override
public Object preProcessValue(Object valeur) {
InterneValeur retour = null;
if (valeur != null ) {
if (precisionCombo.getStore().findModel("nom", valeur.toString()) != null) {
retour = precisionCombo.getStore().findModel("nom", valeur.toString());
} else if (precisionCombo.getStore().findModel("abr", valeur.toString()) != null) {
retour = precisionCombo.getStore().findModel("abr", valeur.toString());
if (precisionStore.findModel("nom", valeur.toString()) != null) {
retour = precisionStore.findModel("nom", valeur.toString());
} else if (precisionStore.findModel("abr", valeur.toString()) != null) {
retour = precisionStore.findModel("abr", valeur.toString());
}
}
return retour;
250,12 → 271,7
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 += getPrecisionAbr(unite.getPrecision())+aDonnee.SEPARATEUR_DONNEES;
truk += unite.getFormat();
truk += (i == (nbreUnite - 1)) ? "" : aDonnee.SEPARATEUR_VALEURS;
}
274,10 → 290,10
UniteRangement uniteRangement = new UniteRangement();
uniteRangement.setId(uniteTypeIdDonnees[0]);
if (uniteDonnees.length > 0) {
uniteRangement.setNombre(UtilString.formaterEnDouble(uniteDonnees[0]));
uniteRangement.setNombre(UtilString.formaterEnEntier(uniteDonnees[0]));
}
if (uniteDonnees.length > 1) {
uniteRangement.setPrecision(uniteDonnees[1]);
uniteRangement.setPrecision(getPrecisionNom(uniteDonnees[1]));
}
if (uniteDonnees.length > 2) {
uniteRangement.setFormat(uniteDonnees[2]);
292,6 → 308,7
UniteRangement uniteDansGrille = uniteRangementGrille.getStore().getAt(i);
UniteRangement uniteEnregistree = unitesEnregistrees.get(uniteDansGrille.getId());
if (uniteEnregistree != null) {
uniteEnregistree.setType(uniteDansGrille.getType());
listeUniteMaj.add(uniteEnregistree);
} else {
listeUniteMaj.add(uniteDansGrille);
377,7 → 394,7
add(panneauGrille);
}
private EditorGrid<UniteBase> creerGrilleUniteBase() {
ListStore<UniteBase> storeGrille = new ListStore<UniteBase>();
393,26 → 410,15
nombreColonne.setNumberFormat(NumberFormat.getFormat("#"));
colonnes.add(nombreColonne);
ListStore<InterneValeur> precisionStore = new ListStore<InterneValeur>();
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.setForceSelection(true);
precisionCombo.setTriggerAction(TriggerAction.ALL);
precisionCombo.setDisplayField("nom");
precisionCombo.setStore(precisionStore);
precisionCombo.setEditable(false);
CellEditor editeurPrecision = new CellEditor(precisionCombo) {
CellEditor editeurPrecision = new CellEditor(getChampPrecision()) {
@Override
public Object preProcessValue(Object valeur) {
InterneValeur retour = null;
if (valeur != null ) {
if (precisionCombo.getStore().findModel("nom", valeur.toString()) != null) {
retour = precisionCombo.getStore().findModel("nom", valeur.toString());
} else if (precisionCombo.getStore().findModel("abr", valeur.toString()) != null) {
retour = precisionCombo.getStore().findModel("abr", valeur.toString());
if (precisionStore.findModel("nom", valeur.toString()) != null) {
retour = precisionStore.findModel("nom", valeur.toString());
} else if (precisionStore.findModel("abr", valeur.toString()) != null) {
retour = precisionStore.findModel("abr", valeur.toString());
}
}
return retour;
489,6 → 495,78
return grilleUniteBase;
}
private String collecterGrilleUniteBase() {
String truk = "";
int nbreUnite = uniteBaseGrille.getStore().getCount();
for (int i = 0; i < nbreUnite; i++) {
UniteBase unite = uniteBaseGrille.getStore().getAt(i);
truk += unite.getId()+aDonnee.SEPARATEUR_TYPE_VALEUR;
truk += UtilNombre.formaterEnEntier(unite.getNombre())+aDonnee.SEPARATEUR_DONNEES;
truk += getPrecisionAbr(unite.getPrecision())+aDonnee.SEPARATEUR_DONNEES;
truk += unite.getFormat()+aDonnee.SEPARATEUR_DONNEES;
truk += UtilNombre.formaterEnEntier(unite.getNombrePart())+aDonnee.SEPARATEUR_DONNEES;
truk += getPrecisionAbr(unite.getPrecisionPart())+aDonnee.SEPARATEUR_DONNEES;
truk += UtilNombre.formaterEnEntier(unite.getNombreSp())+aDonnee.SEPARATEUR_DONNEES;
truk += getPrecisionAbr(unite.getPrecisionSp());
truk += (i == (nbreUnite - 1)) ? "" : aDonnee.SEPARATEUR_VALEURS;
}
return truk;
}
private void peuplerGrilleUniteBase(String valeurTruk) {
if (!UtilString.isEmpty(valeurTruk)) {
HashMap<String,UniteBase> unitesEnregistrees = new HashMap<String,UniteBase>();
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));
UniteBase uniteBase = new UniteBase();
uniteBase.setId(uniteTypeIdDonnees[0]);
if (uniteDonnees.length > 0) {
uniteBase.setNombre(UtilString.formaterEnEntier(uniteDonnees[0]));
}
if (uniteDonnees.length > 1) {
uniteBase.setPrecision(getPrecisionNom(uniteDonnees[1]));
}
if (uniteDonnees.length > 2) {
uniteBase.setFormat(uniteDonnees[2]);
}
if (uniteDonnees.length > 3) {
uniteBase.setNombrePart(UtilString.formaterEnEntier(uniteDonnees[3]));
}
if (uniteDonnees.length > 4) {
uniteBase.setPrecisionPart(getPrecisionNom(uniteDonnees[4]));
}
if (uniteDonnees.length > 5) {
uniteBase.setNombreSp(UtilString.formaterEnEntier(uniteDonnees[5]));
}
if (uniteDonnees.length > 6) {
uniteBase.setPrecisionSp(getPrecisionNom(uniteDonnees[6]));
Debug.log(uniteTypeIdDonnees[0]+"/"+uniteTypeIdDonnees[1]+"/"+uniteDonnees[0]+"-"+uniteDonnees[1]+"-"+uniteDonnees[2]+uniteDonnees[3]+"-"+uniteDonnees[4]+"-"+uniteDonnees[5]);
}
unitesEnregistrees.put(uniteTypeIdDonnees[0], uniteBase);
}
ArrayList<UniteBase> listeUniteMaj = new ArrayList<UniteBase>();
int nbreUnite = uniteBaseGrille.getStore().getCount();
for (int i = 0; i < nbreUnite; i++) {
UniteBase uniteDansGrille = uniteBaseGrille.getStore().getAt(i);
UniteBase uniteEnregistree = unitesEnregistrees.get(uniteDansGrille.getId());
if (uniteEnregistree != null) {
uniteEnregistree.setType(uniteDansGrille.getType());
listeUniteMaj.add(uniteEnregistree);
} else {
listeUniteMaj.add(uniteDansGrille);
}
}
uniteBaseGrille.getStore().removeAll();
uniteBaseGrille.getStore().add(listeUniteMaj);
layout();
}
}
private ToolBar creerBarreOutilsGrilleUniteBase() {
ToolBar barreOutils = new ToolBar();
642,6 → 720,7
nbreEchantillonChp.setValue(Integer.parseInt(collectionBotanique.getNbreEchantillon()));
}
peuplerGrilleUniteRangement(collectionBotanique.getUniteRangement());
peuplerGrilleUniteBase(collectionBotanique.getUniteBase());
}
}
651,7 → 730,8
collectionBotaniqueCollectee.setType(typesCollectionBotaCombo.getValeur());
collectionBotaniqueCollectee.setNbreEchantillon(Integer.toString(nbreEchantillonChp.getValue().intValue()));
collectionBotaniqueCollectee.setUniteRangement(collecterGrilleUniteRangement());
Debug.log(collecterGrilleUniteRangement());
collectionBotaniqueCollectee.setUniteBase(collecterGrilleUniteBase());
Debug.log(collecterGrilleUniteBase());
}
}