branch feature/8133 created (now d871a3f)
This is an automated email from the git hooks/post-receive script. New change to branch feature/8133 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git at d871a3f Ajout de confirmation avant de réinitialiser l'écran des mensurations ou bien son départ alors que des données ne sont pas enregistrées (see #8133) This branch includes the following new commits: new d871a3f Ajout de confirmation avant de réinitialiser l'écran des mensurations ou bien son départ alors que des données ne sont pas enregistrées (see #8133) The 1 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 d871a3fe149b37b89fad9efea1976656a6d9258b Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Mar 15 14:20:12 2016 +0100 Ajout de confirmation avant de réinitialiser l'écran des mensurations ou bien son départ alors que des données ne sont pas enregistrées (see #8133) -- 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/8133 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit d871a3fe149b37b89fad9efea1976656a6d9258b Author: Tony CHEMIT <chemit@codelutin.com> Date: Tue Mar 15 14:20:12 2016 +0100 Ajout de confirmation avant de réinitialiser l'écran des mensurations ou bien son départ alors que des données ne sont pas enregistrées (see #8133) --- .../frequency/SpeciesFrequencyTableModel.java | 4 ++ .../species/frequency/SpeciesFrequencyUI.jaxx | 2 - .../species/frequency/SpeciesFrequencyUI.jcss | 12 ++++- .../frequency/SpeciesFrequencyUIHandler.java | 9 ++++ .../actions/CancelEditSpeciesFrequencyAction.java | 60 +++++++++++++++------ .../actions/ResetSpeciesFrequencyAction.java | 62 ++++++++++++++++------ .../resources/i18n/tutti-ui-swing_en_GB.properties | 10 ++++ .../resources/i18n/tutti-ui-swing_fr_FR.properties | 10 ++++ 8 files changed, 134 insertions(+), 35 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 c6d9b67..33da65b 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 @@ -160,6 +160,7 @@ public class SpeciesFrequencyTableModel extends AbstractApplicationTableModel<Sp ColumnIdentifier<SpeciesFrequencyRowModel> propertyName, SpeciesFrequencyRowModel entry) { super.setValueAt(aValue, rowIndex, columnIndex, propertyName, entry); + uiModel.setModify(true); // TODO Rebuild the computedWeight if possible... } @@ -167,12 +168,15 @@ public class SpeciesFrequencyTableModel extends AbstractApplicationTableModel<Sp protected void onRowAdded(int rowIndex, SpeciesFrequencyRowModel row) { uiModel.recomputeCanEditLengthStep(); + uiModel.setModify(true); } @Override protected void onRowUpdated(int rowIndex, SpeciesFrequencyRowModel row) { + uiModel.recomputeCanEditLengthStep(); + uiModel.setModify(true); } @Override 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 9bbb08f..22db753 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 @@ -82,8 +82,6 @@ public SpeciesFrequencyUI(TuttiUI parentUI) { <AddSpeciesFrequencyLengthStepCaracteristicAction id="addLengthStepCaracteristicAction" constructorParams="this"/> <GenerateSpeciesFrequencyLengthStepsAction id="generateLengthStepsAction" constructorParams="this"/> - <CancelEditSpeciesFrequencyAction id="cancelAction" constructorParams="this"/> - <ResetSpeciesFrequencyAction id="resetAction" constructorParams="this"/> <SaveAndCloseSpeciesFrequencyAction id="saveAndCloseAction" constructorParams="this"/> <SaveAndContinueSpeciesFrequencyAction id="saveAndContinueAction" constructorParams="this"/> 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 bb9b5a0..34f11dd 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 @@ -503,7 +503,11 @@ ComputableDataEditor { } #cancelButton { - action: {cancelAction}; + actionIcon: cancel; + text: "tutti.editSpeciesFrequencies.action.cancel"; + toolTipText: "tutti.editSpeciesFrequencies.action.cancel.tip"; + i18nMnemonic: "tutti.editSpeciesFrequencies.action.cancel.mnemonic"; + _applicationAction: {fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.actions.CancelEditSpeciesFrequencyAction.class}; _help: {"tutti.editSpeciesFrequencies.action.cancel.help"}; } @@ -526,6 +530,10 @@ ComputableDataEditor { } #resetButton { - action: {resetAction}; + actionIcon: reset; + text: "tutti.editSpeciesFrequencies.action.reset"; + toolTipText: "tutti.editSpeciesFrequencies.action.reset.tip"; + i18nMnemonic: "tutti.editSpeciesFrequencies.action.reset.mnemonic"; + _applicationAction: {fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.actions.ResetSpeciesFrequencyAction.class}; _help: {"tutti.editSpeciesFrequencies.action.reset.help"}; } 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 0b860b1..24169f6 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 @@ -263,6 +263,9 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci getModel().recomputeIndividualObservationRowValidState(row); getModel().recomputeCanEditLengthStep(); + + getModel().setModify(true); + } }; @@ -330,6 +333,8 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci SpeciesFrequencyLogsTableModel logsTableModel = (SpeciesFrequencyLogsTableModel) ui.getLogsTable().getModel(); logsTableModel.setRows(Lists.<SpeciesFrequencyLogRowModel>newArrayList()); + getModel().setModify(false); + } @Override @@ -342,6 +347,7 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci // We do nothing here. This API works only on the selected row. // On this screen, we can interacts with not selected row, so won't come here. // Better then to work directly on rows in the table model +// getModel().setModify(true); } @@ -646,6 +652,7 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci getModel().setValid(false); getModel().setSimpleCount(null); + getModel().setModify(false); EditCatchesUI parent = getParentContainer(EditCatchesUI.class); parent.getHandler().setSpeciesSelectedCard(EditCatchesUIHandler.MAIN_CARD); @@ -917,6 +924,8 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci // keep batch (will be used to push back editing entry) model.setBatch(speciesBatch); + model.setModify(false); + } public void updateFrequencyRowsNumbers(Float lengthStepToDec, Float lengthStepToInc) { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/CancelEditSpeciesFrequencyAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/CancelEditSpeciesFrequencyAction.java index 64b6595..3b43bec 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/CancelEditSpeciesFrequencyAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/CancelEditSpeciesFrequencyAction.java @@ -25,12 +25,14 @@ package fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.ac */ import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUI; -import jaxx.runtime.SwingUtil; +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 fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.nuiton.jaxx.application.swing.AbstractApplicationUIHandler; -import javax.swing.AbstractAction; -import java.awt.event.ActionEvent; +import javax.swing.JOptionPane; import static org.nuiton.i18n.I18n.t; @@ -40,34 +42,60 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 3.11 */ -public class CancelEditSpeciesFrequencyAction extends AbstractAction { +public class CancelEditSpeciesFrequencyAction extends LongActionSupport<SpeciesFrequencyUIModel, SpeciesFrequencyUI, SpeciesFrequencyUIHandler> { /** Logger. */ private static final Log log = LogFactory.getLog(CancelEditSpeciesFrequencyAction.class); - private static final long serialVersionUID = 1L; + public CancelEditSpeciesFrequencyAction(SpeciesFrequencyUIHandler handler) { + super(handler, false); + } + + @Override + public boolean prepareAction() throws Exception { + + boolean doAction = super.prepareAction(); + + if (doAction && getModel().isModify()) { - final SpeciesFrequencyUI ui; + // Ask confirmation to quit screen + doAction = false; - public CancelEditSpeciesFrequencyAction(SpeciesFrequencyUI ui) { - this.ui = ui; + String htmlMessage = String.format(AbstractApplicationUIHandler.CONFIRMATION_FORMAT, + t("tutti.askToCancelEditFrequencies.message"), + t("tutti.askToCancelEditFrequencies.help")); - putValue(NAME, t("tutti.editSpeciesFrequencies.action.cancel")); - putValue(SHORT_DESCRIPTION, t("tutti.editSpeciesFrequencies.action.cancel.tip")); - putValue(MNEMONIC_KEY, (int) SwingUtil.getFirstCharAt(t("tutti.editSpeciesFrequencies.action.cancel.mnemonic"), 'Z')); - putValue(SMALL_ICON, SwingUtil.createActionIcon("cancel")); + int saveResponse = JOptionPane.showOptionDialog( + getHandler().getTopestUI(), + htmlMessage, + t("tutti.askToCancelEditFrequencies.title"), + JOptionPane.OK_CANCEL_OPTION, + JOptionPane.QUESTION_MESSAGE, + null, + new String[]{t("tutti.option.continue"), t("tutti.option.cancel")}, + t("tutti.option.cancel")); + + switch (saveResponse) { + case 0: + + // confirm + doAction = true; + break; + + } + } + return doAction; } @Override - public void actionPerformed(ActionEvent e) { + public void doAction() throws Exception { if (log.isDebugEnabled()) { - log.debug("Cancel UI " + ui); + log.debug("Cancel UI " + getUI()); } // close dialog - ui.getHandler().onCloseUI(); - + getHandler().onCloseUI(); } } \ No newline at end of file diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ResetSpeciesFrequencyAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ResetSpeciesFrequencyAction.java index 4a3f8a5..0321847 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ResetSpeciesFrequencyAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ResetSpeciesFrequencyAction.java @@ -26,10 +26,12 @@ package fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.ac import com.google.common.collect.Lists; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUI; -import jaxx.runtime.SwingUtil; +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 fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport; +import org.nuiton.jaxx.application.swing.AbstractApplicationUIHandler; -import javax.swing.AbstractAction; -import java.awt.event.ActionEvent; +import javax.swing.JOptionPane; import static org.nuiton.i18n.I18n.t; @@ -39,29 +41,59 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 3.11 */ -public class ResetSpeciesFrequencyAction extends AbstractAction { +public class ResetSpeciesFrequencyAction extends LongActionSupport<SpeciesFrequencyUIModel, SpeciesFrequencyUI, SpeciesFrequencyUIHandler> { - private static final long serialVersionUID = 1L; - final SpeciesFrequencyUI ui; + public ResetSpeciesFrequencyAction(SpeciesFrequencyUIHandler handler) { + super(handler, false); + } + + @Override + public boolean prepareAction() throws Exception { + + boolean doAction = super.prepareAction(); + + if (doAction) { - public ResetSpeciesFrequencyAction(SpeciesFrequencyUI ui) { + doAction = false; + // Ask confirmation to quit screen - this.ui = ui; + String htmlMessage = String.format(AbstractApplicationUIHandler.CONFIRMATION_FORMAT, + t("tutti.askToResetEditFrequencies.message"), + t("tutti.askToResetEditFrequencies.help")); - putValue(NAME, t("tutti.editSpeciesFrequencies.action.reset")); - putValue(SHORT_DESCRIPTION, t("tutti.editSpeciesFrequencies.action.reset.tip")); - putValue(MNEMONIC_KEY, (int) SwingUtil.getFirstCharAt(t("tutti.editSpeciesFrequencies.action.reset.mnemonic"), 'Z')); - putValue(SMALL_ICON, SwingUtil.createActionIcon("reset")); + int saveResponse = JOptionPane.showOptionDialog( + getHandler().getTopestUI(), + htmlMessage, + t("tutti.askToResetEditFrequencies.title"), + JOptionPane.OK_CANCEL_OPTION, + JOptionPane.QUESTION_MESSAGE, + null, + new String[]{t("tutti.option.continue"), t("tutti.option.cancel")}, + t("tutti.option.cancel")); + + switch (saveResponse) { + case 0: + + // accept + doAction = true; + break; + + } + } + return doAction; } @Override - public void actionPerformed(ActionEvent e) { + public void doAction() throws Exception { // remove all frequencies - ui.getModel().setRows(Lists.newArrayList()); - ui.getModel().setIndividualObservationRows(Lists.newArrayList()); + getModel().setRows(Lists.newArrayList()); + + // remove all individual observations + getModel().setIndividualObservationRows(Lists.newArrayList()); } + } \ No newline at end of file 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 bb309af..e472d2c 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 @@ -49,6 +49,12 @@ tutti.askBeforeMultiPostImport.frequencies.message= tutti.askBeforeMultiPostImport.help= tutti.askBeforeMultiPostImport.message= tutti.askBeforeMultiPostImport.title= +tutti.askToCancelEditFrequencies.help= +tutti.askToCancelEditFrequencies.message= +tutti.askToCancelEditFrequencies.title= +tutti.askToResetEditFrequencies.help= +tutti.askToResetEditFrequencies.message= +tutti.askToResetEditFrequencies.title= tutti.askToSaveCatch.help= tutti.askToSaveCatch.message= tutti.askToSaveCatch.title= @@ -2226,10 +2232,14 @@ tutti.option.cleanAndClone= tutti.option.cleanAndEdit= tutti.option.cleanAndImport= tutti.option.clone= +tutti.option.confirm= +tutti.option.continue= tutti.option.edit= tutti.option.import= tutti.option.notSaveCatch= +tutti.option.quit= tutti.option.resetCatch= +tutti.option.saveAndQuit= tutti.option.saveCatch= tutti.persistence.cruise.gearUsedInOperations.error= tutti.propety.no.species.speciesCode= 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 e1aac59..dd575aa 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 @@ -34,6 +34,12 @@ tutti.askBeforeMultiPostImport.help=Que voulez-vous faire ?<ul><li><strong>Annul tutti.askBeforeMultiPostImport.individualObservations.message=Des observations individuelles existent tutti.askBeforeMultiPostImport.message=%s<br/>Elles seront supprimées avant l'import. tutti.askBeforeMultiPostImport.title=Des données existent; elles seront supprimées avant l'import \! +tutti.askToCancelEditFrequencies.help=Que voulez-vous faire ?<ul><li><strong>Annuler</strong> pour rester sur l'écran</li><li><strong>Continuer</strong> pour confirmer la perte des données modifiées et le retour sur l'écran des lots</li></ul> +tutti.askToCancelEditFrequencies.message=Des modifications sur les mensurations - observations individuelles ne sont pas enregistrées. +tutti.askToCancelEditFrequencies.title=Confirmation avant de quitter l'écran des mensurations - observations individuelles +tutti.askToResetEditFrequencies.help=Que voulez-vous faire ?<ul><li><strong>Annuler</strong> pour annuler l'opération de suppression</li><li><strong>Continuer</strong> pour confirmer la suppression des données</li></ul> +tutti.askToResetEditFrequencies.message=Vous êtes sur le point de supprimer toutes les mensurations et observations individuelles de ce lot. +tutti.askToResetEditFrequencies.title=Confirmation avant de supprimer les mensurations et observations individuelles tutti.askToSaveCatch.message=Des modifications sur la capture ne sont pas enregistrées 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> @@ -2046,10 +2052,14 @@ tutti.option.cleanAndClone=Nettoyer et Cloner tutti.option.cleanAndEdit=Nettoyer et Éditer tutti.option.cleanAndImport=Nettoyer et Importer tutti.option.clone=Cloner +tutti.option.confirm=Confirmer +tutti.option.continue=Continuer tutti.option.edit=Éditer tutti.option.import=Importer tutti.option.notSaveCatch=Ne pas enregistrer les modifications +tutti.option.quit=Quitter tutti.option.resetCatch=Annuler les modifications +tutti.option.saveAndQuit=Enregistrer et quitter tutti.option.saveCatch=Enregistrer les modifications tutti.persistence.cruise.gearUsedInOperations.error= tutti.propety.no.species.speciesCode= -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm