This is an automated email from the git hooks/post-receive script. New commit to branch feature/6115_ajout_RTP in repository tutti. See http://git.codelutin.com/tutti.git commit 31522f4ee809628eda7cf44cd890464d27d48513 Author: Kevin Morin <morin@codelutin.com> Date: Mon Jan 18 11:38:54 2016 +0100 ajout du validateur + passage du tablemodel dans l'editor (refs #6115) --- .../ui/swing/content/protocol/rtp/RtpButton.java | 6 +- .../swing/content/protocol/rtp/RtpCellEditor.java | 2 +- .../ui/swing/content/protocol/rtp/RtpEditorUI.jaxx | 4 +- .../content/protocol/rtp/RtpEditorUIHandler.java | 69 ++++++++++++++++++++-- .../content/protocol/rtp/RtpEditorUIModel.java | 14 +++-- .../protocol/rtp/actions/CancelRtpAction.java | 3 +- .../protocol/rtp/actions/SaveRtpAction.java | 2 - .../rtp/RtpEditorUIModel-error-validation.xml | 39 ++++++++++-- .../resources/i18n/tutti-ui-swing_en_GB.properties | 8 +++ .../resources/i18n/tutti-ui-swing_fr_FR.properties | 8 +++ 10 files changed, 132 insertions(+), 23 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpButton.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpButton.java index 6a016dc..dd60643 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpButton.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpButton.java @@ -1,6 +1,6 @@ package fr.ifremer.tutti.ui.swing.content.protocol.rtp; -import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolSpeciesRowModel; +import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolSpeciesTableModel; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUI; import jaxx.runtime.SwingUtil; @@ -67,8 +67,8 @@ public class RtpButton extends JToggleButton { } - public void init(EditProtocolSpeciesRowModel model) { - popup.setBean(model); + public void init(EditProtocolSpeciesTableModel tableModel, int row) { + popup.setBean(tableModel, row); } } \ No newline at end of file diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpCellEditor.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpCellEditor.java index 0044160..bf76dad 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpCellEditor.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpCellEditor.java @@ -68,7 +68,7 @@ public class RtpCellEditor extends AbstractCellEditor implements TableCellEditor EditProtocolSpeciesRowModel model = tableModel.getEntry(row); - editorButton.init(model); + editorButton.init(tableModel, row); return editorButton; } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUI.jaxx b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUI.jaxx index 9324c25..ec1482c 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUI.jaxx +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUI.jaxx @@ -26,7 +26,7 @@ fr.ifremer.tutti.ui.swing.TuttiHelpBroker fr.ifremer.tutti.ui.swing.TuttiUIContext - fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolSpeciesRowModel + fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolSpeciesTableModel fr.ifremer.tutti.ui.swing.util.TuttiUI fr.ifremer.tutti.ui.swing.util.TuttiUIUtil @@ -43,7 +43,7 @@ public RtpEditorUI(TuttiUI<?,?> parentUI) { TuttiUIUtil.setParentUI(this, parentUI); } -public void setBean(EditProtocolSpeciesRowModel bean) { handler.setBean(bean); } +public void setBean(EditProtocolSpeciesTableModel tableModel, int row) { handler.setBean(tableModel, row); } public void openEditor() { handler.openEditor(); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUIHandler.java index ebd800e..ca6841e 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUIHandler.java @@ -2,12 +2,16 @@ package fr.ifremer.tutti.ui.swing.content.protocol.rtp; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolSpeciesRowModel; +import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolSpeciesTableModel; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; +import jaxx.runtime.swing.ComponentMover; +import jaxx.runtime.swing.ComponentResizer; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.swing.JComponent; +import javax.swing.JOptionPane; import static org.nuiton.i18n.I18n.t; @@ -41,6 +45,12 @@ public class RtpEditorUIHandler extends AbstractTuttiUIHandler<RtpEditorUIModel, ui.pack(); ui.setResizable(true); + ComponentResizer cr = new ComponentResizer(); + cr.registerComponent(ui); + ComponentMover cm = new ComponentMover(); + cm.setDragInsets(cr.getDragInsets()); + cm.registerComponent(ui); + } @Override @@ -50,7 +60,54 @@ public class RtpEditorUIHandler extends AbstractTuttiUIHandler<RtpEditorUIModel, @Override public void onCloseUI() { - ui.dispose(); + + boolean result = true; + + RtpEditorUIModel model = getModel(); + + if (model.isModify()) { + if (model.isValid()) { + + result = quitUnsavedRtpForm(); + + } else { + + // model is not valid, ask user to continue or not + + result = askCancelEditBeforeLeaving( + t("tutti.rtpEdit.askCancelEditBeforeLeaving")); + } + } + + if (result) { + ui.dispose(); + } + } + + protected boolean quitUnsavedRtpForm() { + // ask if user want to save, do not save or cancel action + + boolean result; + + String message = t("tutti.rtpEdit.askSaveBeforeLeaving"); + + int answer = askSaveBeforeLeaving(message); + switch (answer) { + case JOptionPane.OK_OPTION: + getContext().getActionEngine().runAction(ui.getSaveButton()); + result = true; + break; + + case JOptionPane.NO_OPTION: + getContext().getActionEngine().runAction(ui.getCancelButton()); + result = true; + break; + + default: + // other case, use cancel action + result = false; + } + return result; } @Override @@ -58,7 +115,11 @@ public class RtpEditorUIHandler extends AbstractTuttiUIHandler<RtpEditorUIModel, return ui.getValidator(); } - public void setBean(EditProtocolSpeciesRowModel rowModel) { + public void setBean(EditProtocolSpeciesTableModel tableModel, int row) { + + getModel().setRowModel(tableModel, row); + + EditProtocolSpeciesRowModel rowModel = getModel().getRowModel(); Species species = rowModel.getSpecies(); @@ -70,8 +131,6 @@ public class RtpEditorUIHandler extends AbstractTuttiUIHandler<RtpEditorUIModel, ui.getBodyPanel().setTitle(t("tutti.rtpEdit.title", decorate)); - getModel().setRowModel(rowModel); - } public void openEditor() { @@ -79,7 +138,7 @@ public class RtpEditorUIHandler extends AbstractTuttiUIHandler<RtpEditorUIModel, } public void closeEditor() { - ui.dispose(); + onCloseUI(); } } \ No newline at end of file diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUIModel.java index 25a95b9..3b8bbc7 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUIModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUIModel.java @@ -3,6 +3,7 @@ package fr.ifremer.tutti.ui.swing.content.protocol.rtp; import fr.ifremer.tutti.persistence.entities.protocol.Rtp; import fr.ifremer.tutti.persistence.entities.protocol.RtpBean; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolSpeciesRowModel; +import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolSpeciesTableModel; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; /** @@ -25,7 +26,9 @@ public class RtpEditorUIModel extends AbstractTuttiBeanUIModel<EditProtocolSpeci protected final Rtp rtpUndefined = new RtpBean(); - protected EditProtocolSpeciesRowModel rowModel; + protected EditProtocolSpeciesTableModel tableModel; + + protected int row; public RtpEditorUIModel() { super(null, null); @@ -102,9 +105,12 @@ public class RtpEditorUIModel extends AbstractTuttiBeanUIModel<EditProtocolSpeci firePropertyChanged(PROPERTY_RTP_UNDEFINED_B, null, b); } - public void setRowModel(EditProtocolSpeciesRowModel rowModel) { + public void setRowModel(EditProtocolSpeciesTableModel tableModel, int row) { + + this.row = row; + this.tableModel = tableModel; - this.rowModel = rowModel; + EditProtocolSpeciesRowModel rowModel = tableModel.getEntry(row); Rtp rtpMale = rowModel.getRtpMale(); setRtpMaleA(rtpMale == null ? null : rtpMale.getA()); @@ -121,6 +127,6 @@ public class RtpEditorUIModel extends AbstractTuttiBeanUIModel<EditProtocolSpeci } public EditProtocolSpeciesRowModel getRowModel() { - return rowModel; + return tableModel.getEntry(row); } } \ No newline at end of file diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/actions/CancelRtpAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/actions/CancelRtpAction.java index ef4b50c..ce215d0 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/actions/CancelRtpAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/actions/CancelRtpAction.java @@ -18,6 +18,7 @@ public class CancelRtpAction extends SimpleActionSupport<RtpEditorUI> { @Override protected void onActionPerformed(RtpEditorUI ui) { - ui.dispose(); + + ui.getHandler().closeEditor(); } } \ No newline at end of file diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/actions/SaveRtpAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/actions/SaveRtpAction.java index a2082b4..7f83ea3 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/actions/SaveRtpAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/rtp/actions/SaveRtpAction.java @@ -30,7 +30,5 @@ public class SaveRtpAction extends SimpleActionSupport<RtpEditorUI> { rowModel.setRtpFemale(Rtps.newRtp(model.getRtpFemale())); rowModel.setRtpUndefined(Rtps.newRtp(model.getRtpUndefined())); - ui.dispose(); - } } \ No newline at end of file diff --git a/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUIModel-error-validation.xml b/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUIModel-error-validation.xml index 8eff41c..d704589 100644 --- a/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUIModel-error-validation.xml +++ b/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/protocol/rtp/RtpEditorUIModel-error-validation.xml @@ -26,20 +26,49 @@ "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> <validators> - <field name="selectedSource"> + <field name="rtpMaleA"> <field-validator type="required" short-circuit="true"> <message> - tutti.validator.error.replaceTemporaryReferential.source.required + tutti.validator.error.rtpEditor.rtpMaleA.required </message> </field-validator> </field> - - <field name="selectedTarget"> + <field name="rtpMaleB"> + <field-validator type="required" short-circuit="true"> + <message> + tutti.validator.error.rtpEditor.rtpMaleB.required + </message> + </field-validator> + </field> + <field name="rtpFemaleA"> <field-validator type="required" short-circuit="true"> <message> - tutti.validator.error.replaceTemporaryReferential.target.required + tutti.validator.error.rtpEditor.rtpFemaleA.required </message> </field-validator> </field> + <field name="rtpFemaleB"> + <field-validator type="required" short-circuit="true"> + <message> + tutti.validator.error.rtpEditor.rtpFemaleB.required + </message> + </field-validator> + </field> + <field name="rtpUndefinedA"> + <field-validator type="required" short-circuit="true"> + <message> + tutti.validator.error.rtpEditor.rtpUndefinedA.required + </message> + </field-validator> + </field> + <field name="rtpUndefinedB"> + <field-validator type="required" short-circuit="true"> + <message> + tutti.validator.error.rtpEditor.rtpUndefinedB.required + </message> + </field-validator> + </field> + + </validators> 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 996ff6c..7b25bc9 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 @@ -2060,6 +2060,8 @@ tutti.report.title= tutti.report.title.choose.saveReportFile= tutti.resetCruise.action.cruiseReloaded= tutti.resetProgram.action.programReloaded= +tutti.rtpEdit.askCancelEditBeforeLeaving= +tutti.rtpEdit.askSaveBeforeLeaving= tutti.rtpEdit.title= tutti.selectBenthos.title= tutti.selectCruise.action.chooseCruiseExportFile= @@ -2288,6 +2290,12 @@ tutti.validator.error.report.cruiseId.required= tutti.validator.error.report.fishingOperation.required= tutti.validator.error.report.outputFile.required= tutti.validator.error.report.report.required= +tutti.validator.error.rtpEditor.rtpFemaleA.required= +tutti.validator.error.rtpEditor.rtpFemaleB.required= +tutti.validator.error.rtpEditor.rtpMaleA.required= +tutti.validator.error.rtpEditor.rtpMaleB.required= +tutti.validator.error.rtpEditor.rtpUndefinedA.required= +tutti.validator.error.rtpEditor.rtpUndefinedB.required= tutti.validator.error.speciesFrequency.incoherentTotalWeights= tutti.validator.error.speciesFrequency.lengthStepCaracteristic.required= tutti.validator.error.speciesFrequency.oneRowRequired= 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 6139b0f..d780e2a 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 @@ -1913,6 +1913,8 @@ tutti.report.title=Rapports tutti.report.title.choose.saveReportFile=Enregistrer le rapport généré tutti.resetCruise.action.cruiseReloaded=<html><body>La campagne <strong>%s</strong> est rechargée</body></html>. tutti.resetProgram.action.programReloaded=<html><body>Le programme <strong>%s</strong> est rechargé</body></html>. +tutti.rtpEdit.askCancelEditBeforeLeaving= +tutti.rtpEdit.askSaveBeforeLeaving= tutti.rtpEdit.title=Édition des relations taille-poids de l'espèce %s tutti.selectBenthos.title=Choisissez une espèce du benthos tutti.selectCruise.action.chooseCruiseExportFile=Exporter @@ -2123,6 +2125,12 @@ tutti.validator.error.report.cruiseId.required=La campagne est obligatoire tutti.validator.error.report.fishingOperation.required=Un trait doit être sélectionné tutti.validator.error.report.outputFile.required=Le fichier de sortie est obligatoire tutti.validator.error.report.report.required=Un modèle de rapport doit être sélectionné +tutti.validator.error.rtpEditor.rtpFemaleA.required= +tutti.validator.error.rtpEditor.rtpFemaleB.required= +tutti.validator.error.rtpEditor.rtpMaleA.required= +tutti.validator.error.rtpEditor.rtpMaleB.required= +tutti.validator.error.rtpEditor.rtpUndefinedA.required= +tutti.validator.error.rtpEditor.rtpUndefinedB.required= tutti.validator.error.speciesFrequency.incoherentTotalWeights=Le poids total est différent de la somme des poids des poids observés tutti.validator.error.speciesFrequency.lengthStepCaracteristic.required=La classe de taille est obligatoire tutti.validator.error.speciesFrequency.oneRowRequired=Au moins une classe de taille doit être observée -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.