This is an automated email from the git hooks/post-receive script. New commit to branch feature/7491 in repository tutti. See http://git.codelutin.com/tutti.git commit a9590d6f419ec6f29d6880f2552bae6d4e4ddf66 Author: Kevin Morin <morin@codelutin.com> Date: Wed Jan 20 18:04:05 2016 +0100 benthos : ajout de la colonne "poids individuel" non éditable en bleu italique (refs #7491) --- .../frequency/BenthosFrequencyRowModel.java | 43 ++++++++++++++++++++++ .../frequency/BenthosFrequencyTableModel.java | 11 +++++- .../frequency/BenthosFrequencyUIHandler.java | 11 ++++++ .../table/ComputedWeightTableCellRenderer.java | 37 +++++++++++++++++++ .../resources/i18n/tutti-ui-swing_en_GB.properties | 1 + .../resources/i18n/tutti-ui-swing_fr_FR.properties | 1 + 6 files changed, 103 insertions(+), 1 deletion(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyRowModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyRowModel.java index 93bf46f..d8ff981 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyRowModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyRowModel.java @@ -53,6 +53,10 @@ public class BenthosFrequencyRowModel extends AbstractTuttiBeanUIModel<BenthosBa public static final String PROPERTY_LENGHT_STEP_CARACTERISTIC = "lengthStepCaracteristic"; + public static final String PROPERTY_INDIVIDUAL_WEIGHT = "individualWeight"; + + public static final String PROPERTY_INDIVIDUAL_WEIGHT_CONSISTENT = "individualWeightConsistent"; + /** * Length step. * @@ -75,6 +79,18 @@ public class BenthosFrequencyRowModel extends AbstractTuttiBeanUIModel<BenthosBa protected Float weight; /** + * Average weight for an individual + * @since 4.4 + */ + protected Float individualWeight; + + /** + * Is the average weight for an individual consistent + * @since 4.4 + */ + protected Boolean individualWeightConsistent; + + /** * Length step caracteristic. * * @since 0.3 @@ -198,6 +214,26 @@ public class BenthosFrequencyRowModel extends AbstractTuttiBeanUIModel<BenthosBa firePropertyChange(PROPERTY_WEIGHT, oldValue, weight); } + public Float getIndividualWeight() { + return individualWeight; + } + + public void setIndividualWeight(Float individualWeight) { + Object oldValue = getIndividualWeight(); + this.individualWeight = individualWeight; + firePropertyChange(PROPERTY_INDIVIDUAL_WEIGHT, oldValue, individualWeight); + } + + public Boolean isIndividualWeightConsistent() { + return individualWeightConsistent; + } + + public void setIndividualWeightConsistent(Boolean individualWeightConsistent) { + Object oldValue = isIndividualWeightConsistent(); + this.individualWeightConsistent = individualWeightConsistent; + firePropertyChange(PROPERTY_INDIVIDUAL_WEIGHT_CONSISTENT, oldValue, individualWeightConsistent); + } + @Override public Caracteristic getLengthStepCaracteristic() { return lengthStepCaracteristic; @@ -238,4 +274,11 @@ public class BenthosFrequencyRowModel extends AbstractTuttiBeanUIModel<BenthosBa return lengthStep == null && (weight == null || number == null); } + public void computeIndividualWeight() { + if (weight == null || number == null || number == 0) { + setIndividualWeight(null); + } else { + setIndividualWeight(weight / number); + } + } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyTableModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyTableModel.java index 4f1fe60..0dbc1e9 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyTableModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyTableModel.java @@ -59,6 +59,11 @@ public class BenthosFrequencyTableModel extends AbstractApplicationTableModel<Be n("tutti.editBenthosFrequencies.table.header.weight"), n("tutti.editBenthosFrequencies.table.header.weight")); + public static final ColumnIdentifier<BenthosFrequencyRowModel> INDIVIDUAL_WEIGHT = ColumnIdentifier.newId( + BenthosFrequencyRowModel.PROPERTY_INDIVIDUAL_WEIGHT, + n("tutti.editBenthosFrequencies.table.header.individualWeight"), + n("tutti.editBenthosFrequencies.table.header.individualWeight")); + private final BenthosFrequencyUIModel uiModel; private final BenthosFrequencyUIModelCache modelCache; @@ -86,7 +91,7 @@ public class BenthosFrequencyTableModel extends AbstractApplicationTableModel<Be this.uiModel = uiModel; this.modelCache = uiModel.cache; this.series = uiModel.dataset.getSeries(0); - setNoneEditableCols(); + setNoneEditableCols(INDIVIDUAL_WEIGHT); } @Override @@ -277,6 +282,8 @@ public class BenthosFrequencyTableModel extends AbstractApplicationTableModel<Be } + row.computeIndividualWeight(); + uiModel.recomputeCanEditLengthStep(); uiModel.recomputeRowValidState(row); uiModel.updateEmptyRow(row); @@ -299,6 +306,8 @@ public class BenthosFrequencyTableModel extends AbstractApplicationTableModel<Be BenthosFrequencyRowModel row = (BenthosFrequencyRowModel) evt.getSource(); modelCache.updateRowWithWeight(row); + row.computeIndividualWeight(); + uiModel.recomputeRowsValidateState(); uiModel.updateEmptyRow(row); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java index 7e540e7..ffd16b8 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/frequency/BenthosFrequencyUIHandler.java @@ -40,6 +40,7 @@ import fr.ifremer.tutti.ui.swing.util.TuttiNumberTickUnitSource; import fr.ifremer.tutti.ui.swing.util.TuttiUI; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler; +import fr.ifremer.tutti.ui.swing.util.table.ComputedWeightTableCellRenderer; import jaxx.runtime.swing.editor.bean.BeanFilterableComboBox; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.collections4.CollectionUtils; @@ -367,6 +368,16 @@ public class BenthosFrequencyUIHandler extends AbstractTuttiTableUIHandler<Benth table); } + + { // Individual weight + + addColumnToModel(columnModel, + null, + new ComputedWeightTableCellRenderer(table, getConfig().getColorComputedWeights()), + BenthosFrequencyTableModel.INDIVIDUAL_WEIGHT, + weightUnit); + } + // create table model BenthosFrequencyTableModel tableModel = new BenthosFrequencyTableModel(weightUnit, columnModel, model); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/ComputedWeightTableCellRenderer.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/ComputedWeightTableCellRenderer.java new file mode 100644 index 0000000..de528f5 --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/ComputedWeightTableCellRenderer.java @@ -0,0 +1,37 @@ +package fr.ifremer.tutti.ui.swing.util.table; + +import javax.swing.JLabel; +import javax.swing.JTable; +import javax.swing.SwingConstants; +import javax.swing.table.TableCellRenderer; +import java.awt.Color; +import java.awt.Component; +import java.awt.Font; + +/** + * @author Kevin Morin (Code Lutin) + * @since 4.4 + */ +public class ComputedWeightTableCellRenderer implements TableCellRenderer { + + protected final TableCellRenderer defaultRenderer; + + protected final Color consistentColor; + + public ComputedWeightTableCellRenderer(JTable table, Color consistentColor) { + defaultRenderer = table.getDefaultRenderer(Number.class); + this.consistentColor = consistentColor; + } + + public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { + Component result = defaultRenderer.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column); + if(result instanceof JLabel) { + JLabel jLabel = (JLabel)result; + jLabel.setHorizontalTextPosition(SwingConstants.RIGHT); + } + + result.setForeground(consistentColor); + result.setFont(result.getFont().deriveFont(Font.ITALIC)); + return result; + } +} 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 917c711..9ee3646 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 @@ -596,6 +596,7 @@ tutti.editBenthosFrequencies.logTable.header.label= tutti.editBenthosFrequencies.logTable.removeRow.confirm.message= tutti.editBenthosFrequencies.logTable.removeRow.confirm.title= tutti.editBenthosFrequencies.simpleCountingAndFrequencies= +tutti.editBenthosFrequencies.table.header.individualWeight= tutti.editBenthosFrequencies.table.header.lengthStep= tutti.editBenthosFrequencies.table.header.number= tutti.editBenthosFrequencies.table.header.weight= 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 8288461..ac0dbf6 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 @@ -568,6 +568,7 @@ tutti.editBenthosFrequencies.logTable.header.label=Logs tutti.editBenthosFrequencies.logTable.removeRow.confirm.message=Êtes-vous sûr de vouloir supprimer la mesure %s ? tutti.editBenthosFrequencies.logTable.removeRow.confirm.title=Suppression d'une mesure tutti.editBenthosFrequencies.simpleCountingAndFrequencies=Des mensurations ont été saisies dans le tableau. Saisir un simple dénombrement les effacera. +tutti.editBenthosFrequencies.table.header.individualWeight=Poids individuel tutti.editBenthosFrequencies.table.header.lengthStep=Classe de taille tutti.editBenthosFrequencies.table.header.number=Nombre tutti.editBenthosFrequencies.table.header.weight=Poids observé -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.