This is an automated email from the git hooks/post-receive script. New commit to branch feature/8116-warning-ecrasement in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit 29edf84cbce012a0fb43119bab23c1a1f4964c65 Author: Kevin Morin <morin@codelutin.com> Date: Thu Mar 17 19:15:15 2016 +0100 ajout d'un veto pour ne pas écraser les poids saisi (fixes #8116) --- .../species/frequency/SpeciesFrequencyUI.jaxx | 3 ++- .../frequency/SpeciesFrequencyUIHandler.java | 29 ++++++++++++++++++++++ .../species/frequency/SpeciesFrequencyUIModel.java | 17 +++++++++---- .../resources/i18n/tutti-ui-swing_en_GB.properties | 3 +++ .../resources/i18n/tutti-ui-swing_fr_FR.properties | 3 +++ 5 files changed, 49 insertions(+), 6 deletions(-) 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 2741ce3..cbec70d 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 @@ -103,7 +103,8 @@ public SpeciesFrequencyUI(TuttiUI parentUI) { </JToolBar> <JToolBar id="frequenciesToolBar"> - <JCheckBox id='copyRtpWeightsCheckBox' onItemStateChanged='handler.setBoolean(event, "copyRtpWeights")'/> + <!-- use actionperformed otherwise the event is triggered twice when the confirm dialog is shown --> + <JCheckBox id='copyRtpWeightsCheckBox' onActionPerformed='model.setCopyRtpWeights(copyRtpWeightsCheckBox.isSelected())'/> <JButton id='graphAverageWeightButton' onActionPerformed="handler.showAverageWeightsHistogram()"/> </JToolBar> 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 afffb38..1816786 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 @@ -530,6 +530,35 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci ); }); + // Pour bloquer le changement de copie des poids rtp s'il y a deja des poids + model.addVetoableChangeListener(SpeciesFrequencyUIModel.PROPERTY_COPY_RTP_WEIGHTS, evt -> { + + boolean newCopyRtpWeights = (boolean) evt.getNewValue(); + + if (newCopyRtpWeights) { + + long rowsWithUserData = model.getRows().stream().filter(SpeciesFrequencyRowModel::withWeight).count(); + + if (rowsWithUserData > 0) { + + String htmlMessage = String.format( + CONFIRMATION_FORMAT, + t("tutti.editSpeciesFrequencies.changeCopyRtpWeights.confirm.message"), + t("tutti.editSpeciesFrequencies.changeCopyRtpWeights.confirm.help")); + int i = JOptionPane.showConfirmDialog( + getTopestUI(), + htmlMessage, + t("tutti.editSpeciesFrequencies.changeCopyRtpWeights.confirm.title"), + JOptionPane.OK_CANCEL_OPTION, + JOptionPane.QUESTION_MESSAGE); + + if (i == JOptionPane.CANCEL_OPTION) { + throw new PropertyVetoException("The user does not want to erase his data.", evt); + } + } + } + }); + model.addPropertyChangeListener(SpeciesFrequencyUIModel.PROPERTY_COPY_RTP_WEIGHTS, evt -> { getModel().getRows().forEach(row -> getModel().computeRowWeightWithRtp(row)); getModel().reloadRows(); 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 41995d7..d74b958 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 @@ -89,8 +89,6 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa public static final String PROPERTY_TOTAL_NUMBER = "totalNumber"; -// public static final String PROPERTY_TOTAL_COMPUTED_OR_NOT_WEIGHT = "totalComputedOrNotWeight"; - public static final String PROPERTY_TOTAL_WEIGHT = "totalWeight"; public static final String PROPERTY_TOTAL_COMPUTED_WEIGHT = "totalComputedWeight"; @@ -608,9 +606,18 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa } public void setCopyRtpWeights(boolean copyRtpWeights) { - Object oldValue = isCopyRtpWeights(); - this.copyRtpWeights = copyRtpWeights; - firePropertyChange(PROPERTY_COPY_RTP_WEIGHTS, oldValue, copyRtpWeights); + boolean oldValue = isCopyRtpWeights(); + try { + fireVetoableChange(PROPERTY_COPY_RTP_WEIGHTS, oldValue, copyRtpWeights); + this.copyRtpWeights = copyRtpWeights; + firePropertyChange(PROPERTY_COPY_RTP_WEIGHTS, oldValue, copyRtpWeights); + + } catch (PropertyVetoException e) { + if (log.isErrorEnabled()) { + log.error("error in setting copyRtpWeights", e); + } + firePropertyChange(PROPERTY_COPY_RTP_WEIGHTS, copyRtpWeights, oldValue); + } } public boolean isAddIndividualObservationOnRafale() { 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 6cca7c3..748d8a0 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 @@ -1537,6 +1537,9 @@ tutti.editSpeciesFrequencies.averageWeight.label= tutti.editSpeciesFrequencies.changeCopyMode.confirm.help= tutti.editSpeciesFrequencies.changeCopyMode.confirm.message= tutti.editSpeciesFrequencies.changeCopyMode.confirm.title= +tutti.editSpeciesFrequencies.changeCopyRtpWeights.confirm.help= +tutti.editSpeciesFrequencies.changeCopyRtpWeights.confirm.message= +tutti.editSpeciesFrequencies.changeCopyRtpWeights.confirm.title= tutti.editSpeciesFrequencies.error.itchyometer.bad.record= tutti.editSpeciesFrequencies.error.length.doublon= tutti.editSpeciesFrequencies.field.addIndividualObservationOnRafale= 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 ff69d2e..ba70112 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 @@ -1438,6 +1438,9 @@ tutti.editSpeciesFrequencies.averageWeight.label=Poids moyen tutti.editSpeciesFrequencies.changeCopyMode.confirm.help=Que voulez-vous faire ?<ul><li><strong>Annuler</strong> pour ne pas changer de mode de copie</li><li><strong>OK</strong> pour changer de mode de copie et supprimer les données saisies</li></ul> tutti.editSpeciesFrequencies.changeCopyMode.confirm.message=Vous êtes sur le point de changer de mode de copie alors que des données ont été saisies dans les mensurations.<br/>Si vous changez de mode, les données vont être supprimées. tutti.editSpeciesFrequencies.changeCopyMode.confirm.title=Changement de mode de copie +tutti.editSpeciesFrequencies.changeCopyRtpWeights.confirm.help=Que voulez-vous faire ?<ul><li><strong>Annuler</strong> pour ne pas copier les poids calculés via les RTP</li><li><strong>OK</strong> pour copier les poids calculés via les RTP et supprimer les données saisies</li></ul> +tutti.editSpeciesFrequencies.changeCopyRtpWeights.confirm.message=Vous êtes sur le point de remplacer les poids saisis par les poids calculés via les RTP.<br/>Si vous les remplacez, les données saisies seront perdues. +tutti.editSpeciesFrequencies.changeCopyRtpWeights.confirm.title=Copier les poids calculés via les RTP 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.addIndividualObservationOnRafale=Ajouter aux observations individuelles -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.