branch feature/ecran_obs_individuelles updated (47891d3 -> bed9756)
This is an automated email from the git hooks/post-receive script. New change to branch feature/ecran_obs_individuelles in repository tutti. See http://git.codelutin.com/tutti.git from 47891d3 une seule popup pour l'histogramme pour pouvoir la fermer quand on quitte (refs #8019) new 6a26e7b titre de la popup de l'histogramme (refs #8019) new bed9756 graph des poids moyens (refs #8019) 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 bed975694b1b9b595ac64950e4df5246d102d862 Author: Kevin Morin <morin@codelutin.com> Date: Fri Feb 26 11:35:29 2016 +0100 graph des poids moyens (refs #8019) commit 6a26e7bc068cabf9dcaf882c46830d9792a5b6ec Author: Kevin Morin <morin@codelutin.com> Date: Fri Feb 26 10:02:50 2016 +0100 titre de la popup de l'histogramme (refs #8019) Summary of changes: .../operation/catches/EditCatchesUIHandler.java | 10 +- .../frequency/SpeciesFrequencyRowModel.java | 8 ++ .../frequency/SpeciesFrequencyTableModel.java | 61 ++++++++++--- .../species/frequency/SpeciesFrequencyUI.jaxx | 2 +- .../species/frequency/SpeciesFrequencyUI.jcss | 1 + .../frequency/SpeciesFrequencyUIHandler.java | 101 +++++++++++++++------ .../species/frequency/SpeciesFrequencyUIModel.java | 41 +++++++-- .../ui/swing/util/AbstractTuttiUIHandler.java | 42 ++++++++- .../resources/i18n/tutti-ui-swing_en_GB.properties | 1 + .../resources/i18n/tutti-ui-swing_fr_FR.properties | 1 + .../src/main/resources/icons/action-chart.png | Bin 0 -> 541 bytes 11 files changed, 212 insertions(+), 56 deletions(-) create mode 100644 tutti-ui-swing/src/main/resources/icons/action-chart.png -- 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 feature/ecran_obs_individuelles in repository tutti. See http://git.codelutin.com/tutti.git commit 6a26e7bc068cabf9dcaf882c46830d9792a5b6ec Author: Kevin Morin <morin@codelutin.com> Date: Fri Feb 26 10:02:50 2016 +0100 titre de la popup de l'histogramme (refs #8019) --- .../operation/catches/EditCatchesUIHandler.java | 10 ++++-- .../frequency/SpeciesFrequencyUIHandler.java | 4 ++- .../ui/swing/util/AbstractTuttiUIHandler.java | 42 +++++++++++++++++++--- 3 files changed, 49 insertions(+), 7 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java index d37b1a2..5ecf01d 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java @@ -456,13 +456,19 @@ public class EditCatchesUIHandler extends AbstractTuttiTabContainerUIHandler<Edi SpeciesFrequencyUI frequencyEditor = ui.getSpeciesTabFrequencyEditor(); - frequencyEditor.getHandler().editBatch(editor); + SpeciesBatchRowModel editRow = editor.getEditRow(); + + String frequenciesTitle = buildReminderLabelTitle(editRow.getSpecies(), + editRow, + ui.getSpeciesTabFishingOperationReminderLabel().getTitle(), + t("tutti.editSpeciesFrequencies.title"), + false); + frequencyEditor.getHandler().editBatch(editor, frequenciesTitle); // open frequency editor setSpeciesSelectedCard(EditCatchesUIHandler.EDIT_FREQUENCY_CARD); // update title - SpeciesBatchRowModel editRow = editor.getEditRow(); String title = buildReminderLabelTitle(editRow.getSpecies(), editRow, ui.getSpeciesTabFishingOperationReminderLabel().getTitle(), 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 f401cfa..abaeb2d 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 @@ -463,11 +463,13 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci } } - public void editBatch(FrequencyCellEditor editor) { + public void editBatch(FrequencyCellEditor editor, String title) { FrequencyConfigurationMode mode = FrequencyConfigurationMode.FREQUENCIES; FrequencyConfigurationMode frequenciesMode = FrequencyConfigurationMode.AUTO_GEN; + histogramPopup.setTitle(title); + SpeciesBatchRowModel speciesBatch = editor.getEditRow(); SpeciesFrequencyUIModel model = getModel(); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java index 7b8aa6c..f4f5ba1 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java @@ -529,11 +529,21 @@ public abstract class AbstractTuttiUIHandler<M, UI extends TuttiUI<M, ?>> extend Iterable<SampleCategory<?>> categories, String prefix, String suffix) { + return buildReminderLabelTitle(species, categories, prefix, suffix, true); + + } + + public String buildReminderLabelTitle(Species species, + Iterable<SampleCategory<?>> categories, + String prefix, + String suffix, + boolean html) { return buildReminderLabelTitle( decorate(species, DecoratorService.WITH_SURVEY_CODE), categories, prefix, - suffix); + suffix, + html); } @@ -610,9 +620,29 @@ public abstract class AbstractTuttiUIHandler<M, UI extends TuttiUI<M, ?>> extend Iterable<SampleCategory<?>> categories, String prefix, String suffix) { - StringBuilder title = new StringBuilder("<html><body style='color:black;'>" + prefix); + return buildReminderLabelTitle(species, categories, prefix, suffix, true); + } - title.append(" - [<strong>").append(species).append("</strong>]"); + protected String buildReminderLabelTitle(String species, + Iterable<SampleCategory<?>> categories, + String prefix, + String suffix, + boolean html) { + StringBuilder title = new StringBuilder(); + if (html) { + title.append("<html><body style='color:black;'>"); + } + title.append(prefix).append(" - ["); + + if (html) { + title.append("<strong>"); + } + title.append(species); + + if (html) { + title.append("</strong>"); + } + title.append("]"); if (categories != null) { for (SampleCategory<?> sampleCategory : categories) { @@ -623,7 +653,11 @@ public abstract class AbstractTuttiUIHandler<M, UI extends TuttiUI<M, ?>> extend } } - title.append(" - ").append(suffix).append("</body></html>"); + title.append(" - ").append(suffix); + if (html) { + title.append("</body></html>"); + } + return title.toString(); } -- 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 feature/ecran_obs_individuelles in repository tutti. See http://git.codelutin.com/tutti.git commit bed975694b1b9b595ac64950e4df5246d102d862 Author: Kevin Morin <morin@codelutin.com> Date: Fri Feb 26 11:35:29 2016 +0100 graph des poids moyens (refs #8019) --- .../operation/catches/EditCatchesUIHandler.java | 2 +- .../frequency/SpeciesFrequencyRowModel.java | 8 ++ .../frequency/SpeciesFrequencyTableModel.java | 61 ++++++++++--- .../species/frequency/SpeciesFrequencyUI.jaxx | 2 +- .../species/frequency/SpeciesFrequencyUI.jcss | 1 + .../frequency/SpeciesFrequencyUIHandler.java | 99 +++++++++++++++------ .../species/frequency/SpeciesFrequencyUIModel.java | 41 +++++++-- .../resources/i18n/tutti-ui-swing_en_GB.properties | 1 + .../resources/i18n/tutti-ui-swing_fr_FR.properties | 1 + .../src/main/resources/icons/action-chart.png | Bin 0 -> 541 bytes 10 files changed, 165 insertions(+), 51 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java index 5ecf01d..5e54991 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java @@ -461,7 +461,7 @@ public class EditCatchesUIHandler extends AbstractTuttiTabContainerUIHandler<Edi String frequenciesTitle = buildReminderLabelTitle(editRow.getSpecies(), editRow, ui.getSpeciesTabFishingOperationReminderLabel().getTitle(), - t("tutti.editSpeciesFrequencies.title"), + "", false); frequencyEditor.getHandler().editBatch(editor, frequenciesTitle); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyRowModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyRowModel.java index 3686510..faffe38 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyRowModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyRowModel.java @@ -261,4 +261,12 @@ public class SpeciesFrequencyRowModel extends AbstractTuttiBeanUIModel<SpeciesBa return lengthStep == null && (computedOrNotWeight.getData() == null || number == null); } + public Float computeAverageWeight() { + Float averageWeight = null; + Float weight = computedOrNotWeight.getDataOrComputedData(); + if (weight != null && number != null) { + averageWeight = number == 0 ? 0 : weight / number; + } + return averageWeight; + } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyTableModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyTableModel.java index 99a8445..e52ea4b 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyTableModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyTableModel.java @@ -77,7 +77,9 @@ public class SpeciesFrequencyTableModel extends AbstractApplicationTableModel<Sp protected transient PropertyChangeListener onNumberChangedListener; - protected final XYSeries series; + protected final XYSeries frequenciesSeries; + + protected final XYSeries averageWeightsSeries; public SpeciesFrequencyTableModel(WeightUnit weightUnit, TableColumnModelExt columnModel, @@ -86,7 +88,8 @@ public class SpeciesFrequencyTableModel extends AbstractApplicationTableModel<Sp this.weightUnit = weightUnit; this.uiModel = uiModel; this.modelCache = uiModel.cache; - this.series = uiModel.dataset.getSeries(0); + this.frequenciesSeries = uiModel.frequenciesDataset.getSeries(0); + this.averageWeightsSeries = uiModel.averageWeightsDataset.getSeries(0); setNoneEditableCols(); } @@ -235,18 +238,24 @@ public class SpeciesFrequencyTableModel extends AbstractApplicationTableModel<Sp @Override public void propertyChange(PropertyChangeEvent evt) { + SpeciesFrequencyRowModel row = (SpeciesFrequencyRowModel) evt.getSource(); + + // recompute the weight with the rtp + uiModel.computeRowWeightWithRtp(row); + Float oldValue = (Float) evt.getOldValue(); if (oldValue != null) { modelCache.removeLengthStep(oldValue); - if (series.indexOf(oldValue) >= 0) { - series.remove(oldValue); + if (frequenciesSeries.indexOf(oldValue) >= 0) { + frequenciesSeries.remove(oldValue); + } + if (averageWeightsSeries.indexOf(oldValue) >= 0) { + averageWeightsSeries.remove(oldValue); } } - SpeciesFrequencyRowModel row = (SpeciesFrequencyRowModel) evt.getSource(); - Float newValue = (Float) evt.getNewValue(); if (newValue != null) { @@ -254,7 +263,8 @@ public class SpeciesFrequencyTableModel extends AbstractApplicationTableModel<Sp if (row.getNumber() != null) { - series.addOrUpdate(newValue, row.getNumber()); + frequenciesSeries.addOrUpdate(newValue, row.getNumber()); + averageWeightsSeries.addOrUpdate(newValue, row.computeAverageWeight()); } @@ -283,6 +293,9 @@ public class SpeciesFrequencyTableModel extends AbstractApplicationTableModel<Sp SpeciesFrequencyRowModel row = (SpeciesFrequencyRowModel) evt.getSource(); + // recompute the weight with the rtp + uiModel.computeRowWeightWithRtp(row); + Integer newValue = (Integer) evt.getNewValue(); Float lengthStep = row.getLengthStep(); @@ -292,13 +305,18 @@ public class SpeciesFrequencyTableModel extends AbstractApplicationTableModel<Sp if (newValue == null) { // remove the value for the lengthStep - if (series.indexOf(lengthStep) >= 0) { - series.remove(lengthStep); + if (frequenciesSeries.indexOf(lengthStep) >= 0) { + frequenciesSeries.remove(lengthStep); + } + + if (averageWeightsSeries.indexOf(lengthStep) >= 0) { + averageWeightsSeries.remove(lengthStep); } } else { - series.addOrUpdate(lengthStep, row.getNumber()); + frequenciesSeries.addOrUpdate(lengthStep, row.getNumber()); + averageWeightsSeries.addOrUpdate(lengthStep, row.computeAverageWeight()); } @@ -308,9 +326,6 @@ public class SpeciesFrequencyTableModel extends AbstractApplicationTableModel<Sp uiModel.recomputeRowValidState(row); uiModel.updateEmptyRow(row); - // recompute the weight with the rtp - uiModel.computeRowWeightWithRtp(row); - // Can recompute total number and weight only after valid flag change uiModel.recomputeTotalNumberAndWeight(); @@ -329,6 +344,26 @@ public class SpeciesFrequencyTableModel extends AbstractApplicationTableModel<Sp SpeciesFrequencyRowModel row = (SpeciesFrequencyRowModel) evt.getSource(); modelCache.updateRowWithWeight(row); + Float lengthStep = row.getLengthStep(); + + if (lengthStep != null) { + + if (evt.getNewValue() == null) { + + // remove the value for the lengthStep + System.out.println("averageWeightsSeries.indexOf(lengthStep) " + averageWeightsSeries.indexOf(lengthStep)); + if (averageWeightsSeries.indexOf(lengthStep) >= 0) { + averageWeightsSeries.remove(lengthStep); + } + + } else { + + averageWeightsSeries.addOrUpdate(lengthStep, row.computeAverageWeight()); + + } + + } + uiModel.recomputeRowsValidateState(); uiModel.updateEmptyRow(row); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jaxx b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jaxx index 10edbbf..1e66155 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jaxx +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jaxx @@ -235,7 +235,7 @@ public SpeciesFrequencyUI(TuttiUI parentUI) { <ComputableDataEditor id='totalWeightField' genericType="Float" constructorParams='this'/> </cell> <cell> - <JButton id='graphAverageWeightButton'/> + <JButton id='graphAverageWeightButton' onActionPerformed="handler.showAverageWeightsHistogram()"/> </cell> </row> </Table> diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jcss b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jcss index 9bb4ad2..9cfb3f8 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jcss +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jcss @@ -267,6 +267,7 @@ ComputableDataEditor { } #graphAverageWeightButton { + actionIcon: chart; text: "tutti.editSpeciesFrequencies.field.graphAverageWeight"; _skipAction: true; } 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 abaeb2d..39f75c9 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 @@ -122,9 +122,13 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci private Map<String, Caracteristic> lengthStepCaracteristics; - private JFreeChart chart; + private JFreeChart frequenciesChart; - protected final JFrame histogramPopup = new JFrame(); + private JFreeChart averageWeightsChart; + + protected final JFrame frequenciesHistogramPopup = new JFrame(); + + protected final JFrame averageWeightsHistogramPopup = new JFrame(); protected Caracteristic sexCaracteristic; @@ -341,7 +345,7 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci float step = getStep(newValue); getModel().setStep(step); getModel().setDataSetIntervalWidth(step); - chart.getXYPlot().getDomainAxis().setStandardTickUnits(new TuttiNumberTickUnitSource(step == 1f)); + frequenciesChart.getXYPlot().getDomainAxis().setStandardTickUnits(new TuttiNumberTickUnitSource(step == 1f)); if (CollectionUtils.isNotEmpty(getModel().getRows())) { for (SpeciesFrequencyRowModel rowModel : getModel().getRows()) { rowModel.setLengthStepCaracteristic(newValue); @@ -402,6 +406,7 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci model.addPropertyChangeListener(SpeciesFrequencyUIModel.PROPERTY_USE_RTP, evt -> { getModel().getRows().forEach(row -> getModel().computeRowWeightWithRtp(row)); + getModel().reloadRows(); getTableModel().fireTableDataChanged(); }); @@ -411,14 +416,16 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci // init histogram - initHistogram(ui, model); + initFrequenciesHistogram(); // init data table - initDataTable(model); + initDataTable(); + + initAverageWeightsHistogram(); // init log table - initLogTable(ui); + initLogTable(); initObsTable(); @@ -426,6 +433,10 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci } + public void showAverageWeightsHistogram() { + averageWeightsHistogramPopup.setVisible(true); + } + @Override protected JComponent getComponentToFocus() { FrequencyConfigurationMode configurationMode = getModel().getConfigurationMode(); @@ -442,7 +453,8 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci log.debug("closing: " + ui); } - histogramPopup.dispose(); + frequenciesHistogramPopup.dispose(); + averageWeightsHistogramPopup.dispose(); frequencyEditor = null; @@ -468,7 +480,8 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci FrequencyConfigurationMode mode = FrequencyConfigurationMode.FREQUENCIES; FrequencyConfigurationMode frequenciesMode = FrequencyConfigurationMode.AUTO_GEN; - histogramPopup.setTitle(title); + frequenciesHistogramPopup.setTitle(title + t("tutti.editSpeciesFrequencies.title")); + averageWeightsHistogramPopup.setTitle(title + weightUnit.decorateLabel(t("tutti.editSpeciesFrequencies.field.graphAverageWeight"))); SpeciesBatchRowModel speciesBatch = editor.getEditRow(); @@ -656,7 +669,7 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci //------------------------------------------------------------------------// - protected void initDataTable(SpeciesFrequencyUIModel model) { + protected void initDataTable() { JXTable table = getTable(); // create table column model @@ -694,7 +707,7 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci } // create table model - SpeciesFrequencyTableModel tableModel = new SpeciesFrequencyTableModel(weightUnit, columnModel, model); + SpeciesFrequencyTableModel tableModel = new SpeciesFrequencyTableModel(weightUnit, columnModel, getModel()); table.setModel(tableModel); table.setColumnModel(columnModel); @@ -748,26 +761,26 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci } - protected void initHistogram(SpeciesFrequencyUI ui, SpeciesFrequencyUIModel model) { - chart = ChartFactory.createXYBarChart(null, - t("tutti.editSpeciesFrequencies.table.header.lengthStep"), - false, - t("tutti.editSpeciesFrequencies.table.header.number"), - model.dataset); - chart.clearSubtitles(); + protected void initFrequenciesHistogram() { + frequenciesChart = ChartFactory.createXYBarChart(null, + t("tutti.editSpeciesFrequencies.table.header.lengthStep"), + false, + t("tutti.editSpeciesFrequencies.table.header.number"), + getModel().frequenciesDataset); + frequenciesChart.clearSubtitles(); - ValueAxis rangeAxis = chart.getXYPlot().getRangeAxis(); + ValueAxis rangeAxis = frequenciesChart.getXYPlot().getRangeAxis(); rangeAxis.setAutoRange(true); rangeAxis.setStandardTickUnits(new NumberTickUnitSource(true)); - ValueAxis domainAxis = chart.getXYPlot().getDomainAxis(); + ValueAxis domainAxis = frequenciesChart.getXYPlot().getDomainAxis(); domainAxis.setAutoRange(true); domainAxis.setStandardTickUnits(new TuttiNumberTickUnitSource(true)); domainAxis.setMinorTickMarksVisible(true); - chart.getXYPlot().getRenderer().setSeriesPaint(0, getConfig().getColorComputedWeights()); + frequenciesChart.getXYPlot().getRenderer().setSeriesPaint(0, getConfig().getColorComputedWeights()); - final ChartPanel chartPanel = new ChartPanel(chart); + final ChartPanel chartPanel = new ChartPanel(frequenciesChart); chartPanel.setDomainZoomable(false); chartPanel.setMouseZoomable(false); chartPanel.setPopupMenu(null); @@ -782,18 +795,50 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci super.mouseClicked(e); if (e.getClickCount() > 1) { - histogramPopup.getContentPane().removeAll(); - ChartPanel chartPanel = new ChartPanel(chart); - histogramPopup.getContentPane().add(chartPanel); - histogramPopup.pack(); - histogramPopup.setVisible(true); + frequenciesHistogramPopup.getContentPane().removeAll(); + ChartPanel chartPanel = new ChartPanel(frequenciesChart); + frequenciesHistogramPopup.getContentPane().add(chartPanel); + frequenciesHistogramPopup.pack(); + frequenciesHistogramPopup.setVisible(true); } } }); } - protected void initLogTable(SpeciesFrequencyUI ui) { + protected void initAverageWeightsHistogram() { + averageWeightsChart = ChartFactory.createXYBarChart(null, + t("tutti.editSpeciesFrequencies.table.header.lengthStep"), + false, + weightUnit.decorateLabel(t("tutti.editSpeciesFrequencies.averageWeight.label")), + getModel().averageWeightsDataset); + averageWeightsChart.clearSubtitles(); + + ValueAxis rangeAxis = averageWeightsChart.getXYPlot().getRangeAxis(); + rangeAxis.setAutoRange(true); + rangeAxis.setStandardTickUnits(new NumberTickUnitSource()); + rangeAxis.setMinorTickMarksVisible(true); + + ValueAxis domainAxis = averageWeightsChart.getXYPlot().getDomainAxis(); + domainAxis.setAutoRange(true); + domainAxis.setStandardTickUnits(new TuttiNumberTickUnitSource(true)); + domainAxis.setMinorTickMarksVisible(true); + + averageWeightsChart.getXYPlot().getRenderer().setSeriesPaint(0, getConfig().getColorComputedWeights()); + + final ChartPanel chartPanel = new ChartPanel(averageWeightsChart); + chartPanel.setDomainZoomable(false); + chartPanel.setMouseZoomable(false); + chartPanel.setPopupMenu(null); + + JPanel histogramPanel = ui.getHistogramPanel(); + histogramPanel.add(chartPanel, BorderLayout.CENTER); + + averageWeightsHistogramPopup.getContentPane().add(chartPanel); + averageWeightsHistogramPopup.pack(); + } + + protected void initLogTable() { JXTable logTable = ui.getLogsTable(); // create log table column model diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel.java index d8ad4af..2f73210 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIModel.java @@ -233,11 +233,18 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa protected CopyIndividualObservationMode copyIndividualObservationMode; /** - * To store graph series. + * To store frequencies graph series. * * @since 3.11 */ - protected final XYSeriesCollection dataset; + protected final XYSeriesCollection frequenciesDataset; + + /** + * To store average weights graph series. + * + * @since 4.5 + */ + protected final XYSeriesCollection averageWeightsDataset; /** * Default caracteristics coming from protocol. @@ -257,9 +264,15 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa XYSeries series = new XYSeries("", true, false); - dataset = new XYSeriesCollection(series); - dataset.setIntervalPositionFactor(0); - dataset.setIntervalWidth(0); + frequenciesDataset = new XYSeriesCollection(series); + frequenciesDataset.setIntervalPositionFactor(0); + frequenciesDataset.setIntervalWidth(0); + + series = new XYSeries("", true, false); + + averageWeightsDataset = new XYSeriesCollection(series); + averageWeightsDataset.setIntervalPositionFactor(0); + averageWeightsDataset.setIntervalWidth(0); this.defaultCaracteristic = defaultCaracteristic == null ? Lists.<Caracteristic>newArrayList() : @@ -270,8 +283,10 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa setEmptyRows(Sets.<SpeciesFrequencyRowModel>newHashSet()); - XYSeries series = dataset.getSeries(0); - series.clear(); + XYSeries frequenciesSeries = frequenciesDataset.getSeries(0); + frequenciesSeries.clear(); + XYSeries averageWeightsSeries = averageWeightsDataset.getSeries(0); + averageWeightsSeries.clear(); cache.loadCache(rows); @@ -284,7 +299,14 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa if (row.isValid()) { Float lengthStep = row.getLengthStep(); - series.addOrUpdate(lengthStep, row.getNumber()); + Integer number = row.getNumber(); + + frequenciesSeries.addOrUpdate(lengthStep, number); + + Float averageWeight = row.computeAverageWeight(); + if (averageWeight != null) { + averageWeightsSeries.addOrUpdate(lengthStep, averageWeight); + } } @@ -734,7 +756,8 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa } public void setDataSetIntervalWidth(float step) { - dataset.setIntervalWidth(step); + frequenciesDataset.setIntervalWidth(step); + averageWeightsDataset.setIntervalWidth(step); } public List<Caracteristic> getDefaultCaracteristic() { 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 2374238..beb5eec 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 @@ -1437,6 +1437,7 @@ tutti.editSpeciesFrequencies.addMeasure= tutti.editSpeciesFrequencies.askBeforeSave.help= tutti.editSpeciesFrequencies.askBeforeSave.message= tutti.editSpeciesFrequencies.askBeforeSave.title= +tutti.editSpeciesFrequencies.averageWeight.label= tutti.editSpeciesFrequencies.error.itchyometer.bad.record= tutti.editSpeciesFrequencies.error.length.doublon= tutti.editSpeciesFrequencies.field.copyToSizeTableMode.all= 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 6656bb9..67fa8eb 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 @@ -1362,6 +1362,7 @@ tutti.editSpeciesFrequencies.addMeasure=Ajout d'un individu de taille <strong>%1 tutti.editSpeciesFrequencies.askBeforeSave.help=Que voulez-vous faire?<ul><li><strong>Non</strong> pour rester sur cet écran</li><li><strong>Oui</strong> pour enregisrer les mensurations avec poids</li></ul> tutti.editSpeciesFrequencies.askBeforeSave.message=La saisie comporte des classes de taille avec et sans poids associés.<br/><strong>Seules les classes de taille avec poids seront dans ce cas sauvegardées.</strong> tutti.editSpeciesFrequencies.askBeforeSave.title=Confirmer l'enregistrement des mensurations +tutti.editSpeciesFrequencies.averageWeight.label=Poids moyen tutti.editSpeciesFrequencies.error.itchyometer.bad.record=La mesure provenant de l'ichtyomètre n'est pas valide (la donnée est peut-être corrompue) \:<br/><ul><li>Enregistrement \: <strong>%s</strong></li><li>CRC \: <strong>%s</strong></li><li>CRC calculé \: <strong>%s</strong></li></ul> tutti.editSpeciesFrequencies.error.length.doublon=La classe de taille <strong>%s</strong> est utilisée plusieurs fois (deuxième occurrence trouvée à la ligne <strong>%s</strong>), ce qui n'est pas autorisé.<hr/>Veuillez corriger cela pour pouvoir enregistrer les mensurations. tutti.editSpeciesFrequencies.field.copyToSizeTableMode.all=Tout diff --git a/tutti-ui-swing/src/main/resources/icons/action-chart.png b/tutti-ui-swing/src/main/resources/icons/action-chart.png new file mode 100644 index 0000000..9051fbc Binary files /dev/null and b/tutti-ui-swing/src/main/resources/icons/action-chart.png differ -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm