101,6 → 101,8 |
private ChampMultiValeursMultiTypes specimenDegradationChp = null; |
private ChampMultiValeursMultiTypes presentationDegradationChp = null; |
private Text labelPresentationDegradationChp = null; |
private ChampNombre planchesHerbier = null; |
private ChampNombre nbEspeces = null; |
|
public CollectionFormDescription(Formulaire formulaireCourrant) { |
initialiserOnglet(formulaireCourrant); |
446,277 → 448,6 |
return bouton; |
} |
|
private ContentPanel creerUniteBase() { |
ContentPanel panneauGrille = creerPanneauContenantGrille(i18nC.collectionUniteBaseTitre()); |
|
uniteBaseGrille = creerGrilleUniteBase(); |
mediateur.obtenirListeValeurEtRafraichir(this, "typeUniteBase", null); |
panneauGrille.add(uniteBaseGrille); |
|
ToolBar barreOutils = creerBarreOutilsGrilleUniteBase(); |
panneauGrille.setTopComponent(barreOutils); |
|
return panneauGrille; |
} |
|
private EditorGrid<UniteBase> creerGrilleUniteBase() { |
ListStore<UniteBase> storeGrille = new ListStore<UniteBase>(); |
|
List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>(); |
colonnes.add(new ColumnConfig("type", i18nC.collectionUniteType(), 150)); |
|
NumberField champNombre = creerChampNombre(); |
champNombre.setFormat(NumberFormat.getFormat("#")); |
CellEditor editeurNombre = new CellEditor(champNombre); |
|
ColumnConfig nombreColonne = new ColumnConfig("nombre", i18nC.collectionUniteNbre(), 50); |
nombreColonne.setEditor(editeurNombre); |
nombreColonne.setNumberFormat(NumberFormat.getFormat("#")); |
colonnes.add(nombreColonne); |
|
CellEditor editeurPrecision = new CellEditor(getChampPrecision()) { |
@Override |
public Object preProcessValue(Object valeur) { |
InterneValeur retour = null; |
if (valeur != null ) { |
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; |
} |
|
@Override |
public Object postProcessValue(Object valeur) { |
String retour = null; |
if (valeur != null ) { |
if (valeur instanceof InterneValeur) { |
InterneValeur valeurInterne = (InterneValeur) valeur; |
retour = valeurInterne.getNom(); |
} |
} |
return retour; |
} |
}; |
|
ColumnConfig precisionColonne = new ColumnConfig("precision", i18nC.collectionUnitePrecision(), 50); |
precisionColonne.setEditor(editeurPrecision); |
colonnes.add(precisionColonne); |
|
TextField<String> formatChp = new TextField<String>(); |
ColumnConfig formatColonne = new ColumnConfig("format", i18nC.collectionUniteFormat(), 100); |
formatColonne.setEditor(new CellEditor(formatChp)); |
colonnes.add(formatColonne); |
|
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); |
partPrecisionColonne.setEditor(editeurPrecision); |
colonnes.add(partPrecisionColonne); |
|
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); |
spPrecisionColonne.setEditor(editeurPrecision); |
colonnes.add(spPrecisionColonne); |
|
GridSelectionModel<UniteBase> modeleDeSelection = new GridSelectionModel<UniteBase>(); |
ColumnModel modeleDeColonnes = new ColumnModel(colonnes); |
modeleDeColonnes.addHeaderGroup(0, 0, new HeaderGroupConfig(i18nC.collectionUniteBase(), 1, 4)); |
modeleDeColonnes.addHeaderGroup(0, 4, new HeaderGroupConfig(i18nC.collectionUniteBasePart(), 1, 2)); |
modeleDeColonnes.addHeaderGroup(0, 6, new HeaderGroupConfig(i18nC.collectionUniteBaseSp(), 1, 2)); |
|
AggregationRowConfig<UniteBase> total = new AggregationRowConfig<UniteBase>(); |
total.setHtml("type", "TOTAL"); |
total.setSummaryType("nombre", SummaryType.SUM); |
total.setSummaryFormat("nombre", NumberFormat.getFormat("#")); |
total.setSummaryType("nombre_part", SummaryType.SUM); |
total.setSummaryFormat("nombre_part", NumberFormat.getFormat("#")); |
total.setSummaryType("nombre_sp", SummaryType.SUM); |
total.setSummaryFormat("nombre_sp", NumberFormat.getFormat("#")); |
modeleDeColonnes.addAggregationRow(total); |
|
EditorGrid<UniteBase> grilleUniteBase = new EditorGrid<UniteBase>(storeGrille, modeleDeColonnes); |
grilleUniteBase.setHeight(200); |
grilleUniteBase.setBorders(true); |
grilleUniteBase.setSelectionModel(modeleDeSelection); |
grilleUniteBase.getView().setForceFit(true); |
grilleUniteBase.getView().setAutoFill(true); |
grilleUniteBase.setAutoExpandColumn("type"); |
grilleUniteBase.setStripeRows(true); |
grilleUniteBase.setTrackMouseOver(true); |
|
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); |
if (unite.getTypeAutre()) { |
truk += unite.getType(); |
} else { |
truk += unite.getId(); |
} |
truk += 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 = parserValeurUniteBase(valeurTruk); |
|
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); |
} |
} |
|
Iterator<String> it = unitesEnregistrees.keySet().iterator(); |
while (it.hasNext()) { |
String cle = it.next(); |
if (cle.matches(aDonnee.TYPE_AUTRE+aDonnee.SEPARATEUR_TYPE_VALEUR+"[a-zA-Z0-9]+")) { |
UniteBase uniteAutreEnregistree = unitesEnregistrees.get(cle); |
listeUniteMaj.add(uniteAutreEnregistree); |
} |
} |
|
uniteBaseGrille.getStore().removeAll(); |
uniteBaseGrille.getStore().add(listeUniteMaj); |
layout(); |
} |
} |
|
public static HashMap<String,UniteBase> parserValeurUniteBase(String valeurTruk) { |
HashMap<String,UniteBase> unitesEnregistrees = new HashMap<String,UniteBase>(); |
if (!UtilString.isEmpty(valeurTruk)) { |
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(); |
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])); |
} |
|
if (uniteTypeIdDonnees[0].matches("[0-9]+")) { |
uniteBase.setId(uniteTypeIdDonnees[0]); |
uniteBase.setTypeAutre(false); |
unitesEnregistrees.put(uniteTypeIdDonnees[0], uniteBase); |
} else { |
uniteBase.setType(uniteTypeIdDonnees[0]); |
uniteBase.setTypeAutre(true); |
String id = aDonnee.TYPE_AUTRE+aDonnee.SEPARATEUR_TYPE_VALEUR+uniteTypeIdDonnees[0]+"-"+i; |
uniteBase.setId(id); |
unitesEnregistrees.put(aDonnee.TYPE_AUTRE+aDonnee.SEPARATEUR_TYPE_VALEUR+uniteTypeIdDonnees[0], uniteBase); |
} |
} |
} |
return unitesEnregistrees; |
} |
|
private ToolBar creerBarreOutilsGrilleUniteBase() { |
ToolBar barreOutils = new ToolBar(); |
|
Button ajouterBouton = creerBoutonAjouterUniteBase(); |
barreOutils.add(ajouterBouton); |
|
barreOutils.add(new SeparatorToolItem()); |
|
Button supprimerBouton = creerBoutonSupprimerUniteBase(); |
barreOutils.add(supprimerBouton); |
|
return barreOutils; |
} |
|
private Button creerBoutonAjouterUniteBase() { |
Button bouton = new Button(i18nC.ajouter()); |
bouton.setIcon(Images.ICONES.ajouter()); |
bouton.addSelectionListener(new SelectionListener<ButtonEvent>() { |
@Override |
public void componentSelected(ButtonEvent ce) { |
final MessageBox box = MessageBox.prompt(i18nC.collectionUniteType(), i18nC.collectionUniteBaseSaisirType()); |
box.addCallback(new Listener<MessageBoxEvent>() { |
public void handleEvent(MessageBoxEvent be) { |
if (!UtilString.isEmpty(be.getValue()) && !be.getValue().matches("[0-9]+")) { |
final UniteBase unite = new UniteBase(); |
unite.setType(be.getValue()); |
unite.setTypeAutre(true); |
uniteBaseGrille.getStore().add(unite); |
} else { |
InfoLogger.display("Information", "Vous ne pouvez pas saisir de valeur vide ou numérique"); |
} |
} |
}); |
} |
}); |
return bouton; |
} |
|
private Button creerBoutonSupprimerUniteBase() { |
Button bouton = new Button(i18nC.supprimer()); |
bouton.setIcon(Images.ICONES.supprimer()); |
bouton.addSelectionListener(new SelectionListener<ButtonEvent>() { |
@Override |
public void componentSelected(ButtonEvent ce) { |
UniteBase uniteBaseSelectionnee = uniteBaseGrille.getSelectionModel().getSelectedItem(); |
if (uniteBaseSelectionnee == null) { |
InfoLogger.display(i18nC.informationTitreGenerique(), Mediateur.i18nM.veuillezSelectionner(i18nC.selectionnerUniteBase())); |
} else if (uniteBaseSelectionnee.getTypeAutre() == false) { |
InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerUniteBaseAjoute()); |
} else { |
uniteBaseGrille.getStore().remove(uniteBaseSelectionnee); |
} |
} |
}); |
return bouton; |
} |
|
private void creerFieldsetConservation() { |
FieldSet conservationFieldSet = new FieldSet(); |
conservationFieldSet.setHeadingHtml(i18nC.collectionTitreConservation()); |
799,8 → 530,16 |
etatTypesUniteFieldSet.add(etatUniteRangementCombo); |
|
etatTypesUniteFieldSet.add(creerUniteRangement()); |
etatTypesUniteFieldSet.add(creerUniteBase()); |
|
planchesHerbier = new ChampNombre(); |
planchesHerbier.setFieldLabel(i18nC.collectionNbPlanchesHerbier()); |
|
nbEspeces = new ChampNombre(); |
nbEspeces.setFieldLabel(i18nC.collectionNbEspeces()); |
|
etatTypesUniteFieldSet.add(planchesHerbier); |
etatTypesUniteFieldSet.add(nbEspeces); |
|
add(etatTypesUniteFieldSet); |
|
etatGeneralCombo = new ChampComboBoxListeValeurs(i18nC.collectionEtatGeneral(), "etat"); |
855,8 → 594,15 |
peuplerGrilleUniteRangement(collectionBotanique.getUniteRangement()); |
etatUniteRangementCombo.peupler(collectionBotanique.getUniteRangementEtat()); |
|
peuplerGrilleUniteBase(collectionBotanique.getUniteBase()); |
|
if(!collectionBotanique.getNbPlanchesHerbiers().isEmpty()) { |
planchesHerbier.setValue((Integer.parseInt(collectionBotanique.getNbPlanchesHerbiers()))); |
} |
|
if(!collectionBotanique.getNbEspeces().isEmpty()) { |
nbEspeces.setValue((Integer.parseInt(collectionBotanique.getNbEspeces()))); |
} |
|
typePapierConservationChp.peupler(collectionBotanique.getConservationPapierType()); |
methodeConservationChp.peupler(collectionBotanique.getConservationMethode()); |
|
889,7 → 635,8 |
collectionBotaniqueCollectee.setUniteRangement(collecterGrilleUniteRangement()); |
collectionBotaniqueCollectee.setUniteRangementEtat(etatUniteRangementCombo.getValeur()); |
|
collectionBotaniqueCollectee.setUniteBase(collecterGrilleUniteBase()); |
collectionBotaniqueCollectee.setNbPlanchesHerbiers(planchesHerbier.getValue()+""); |
collectionBotaniqueCollectee.setNbEspeces(nbEspeces.getValue()+""); |
|
collectionBotaniqueCollectee.setConservationPapierType(typePapierConservationChp.getValeur()); |
collectionBotaniqueCollectee.setConservationMethode(methodeConservationChp.getValeur()); |