branch develop updated (e8d3dca -> 66382fd)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git from e8d3dca Livrable #8277 Merge branch 'feature/8277' into develop new fe4f48b Toujours utiliser la même colonne pour la maturité (See #8273) new 66382fd Livrable #8273 Merge branch 'feature/8273' into develop The 2 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 66382fd1216782884be7b7fc149f27de8492f1da Merge: e8d3dca fe4f48b Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Apr 26 13:17:05 2016 +0200 Livrable #8273 Merge branch 'feature/8273' into develop commit fe4f48b73dec212087c14259671f45b27408f266 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Apr 26 13:16:35 2016 +0200 Toujours utiliser la même colonne pour la maturité (See #8273) Summary of changes: .../IndividualObservationBatchTableHandler.java | 85 +++++++++++----------- .../IndividualObservationBatchTableModel.java | 23 +++--- .../frequency/MaturityColumnIdentifier.java | 45 ++++++++++++ .../frequency/SpeciesFrequencyUIHandler.java | 15 ++-- .../resources/i18n/tutti-ui-swing_en_GB.properties | 2 + .../resources/i18n/tutti-ui-swing_fr_FR.properties | 2 + 6 files changed, 110 insertions(+), 62 deletions(-) create mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/MaturityColumnIdentifier.java -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit fe4f48b73dec212087c14259671f45b27408f266 Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Apr 26 13:16:35 2016 +0200 Toujours utiliser la même colonne pour la maturité (See #8273) --- .../IndividualObservationBatchTableHandler.java | 85 +++++++++++----------- .../IndividualObservationBatchTableModel.java | 23 +++--- .../frequency/MaturityColumnIdentifier.java | 45 ++++++++++++ .../frequency/SpeciesFrequencyUIHandler.java | 15 ++-- .../resources/i18n/tutti-ui-swing_en_GB.properties | 2 + .../resources/i18n/tutti-ui-swing_fr_FR.properties | 2 + 6 files changed, 110 insertions(+), 62 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/IndividualObservationBatchTableHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/IndividualObservationBatchTableHandler.java index a442060..402a73c 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/IndividualObservationBatchTableHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/IndividualObservationBatchTableHandler.java @@ -52,14 +52,15 @@ import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.JXTable; +import org.jdesktop.swingx.autocomplete.ComboBoxCellEditor; import org.jdesktop.swingx.decorator.HighlightPredicate; import org.jdesktop.swingx.decorator.Highlighter; import org.jdesktop.swingx.table.DefaultTableColumnModelExt; import org.jdesktop.swingx.table.TableColumnExt; import org.jdesktop.swingx.table.TableColumnModelExt; import org.nuiton.decorator.Decorator; -import org.nuiton.jaxx.application.swing.table.ColumnIdentifier; +import javax.swing.JComboBox; import javax.swing.event.TableModelEvent; import java.awt.Color; import java.beans.PropertyChangeListener; @@ -73,6 +74,8 @@ import java.util.Objects; import java.util.Set; import java.util.function.Function; +import static org.nuiton.i18n.I18n.t; + /** * To manage individual observations. * @@ -114,13 +117,11 @@ public class IndividualObservationBatchTableHandler implements Closeable { */ private final Map<String, Caracteristic> maturityCaracteristics; /** - * L'identifiant de la colonne de maturité si elle existe. - */ - private ColumnIdentifier<IndividualObservationBatchRowModel> maturityColumnId; - /** * Décorateur d'espèce. */ private final Decorator<Species> speciesDecorator; + private final Decorator<Caracteristic> caracteristicDecorator; + private final Decorator<Caracteristic> caracteristicTipDecorator; /** * Pour calculer la recopie d'une observation individuelle vers les mensurations. */ @@ -167,6 +168,8 @@ public class IndividualObservationBatchTableHandler implements Closeable { this.uiHandler = ui.getHandler(); this.speciesDecorator = uiHandler.getDecorator(Species.class, DecoratorService.WITH_SURVEY_CODE_NO_NAME); + this.caracteristicDecorator = uiHandler.getDecorator(Caracteristic.class, DecoratorService.CARACTERISTIC_PARAMETER_ONLY_WITH_UNIT); + this.caracteristicTipDecorator = uiHandler.getDecorator(Caracteristic.class, DecoratorService.CARACTERISTIC_WITH_UNIT); this.individualObservationTable = ui.getObsTable(); this.frequencyTableModel = uiHandler.getTableModel(); @@ -368,6 +371,15 @@ public class IndividualObservationBatchTableHandler implements Closeable { caracteristic); } + + // Maturity caracteristic column + + Decorator<CaracteristicQualitativeValue> caracteristicQualitativeDecorator = uiHandler.getDecorator(CaracteristicQualitativeValue.class, null); + uiHandler.addComboDataColumnToModel(columnModel, + IndividualObservationBatchTableModel.MATURITY, + caracteristicQualitativeDecorator, + new ArrayList<>()); + { // Other caracteristics column Set<Caracteristic> caracteristicsToSkip = Collections.unmodifiableSet( @@ -520,23 +532,11 @@ public class IndividualObservationBatchTableHandler implements Closeable { @Override public void close() { - // on supprime la colonne maturité en fermant, pour avoir les même colonnes qu'à la création de l'écran (important pour la swing session) - removeMaturityColumnIfPresent(); - model.getIndividualObservationUICache().close(); model.getSamplingCodeUICache().close(); } - protected void removeMaturityColumnIfPresent() { - if (maturityColumnId != null) { - TableColumnExt maturityColumn = individualObservationTable.getColumnExt(maturityColumnId); - individualObservationTable.removeColumn(maturityColumn); - individualObservationTableModel.removeMaturityIdentifier(maturityColumnId); - maturityColumnId = null; - } - } - public List<IndividualObservationBatchRowModel> loadRows(Species species, List<IndividualObservationBatchRowModel> individualObservations) { individualObservationTableModel.setSpecies(species); @@ -591,43 +591,39 @@ public class IndividualObservationBatchTableHandler implements Closeable { // Add maturity column if necessary individualObservationsModel.setMaturityCaracteristic(maturityCaracteristic); - if (maturityCaracteristic != null) { + MaturityColumnIdentifier columnIdentifier = IndividualObservationBatchTableModel.MATURITY; + columnIdentifier.setCaracteristic(maturityCaracteristic); - // remove the row sorter while we add the new column - individualObservationTable.setRowSorter(null); - individualObservationTable.setAutoCreateRowSorter(false); + TableColumnExt columnModel = ((TableColumnModelExt) individualObservationTable.getColumnModel()).getColumnExt(columnIdentifier); - TableColumnModelExt columnModel = (TableColumnModelExt) individualObservationTable.getColumnModel(); + boolean noMaturity = maturityCaracteristic == null; - ColumnIdentifier<IndividualObservationBatchRowModel> maturityColumnId = uiHandler.addCaracteristicColumnToModel(individualObservationTable, - columnModel, - maturityCaracteristic); + columnModel.setVisible(!noMaturity); + ComboBoxCellEditor cellEditor = (ComboBoxCellEditor) columnModel.getCellEditor(); + JComboBox comboBox = (JComboBox) cellEditor.getComponent(); - Objects.requireNonNull(maturityColumnId); - this.maturityColumnId = maturityColumnId; + List<CaracteristicQualitativeValue> dataList; - individualObservationTableModel.addMaturityIdentifier(maturityColumnId); + String title; + String tip; - // on cherche le bon index où insérer la colonne maturité (avant les autres caractéristiques, mais elle peut etre cachee) - int modelIndex = columnModel.getColumnExt(IndividualObservationBatchTableModel.OTHER_CARACTERISTICS).getModelIndex(); - int indexToMove = individualObservationTable.convertColumnIndexToView(modelIndex); + if (noMaturity) { + dataList = Collections.emptyList(); + title = t(columnIdentifier.getHeaderI18nKey()); + tip = t(columnIdentifier.getHeaderTipI18nKey()); - // si la colonne autres caracteristiques est cachée, alors on cherche la première colonne suivante non cachée - int columnCount = columnModel.getColumnCount(true); - while (indexToMove == -1 && modelIndex < columnCount) { - indexToMove = individualObservationTable.convertColumnIndexToView(modelIndex); - modelIndex++; - } - // si une colonne après celle des autres caractéristiques est visible, on déplace la maturité avant cette colonne - // sinon, on laisse la maturité à la fin - if (modelIndex != -1) { - individualObservationTable.moveColumn(columnModel.getColumnCount() - 1, indexToMove); + } else { + dataList = new ArrayList<>(maturityCaracteristic.getQualitativeValue()); + if (!dataList.isEmpty() && dataList.get(0) != null) { + dataList.add(0, null); } - // reset the row sorter - individualObservationTable.setAutoCreateRowSorter(true); - + title = caracteristicDecorator.toString(maturityCaracteristic); + tip = caracteristicTipDecorator.toString(maturityCaracteristic); } + columnModel.setTitle(title); + columnModel.setToolTipText(tip); + SwingUtil.fillComboBox(comboBox, dataList, null); } @@ -674,5 +670,6 @@ public class IndividualObservationBatchTableHandler implements Closeable { } } + } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/IndividualObservationBatchTableModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/IndividualObservationBatchTableModel.java index 49fee2d..ec5388d 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/IndividualObservationBatchTableModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/IndividualObservationBatchTableModel.java @@ -71,6 +71,8 @@ public class IndividualObservationBatchTableModel extends AbstractApplicationTab n("tutti.editIndividualObservationBatch.table.header.size"), n("tutti.editIndividualObservationBatch.table.header.size.tip")); + public static final MaturityColumnIdentifier MATURITY = new MaturityColumnIdentifier(); + public static final ColumnIdentifier<IndividualObservationBatchRowModel> OTHER_CARACTERISTICS = ColumnIdentifier.newId( IndividualObservationBatchRowModel.PROPERTY_CARACTERISTICS, n("tutti.editIndividualObservationBatch.table.header.otherCaracteristics"), @@ -114,6 +116,8 @@ public class IndividualObservationBatchTableModel extends AbstractApplicationTab this.uiModel = uiModel; this.model = uiModel.getIndividualObservationModel(); this.weightUnit = weightUnit; + //FIXME A quoi ça sert ? la maturité est une default caracteristic donc l'éditeur de sa colonne fait le taf, non ? + //FIXME Eviter de mettre des listeners à drotie, à gauche, tout mettre au même endroit si possible qu'on ai une meilleure vision de ce qui se passe // Lorsque la caracteristique de maturité change, on met à jour defaultCaracteristicsMap this.model.addPropertyChangeListener(IndividualObservationBatchUIModel.PROPERTY_MATURITY_CARACTERISTIC, new PropertyChangeListener() { @Override @@ -147,14 +151,6 @@ public class IndividualObservationBatchTableModel extends AbstractApplicationTab } } - public void addMaturityIdentifier(ColumnIdentifier<IndividualObservationBatchRowModel> maturityIdentifer) { - identifiers.add(maturityIdentifer); - } - - public void removeMaturityIdentifier(ColumnIdentifier<IndividualObservationBatchRowModel> maturityIdentifer) { - identifiers.remove(maturityIdentifer); - } - public void setDefaultCaracteristicValues(CaracteristicMap defaultCaracteristicValues) { defaultCaracteristicsMap.replaceAll( (caracteristic, serializable) -> defaultCaracteristicValues.get(caracteristic) @@ -184,8 +180,7 @@ public class IndividualObservationBatchTableModel extends AbstractApplicationTab } } - //FIXME Revoir ça, je comprends pas le but (mais en ayant déplacer le samplingCodePrefix ailleurs cela doit peut-être - //FIXME éviter de faire cela...) + //FIXME A quoi ça sert ? (j'ai déplacé le samplingCodePrefix ailleurs cela doit peut-être éviter de faire cela...) // quand l'utilisateur change le prefix dans la conf, si la ligne a deja un code prélèvement, // le prefix reste le même, même si l'utilisateur supprime le code et en regénère un // il faut pousser le nouveau prefix si l'utilisateur supprime le code @@ -206,7 +201,13 @@ public class IndividualObservationBatchTableModel extends AbstractApplicationTab ColumnIdentifier<IndividualObservationBatchRowModel> columnIdentifier) { boolean editable; - if (columnIdentifier instanceof CaracteristicColumnIdentifier) { + if (columnIdentifier instanceof MaturityColumnIdentifier) { + + MaturityColumnIdentifier maturityColumnIdentifier = (MaturityColumnIdentifier) columnIdentifier; + + editable = maturityColumnIdentifier.withCaracteristic(); + + } else if (columnIdentifier instanceof CaracteristicColumnIdentifier) { CaracteristicColumnIdentifier<IndividualObservationBatchRowModel> caracteristicColumnIdentifier = (CaracteristicColumnIdentifier<IndividualObservationBatchRowModel>) columnIdentifier; diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/MaturityColumnIdentifier.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/MaturityColumnIdentifier.java new file mode 100644 index 0000000..ef0c5fc --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/MaturityColumnIdentifier.java @@ -0,0 +1,45 @@ +package fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency; + +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.ui.swing.util.table.CaracteristicColumnIdentifier; + +import static org.nuiton.i18n.I18n.n; + +/** + * Définition de la colonne de maturité (sa caractéristique est variale selon l'espèce du lot). + * + * Created on 26/04/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 4.5 + */ +public class MaturityColumnIdentifier extends CaracteristicColumnIdentifier<IndividualObservationBatchRowModel> { + + public MaturityColumnIdentifier() { + super(null, + IndividualObservationBatchRowModel.PROPERTY_DEFAULT_CARACTERISTICS, + n("tutti.editIndividualObservationBatch.table.header.maturityNotUsed"), + n("tutti.editIndividualObservationBatch.table.header.maturityNotUsed.tip")); + } + + public void setCaracteristic(Caracteristic caracteristic) { + this.caracteristic = caracteristic; + } + + public boolean withCaracteristic() { + return caracteristic != null; + } + + @Override + public Object getValue(IndividualObservationBatchRowModel entry) { + return caracteristic == null ? null : super.getValue(entry); + } + + @Override + public void setValue(IndividualObservationBatchRowModel entry, Object value) { + if (caracteristic != null) { + super.setValue(entry, value); + } + } + +} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java index 77822e6..945b417 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java @@ -624,10 +624,6 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci EditSpeciesBatchPanelUI parent = getParentContainer(EditSpeciesBatchPanelUI.class); parent.switchToEditBatch(); - //FIXME Voir si on doit encore faire ça après le switch ? je pense que oui... -// // on supprime la colonne maturité en fermant, pour avoir les même colonnes qu'à la création de l'écran (important pour la swing session) -// removeMaturityColumnIfPresent(); - } public void editBatch(FrequencyCellEditor editor, String title) { @@ -635,9 +631,6 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci SpeciesBatchRowModel speciesBatch = editor.getEditRow(); Objects.requireNonNull(speciesBatch, "Impossible d'éditer un lot non renseigné"); - // on enlève la colonne spécifique à l'espèce précédente - individualObservationBatchTableHandler.removeMaturityColumnIfPresent(); - SpeciesFrequencyUIModel model = getModel(); Objects.requireNonNull(title, "title can't be null here ?!"); @@ -1284,6 +1277,14 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci } @Override + protected <R, B> TableColumnExt addComboDataColumnToModel(TableColumnModel model, + ColumnIdentifier<R> identifier, + Decorator<B> decorator, + List<B> data) { + return super.addComboDataColumnToModel(model, identifier, decorator, data); + } + + @Override protected void installTableKeyListener(TableColumnModel columnModel, JTable table, boolean enterToChangeRow) { super.installTableKeyListener(columnModel, table, enterToChangeRow); } diff --git a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties index 01b66f8..9e80615 100644 --- a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties +++ b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties @@ -1021,6 +1021,8 @@ tutti.editIndividualObservationBatch.table.header.id= tutti.editIndividualObservationBatch.table.header.id.tip= tutti.editIndividualObservationBatch.table.header.lengthStepCaracteristic= tutti.editIndividualObservationBatch.table.header.lengthStepCaracteristic.tip= +tutti.editIndividualObservationBatch.table.header.maturityNotUsed= +tutti.editIndividualObservationBatch.table.header.maturityNotUsed.tip= tutti.editIndividualObservationBatch.table.header.otherCaracteristics= tutti.editIndividualObservationBatch.table.header.otherCaracteristics.tip= tutti.editIndividualObservationBatch.table.header.rank= diff --git a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties index b60f8a9..2d7bd5c 100644 --- a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties +++ b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties @@ -960,6 +960,8 @@ tutti.editIndividualObservationBatch.table.header.file=Pièces jointes tutti.editIndividualObservationBatch.table.header.file.tip=Pièces jointes tutti.editIndividualObservationBatch.table.header.lengthStepCaracteristic=Classe de taille tutti.editIndividualObservationBatch.table.header.lengthStepCaracteristic.tip=Classe de taille +tutti.editIndividualObservationBatch.table.header.maturityNotUsed=Maturité +tutti.editIndividualObservationBatch.table.header.maturityNotUsed.tip=Maturité non définie dans le procotole pour ce taxon tutti.editIndividualObservationBatch.table.header.otherCaracteristics=Autres caractéristiques tutti.editIndividualObservationBatch.table.header.otherCaracteristics.tip=Autres caractéristiques tutti.editIndividualObservationBatch.table.header.rank=N° -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit 66382fd1216782884be7b7fc149f27de8492f1da Merge: e8d3dca fe4f48b Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Apr 26 13:17:05 2016 +0200 Livrable #8273 Merge branch 'feature/8273' into develop .../IndividualObservationBatchTableHandler.java | 85 +++++++++++----------- .../IndividualObservationBatchTableModel.java | 23 +++--- .../frequency/MaturityColumnIdentifier.java | 45 ++++++++++++ .../frequency/SpeciesFrequencyUIHandler.java | 15 ++-- .../resources/i18n/tutti-ui-swing_en_GB.properties | 2 + .../resources/i18n/tutti-ui-swing_fr_FR.properties | 2 + 6 files changed, 110 insertions(+), 62 deletions(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm