01/02: Demander de sauvegarder avant l'export multi-poste si des modifications sur le modèle (Fixes #8199)
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 9488922d6a8bb69b2d663682e4b8b365936e5854 Author: Tony CHEMIT <chemit@codelutin.com> Date: Thu Mar 31 20:21:30 2016 +0200 Demander de sauvegarder avant l'export multi-poste si des modifications sur le modèle (Fixes #8199) --- .../actions/ExportMultiPostActionSupport.java | 95 ++++++++++++++-------- .../frequency/SpeciesFrequencyCellComponent.java | 9 +- .../ExportMultiPostSpeciesSupportAction.java | 42 +++++++++- .../resources/i18n/tutti-ui-swing_en_GB.properties | 3 + .../resources/i18n/tutti-ui-swing_fr_FR.properties | 3 + 5 files changed, 115 insertions(+), 37 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/actions/ExportMultiPostActionSupport.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/actions/ExportMultiPostActionSupport.java index 41fed1b..8e40b9c 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/actions/ExportMultiPostActionSupport.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/actions/ExportMultiPostActionSupport.java @@ -26,11 +26,11 @@ import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.catches.multipost.MultiPostExportService; -import fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; import fr.ifremer.tutti.ui.swing.util.TuttiUI; +import fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport; import org.jdesktop.beans.AbstractBean; import org.nuiton.jaxx.application.swing.AbstractApplicationUIHandler; @@ -49,7 +49,7 @@ public abstract class ExportMultiPostActionSupport<M extends AbstractBean, UI ex /** * Do save the catches before export. */ - private Boolean doSaveCatches; + private Boolean doSaveBeforeExport; /** * File to export. @@ -81,45 +81,63 @@ public abstract class ExportMultiPostActionSupport<M extends AbstractBean, UI ex return getUI().getParentContainer(EditCatchesUI.class); } - @Override - public final boolean prepareAction() throws Exception { + /** + * Demande si il faut sauvegarder les données de l'écran avant de lancer l'export. + * + * @return {@code null} si pas de sauvegarde à faire, + * {@code 0} si on doit effectuer la sauvegarde avant l'export, {@code 1} pour ne rien faire avant l'export, {@code 2} pour annuler l'action + * @since 4.5 + */ + protected Integer askToSaveBeforeExport() { - boolean doAction = super.prepareAction(); + EditCatchesUIModel model = getEditCatchUI().getModel(); - if (doAction) { + Integer doSaveBeforeExportResponse = null; - doSaveCatches = false; + boolean canSave = model.isModify() && model.isValid(); + if (canSave) { - EditCatchesUI catchesUI = getEditCatchUI(); - EditCatchesUIModel model = catchesUI.getModel(); + String htmlMessage = String.format( + AbstractApplicationUIHandler.CONFIRMATION_FORMAT, + t("tutti.askToSaveCatch.message"), + t("tutti.askToSaveCatchBeforeExport.help")); - fishingOperation = model.getFishingOperation(); + doSaveBeforeExportResponse = JOptionPane.showOptionDialog(getHandler().getTopestUI(), + htmlMessage, + t("tutti.askToSaveCatch.title"), + JOptionPane.OK_CANCEL_OPTION, + JOptionPane.QUESTION_MESSAGE, + null, + new String[]{t("tutti.option.saveCatch"), t("tutti.option.notSaveCatch"), t("tutti.option.cancelExport")}, + t("tutti.option.saveCatch")); - boolean canSave = model.isModify() && model.isValid(); - // ask user to save before export (otherwise some data won't be exported) + } - if (canSave) { + return doSaveBeforeExportResponse; - String htmlMessage = String.format( - AbstractApplicationUIHandler.CONFIRMATION_FORMAT, - t("tutti.askToSaveCatch.message"), - t("tutti.askToSaveCatchBeforeExport.help")); + } - int saveResponse = JOptionPane.showOptionDialog(getHandler().getTopestUI(), - htmlMessage, - t("tutti.askToSaveCatch.title"), - JOptionPane.OK_CANCEL_OPTION, - JOptionPane.QUESTION_MESSAGE, - null, - new String[]{t("tutti.option.saveCatch"), t("tutti.option.notSaveCatch"), t("tutti.option.cancelExport")}, - t("tutti.option.saveCatch")); + @Override + public final boolean prepareAction() throws Exception { - switch (saveResponse) { + boolean doAction = super.prepareAction(); + + if (doAction) { + + fishingOperation = getEditCatchUI().getModel().getFishingOperation(); + + Integer doSaveBeforeExportResponse = askToSaveBeforeExport(); + + doSaveBeforeExport = false; + + if (doSaveBeforeExportResponse != null) { + + switch (doSaveBeforeExportResponse) { case 0: // should save - doSaveCatches = true; + doSaveBeforeExport = true; break; case 1: @@ -129,6 +147,7 @@ public abstract class ExportMultiPostActionSupport<M extends AbstractBean, UI ex // cancel import doAction = false; + break; } } @@ -155,21 +174,27 @@ public abstract class ExportMultiPostActionSupport<M extends AbstractBean, UI ex } + protected void saveBeforeExport() { + + getProgressionModel().increments("Sauvegarde de la capture"); + + // save catches before export + + EditCatchesUI catchesUI = getEditCatchUI(); + getActionEngine().runInternalAction(catchesUI.getHandler(), SaveCatchBatchAction.class); + + } + @Override public final void doAction() throws Exception { - if (doSaveCatches) { + if (doSaveBeforeExport) { setProgressionModel(new ProgressionModel()); ProgressionModel progressionModel = getProgressionModel(); progressionModel.setTotal(2); - progressionModel.increments("Sauvegarde de la capture"); - - // save catches before export - - EditCatchesUI catchesUI = getEditCatchUI(); - getActionEngine().runInternalAction(catchesUI.getHandler(), SaveCatchBatchAction.class); + saveBeforeExport(); progressionModel.increments("Lancement de l'export"); @@ -187,7 +212,7 @@ public abstract class ExportMultiPostActionSupport<M extends AbstractBean, UI ex public final void releaseAction() { file = null; fishingOperation = null; - doSaveCatches = null; + doSaveBeforeExport = null; super.releaseAction(); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyCellComponent.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyCellComponent.java index 626774e..8c9d1c5 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyCellComponent.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyCellComponent.java @@ -221,7 +221,8 @@ public class SpeciesFrequencyCellComponent extends DefaultTableCellRenderer { parent.getHandler().editSpeciesFrequencies(this); } - public void save(SpeciesFrequencyUIModel frequencyModel, boolean quit) { + public void save(SpeciesFrequencyUIModel frequencyModel) { + if (frequencyModel.isValid()) { // at close, synch back frequencies @@ -286,6 +287,12 @@ public class SpeciesFrequencyCellComponent extends DefaultTableCellRenderer { ui.getHandler().updateTotalFromFrequencies(editRow); } + } + + public void save(SpeciesFrequencyUIModel frequencyModel, boolean quit) { + + save(frequencyModel); + if (quit) { int r = rowIndex; int c = columnIndex; diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ExportMultiPostSpeciesSupportAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ExportMultiPostSpeciesSupportAction.java index 2e4f379..40a2323 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ExportMultiPostSpeciesSupportAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ExportMultiPostSpeciesSupportAction.java @@ -25,14 +25,18 @@ package fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.ac import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.service.catches.multipost.MultiPostExportService; -import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesOrBenthosBatchUISupport; import fr.ifremer.tutti.ui.swing.content.operation.catches.actions.ExportMultiPostActionSupport; +import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesOrBenthosBatchUISupport; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUIModel; +import org.nuiton.jaxx.application.swing.AbstractApplicationUIHandler; +import javax.swing.JOptionPane; import java.io.File; +import static org.nuiton.i18n.I18n.t; + /** * @author Tony Chemit - chemit@codelutin.com * @since 4.5 @@ -58,4 +62,40 @@ public abstract class ExportMultiPostSpeciesSupportAction extends ExportMultiPos } + @Override + protected Integer askToSaveBeforeExport() { + + SpeciesFrequencyUIModel model = getModel(); + + Integer doSaveBeforeExportResponse = null; + + boolean canSave = model.isModify() && model.isValid(); + if (canSave) { + + String htmlMessage = String.format( + AbstractApplicationUIHandler.CONFIRMATION_FORMAT, + t("tutti.askToSaveFrequenciesOrIndividualObservations.message"), + t("tutti.askToSaveFrequenciesOrIndividualObservations.help")); + + doSaveBeforeExportResponse = JOptionPane.showOptionDialog(getHandler().getTopestUI(), + htmlMessage, + t("tutti.askToSaveFrequenciesOrIndividualObservations.title"), + JOptionPane.OK_CANCEL_OPTION, + JOptionPane.QUESTION_MESSAGE, + null, + new String[]{t("tutti.option.saveCatch"), t("tutti.option.notSaveCatch"), t("tutti.option.cancelExport")}, + t("tutti.option.saveCatch")); + + } + + return doSaveBeforeExportResponse; + + } + + @Override + protected void saveBeforeExport() { + + getHandler().getFrequencyEditor().save(getModel()); + + } } 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 518fe4c..e9c7a23 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 @@ -62,6 +62,9 @@ tutti.askToSaveCatch.message= tutti.askToSaveCatch.title= tutti.askToSaveCatchBeforeExport.help= tutti.askToSaveCatchBeforeImport.help= +tutti.askToSaveFrequenciesOrIndividualObservations.help= +tutti.askToSaveFrequenciesOrIndividualObservations.message= +tutti.askToSaveFrequenciesOrIndividualObservations.title= tutti.attachmentEditor.action= tutti.attachmentEditor.action.add.mnemonic= tutti.attachmentEditor.action.add.tip= 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 90e313d..867d16b 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 @@ -46,6 +46,9 @@ tutti.askToSaveCatch.message=Des modifications sur la capture ne sont pas enregi tutti.askToSaveCatch.title=Modifications non enregistrées sur la capture tutti.askToSaveCatchBeforeExport.help=Que voulez-vous faire ?<ul><li><strong>Annuler l'export</strong> pour annuler l'opération d'export</li><li><strong>Ne pas enregistrer les modifications</strong> pour réaliser l'export sur les données non modifiées</li><li><strong>Enregistrer les modifications</strong> pour enregistrer les modifications puis réaliser l'export</li></ul> tutti.askToSaveCatchBeforeImport.help=Que voulez-vous faire ?<ul><li><strong>Annuler l'import</strong> pour annuler l'opération d'import</li><li><strong>Annuler les modifications</strong> pour annuler les modifications avant de réaliser l'import</li><li><strong>Enregistrer les modifications</strong> pour enregistrer les modifications puis réaliser l'import</li></ul> +tutti.askToSaveFrequenciesOrIndividualObservations.help=Que voulez-vous faire ?<ul><li><strong>Annuler l'export</strong> pour annuler l'opération d'export</li><li><strong>Ne pas enregistrer les modifications</strong> pour réaliser l'export sur les données non modifiées</li><li><strong>Enregistrer les modifications</strong> pour enregistrer les modifications puis réaliser l'export</li></ul> +tutti.askToSaveFrequenciesOrIndividualObservations.message=Des modifications ne sont pas enregistrées +tutti.askToSaveFrequenciesOrIndividualObservations.title=Modifications non enregistrées sur les mensurations ou observations individuelles tutti.attachmentEditor.action.add.mnemonic=A tutti.attachmentEditor.action.add.tip=Ajouter une pièce jointe tutti.attachmentEditor.action.closeAttachment.tip=Fermer la fenêtre des pièces-jointes -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm