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 46f455da51dd68528a9a6b25cdca815a2db56b2a Author: Tony CHEMIT <chemit@codelutin.com> Date: Sat Apr 16 12:19:49 2016 +0200 Correction d'un fire data sur le table model, why ? (See #8257) --- .../frequency/SpeciesFrequencyTableModel.java | 302 ++++++++++----------- 1 file changed, 151 insertions(+), 151 deletions(-) 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 3b251b7..73d8bdb 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 @@ -193,23 +193,22 @@ public class SpeciesFrequencyTableModel extends AbstractApplicationTableModel<Sp uiModel.recomputeCanEditLengthStep(); uiModel.setModify(true); + } @Override protected void onRowRemoved(int rowIndex, SpeciesFrequencyRowModel row) { + dettachListeners(row); uiModel.recomputeCanEditLengthStep(); + } @Override protected void onBeforeRowsChanged(List<SpeciesFrequencyRowModel> oldRows) { if (oldRows != null) { - - for (SpeciesFrequencyRowModel row : oldRows) { - dettachListeners(row); - } - + oldRows.forEach(this::dettachListeners); } } @@ -218,11 +217,7 @@ public class SpeciesFrequencyTableModel extends AbstractApplicationTableModel<Sp protected void onRowsChanged(List<SpeciesFrequencyRowModel> newRows) { if (newRows != null) { - - for (SpeciesFrequencyRowModel row : newRows) { - attachListeners(row); - } - + newRows.forEach(this::attachListeners); } uiModel.recomputeCanEditLengthStep(); @@ -257,146 +252,6 @@ public class SpeciesFrequencyTableModel extends AbstractApplicationTableModel<Sp } - private PropertyChangeListener getOnLengthStepChangedListener() { - if (onLengthStepChangedListener == null) { - onLengthStepChangedListener = 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); - lengthStepWasRemoved(oldValue); - - } - - Float newValue = (Float) evt.getNewValue(); - if (newValue != null) { - - modelCache.addLengthStep(row); - lengthStepOrNumberWasUpdated(row); - - } - - uiModel.recomputeCanEditLengthStep(); - uiModel.recomputeRowsValidateState(); - uiModel.updateEmptyRow(row); - - // Can recompute total number and weight only after valid flag change - uiModel.recomputeTotalNumberAndWeight(); - - fireTableDataChanged(); - - }; - } - return onLengthStepChangedListener; - } - - private PropertyChangeListener getOnNumberChangedListener() { - if (onNumberChangedListener == null) { - onNumberChangedListener = evt -> { - - SpeciesFrequencyRowModel row = (SpeciesFrequencyRowModel) evt.getSource(); - - // recompute the weight with the rtp - uiModel.computeRowWeightWithRtp(row); - - Float lengthStep = row.getLengthStep(); - - if (lengthStep != null) { - - if (!row.withNumber()) { - - // remove the value for the lengthStep - lengthStepWasRemoved(lengthStep); - - } else { - - lengthStepOrNumberWasUpdated(row); - - } - - } - - uiModel.recomputeCanEditLengthStep(); - uiModel.recomputeRowValidState(row); - uiModel.updateEmptyRow(row); - - // Can recompute total number and weight only after valid flag change - uiModel.recomputeTotalNumberAndWeight(); - - fireTableDataChanged(); - - }; - } - return onNumberChangedListener; - } - - private PropertyChangeListener getOnWeightChangedListener() { - if (onWeightChangedListener == null) { - onWeightChangedListener = evt -> { - - SpeciesFrequencyRowModel row = (SpeciesFrequencyRowModel) evt.getSource(); - modelCache.updateRowWithWeight(row); - - Float lengthStep = row.getLengthStep(); - - if (lengthStep != null) { - - if (!row.withWeight()) { - - // remove the value for the lengthStep - uiModel.getAverageWeightsHistogramModel().removeValue(lengthStep); - - } else { - - uiModel.getAverageWeightsHistogramModel().addOrUpdate(row); - - } - - } - - uiModel.recomputeRowsValidateState(); - uiModel.updateEmptyRow(row); - - // Can recompute total number and weight only after valid flag change - uiModel.recomputeTotalNumberAndWeight(); - - }; - } - return onWeightChangedListener; - } - - private void dettachListeners(SpeciesFrequencyRowModel result) { - - result.removePropertyChangeListener(SpeciesFrequencyRowModel.PROPERTY_LENGTH_STEP, getOnLengthStepChangedListener()); - result.removePropertyChangeListener(SpeciesFrequencyRowModel.PROPERTY_WEIGHT, getOnWeightChangedListener()); - result.removePropertyChangeListener(SpeciesFrequencyRowModel.PROPERTY_NUMBER, getOnNumberChangedListener()); - - } - - private void attachListeners(SpeciesFrequencyRowModel result) { - - dettachListeners(result); // prevent leaks! - - result.addPropertyChangeListener(SpeciesFrequencyRowModel.PROPERTY_LENGTH_STEP, getOnLengthStepChangedListener()); - result.addPropertyChangeListener(SpeciesFrequencyRowModel.PROPERTY_WEIGHT, getOnWeightChangedListener()); - result.addPropertyChangeListener(SpeciesFrequencyRowModel.PROPERTY_NUMBER, getOnNumberChangedListener()); - - } - - private void removeRow(SpeciesFrequencyRowModel row) { - - int rowIndex = getRowIndex(row); - removeRow(rowIndex); - modelCache.getRowCache().remove(row.getLengthStep()); - - } - public SpeciesFrequencyRowModel getOrCreateRowForLengthStep(float lengthstep) { // obtenir la classe de taille (en fonction de la précision de la méthode de mensuration) @@ -611,7 +466,6 @@ public class SpeciesFrequencyTableModel extends AbstractApplicationTableModel<Sp } - private void lengthStepWasRemoved(Float lengthStep) { uiModel.getAverageWeightsHistogramModel().removeValue(lengthStep); @@ -619,6 +473,7 @@ public class SpeciesFrequencyTableModel extends AbstractApplicationTableModel<Sp } + private void lengthStepOrNumberWasUpdated(SpeciesFrequencyRowModel row) { if (row.withNumber()) { @@ -630,4 +485,149 @@ public class SpeciesFrequencyTableModel extends AbstractApplicationTableModel<Sp } + private PropertyChangeListener getOnLengthStepChangedListener() { + if (onLengthStepChangedListener == null) { + onLengthStepChangedListener = 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); + lengthStepWasRemoved(oldValue); + + } + + Float newValue = (Float) evt.getNewValue(); + if (newValue != null) { + + modelCache.addLengthStep(row); + lengthStepOrNumberWasUpdated(row); + + } + + uiModel.recomputeCanEditLengthStep(); + uiModel.recomputeRowsValidateState(); + uiModel.updateEmptyRow(row); + + // Can recompute total number and weight only after valid flag change + uiModel.recomputeTotalNumber(); + uiModel.recomputeTotalWeight(); + + //FIXME Explain why this ? +// fireTableDataChanged(); + + }; + } + return onLengthStepChangedListener; + } + + private PropertyChangeListener getOnNumberChangedListener() { + if (onNumberChangedListener == null) { + onNumberChangedListener = evt -> { + + SpeciesFrequencyRowModel row = (SpeciesFrequencyRowModel) evt.getSource(); + + // recompute the weight with the rtp + uiModel.computeRowWeightWithRtp(row); + + Float lengthStep = row.getLengthStep(); + + if (lengthStep != null) { + + if (!row.withNumber()) { + + // remove the value for the lengthStep + lengthStepWasRemoved(lengthStep); + + } else { + + lengthStepOrNumberWasUpdated(row); + + } + + } + + uiModel.recomputeCanEditLengthStep(); + uiModel.recomputeRowValidState(row); + uiModel.updateEmptyRow(row); + + // Can recompute total number and weight only after valid flag change + uiModel.recomputeTotalNumber(); + uiModel.recomputeTotalWeight(); + + //FIXME Explain why this ? +// fireTableDataChanged(); + + }; + } + return onNumberChangedListener; + } + + private PropertyChangeListener getOnWeightChangedListener() { + if (onWeightChangedListener == null) { + onWeightChangedListener = evt -> { + + SpeciesFrequencyRowModel row = (SpeciesFrequencyRowModel) evt.getSource(); + modelCache.updateRowWithWeight(row); + + Float lengthStep = row.getLengthStep(); + + if (lengthStep != null) { + + if (!row.withWeight()) { + + // remove the value for the lengthStep + uiModel.getAverageWeightsHistogramModel().removeValue(lengthStep); + + } else { + + uiModel.getAverageWeightsHistogramModel().addOrUpdate(row); + + } + + } + + uiModel.recomputeRowsValidateState(); + uiModel.updateEmptyRow(row); + + // Can recompute total number and weight only after valid flag change + uiModel.recomputeTotalWeight(); + uiModel.recomputeTotalNumber(); + + }; + } + return onWeightChangedListener; + } + + private void dettachListeners(SpeciesFrequencyRowModel result) { + + result.removePropertyChangeListener(SpeciesFrequencyRowModel.PROPERTY_LENGTH_STEP, getOnLengthStepChangedListener()); + result.removePropertyChangeListener(SpeciesFrequencyRowModel.PROPERTY_WEIGHT, getOnWeightChangedListener()); + result.removePropertyChangeListener(SpeciesFrequencyRowModel.PROPERTY_NUMBER, getOnNumberChangedListener()); + + } + + private void attachListeners(SpeciesFrequencyRowModel result) { + + dettachListeners(result); // prevent leaks! + + result.addPropertyChangeListener(SpeciesFrequencyRowModel.PROPERTY_LENGTH_STEP, getOnLengthStepChangedListener()); + result.addPropertyChangeListener(SpeciesFrequencyRowModel.PROPERTY_WEIGHT, getOnWeightChangedListener()); + result.addPropertyChangeListener(SpeciesFrequencyRowModel.PROPERTY_NUMBER, getOnNumberChangedListener()); + + } + + private void removeRow(SpeciesFrequencyRowModel row) { + + int rowIndex = getRowIndex(row); + removeRow(rowIndex); + modelCache.getRowCache().remove(row.getLengthStep()); + + } + } \ No newline at end of file -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.