This is an automated email from the git hooks/post-receive script. New commit to branch develop-4.4.x in repository tutti. See http://git.codelutin.com/tutti.git commit 713c84ab10af9890a16be13102ee6b0381a1ed2f Author: Kevin Morin <morin@codelutin.com> Date: Tue Feb 9 14:30:11 2016 +0100 ajout d'un event quand une ligne est sauvée, pour mettre à jour la liste des validations quand on modifie une ligne (fixes #7972) --- .../catches/AbstractTuttiBatchTableUIHandler.java | 25 ++++++++++- .../content/operation/catches/BatchSavedEvent.java | 27 ++++++++++++ .../operation/catches/BatchSavedListener.java | 10 +++++ .../accidental/AccidentalBatchUIHandler.java | 1 + .../catches/benthos/BenthosBatchUIHandler.java | 2 + .../IndividualObservationBatchUIHandler.java | 1 + .../marinelitter/MarineLitterBatchUIHandler.java | 2 + .../catches/species/SpeciesBatchUIHandler.java | 2 + .../EditFishingOperationInValidationUIAction.java | 51 ++++++++++++++++++++-- 9 files changed, 116 insertions(+), 5 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/AbstractTuttiBatchTableUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/AbstractTuttiBatchTableUIHandler.java index 51babd5..bda1683 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/AbstractTuttiBatchTableUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/AbstractTuttiBatchTableUIHandler.java @@ -40,12 +40,17 @@ import org.nuiton.decorator.Decorator; import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel; import org.nuiton.jaxx.application.swing.table.ColumnIdentifier; -import javax.swing.*; +import javax.swing.JLabel; +import javax.swing.JTable; +import javax.swing.SwingConstants; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumnModel; import javax.swing.table.TableModel; -import java.awt.*; +import java.awt.Color; +import java.awt.Component; +import java.util.ArrayList; import java.util.Collection; +import java.util.List; /** * Abstract ui handler forbatch ui. @@ -61,6 +66,8 @@ public abstract class AbstractTuttiBatchTableUIHandler<R extends AbstractTuttiBe public abstract void selectFishingOperation(FishingOperation bean); + protected final List<BatchSavedListener> batchSavedListeners = new ArrayList<>(); + protected AbstractTuttiBatchTableUIHandler(String... properties) { super(properties); } @@ -86,6 +93,20 @@ public abstract class AbstractTuttiBatchTableUIHandler<R extends AbstractTuttiBe table.clearSelection(); } + public void addBatchSavedListener(BatchSavedListener listener) { + batchSavedListeners.add(listener); + } + + public void removeBatchSavedListener(BatchSavedListener listener) { + batchSavedListeners.remove(listener); + } + + public void fireBatchSaved(R row) { + for (BatchSavedListener listener : batchSavedListeners) { + listener.onBatchSaved(new BatchSavedEvent(getModel(), row)); + } + } + @Override protected void onRowModified(int rowIndex, R row, diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/BatchSavedEvent.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/BatchSavedEvent.java new file mode 100644 index 0000000..6632ba8 --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/BatchSavedEvent.java @@ -0,0 +1,27 @@ +package fr.ifremer.tutti.ui.swing.content.operation.catches; + +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; + +/** + * @author Kevin Morin (Code Lutin) + * @since 4.4.2 + */ +public class BatchSavedEvent { + + protected final AbstractTuttiBatchUIModel model; + + protected final AbstractTuttiBeanUIModel row; + + public BatchSavedEvent(AbstractTuttiBatchUIModel model, AbstractTuttiBeanUIModel row) { + this.model = model; + this.row = row; + } + + public AbstractTuttiBatchUIModel getModel() { + return model; + } + + public AbstractTuttiBeanUIModel getRow() { + return row; + } +} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/BatchSavedListener.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/BatchSavedListener.java new file mode 100644 index 0000000..8a6d91a --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/BatchSavedListener.java @@ -0,0 +1,10 @@ +package fr.ifremer.tutti.ui.swing.content.operation.catches; + +/** + * @author Kevin Morin (Code Lutin) + * @since 4.4.2 + */ +public interface BatchSavedListener { + + void onBatchSaved(BatchSavedEvent evt); +} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java index 266016f..2ea50ce 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java @@ -442,5 +442,6 @@ public class AccidentalBatchUIHandler getPersistenceService().saveAccidentalBatch(entityToSave); } + fireBatchSaved(row); } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java index 76ec945..4b7e12c 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java @@ -1289,6 +1289,8 @@ public class BenthosBatchUIHandler extends AbstractTuttiBatchTableUIHandler<Bent getPersistenceService().saveBenthosBatch(entityToSave); } + fireBatchSaved(row); + List<BenthosFrequencyRowModel> frequencyRows = row.getFrequency(); List<BenthosBatchFrequency> frequency = diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java index e692476..3f47e37 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java @@ -754,5 +754,6 @@ public class IndividualObservationBatchUIHandler getPersistenceService().saveIndividualObservationBatch(entityToSave); } + fireBatchSaved(row); } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java index 954c6b4..a2cf97a 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/marinelitter/MarineLitterBatchUIHandler.java @@ -390,6 +390,8 @@ public class MarineLitterBatchUIHandler extends AbstractTuttiBatchTableUIHandler getPersistenceService().saveMarineLitterBatch(entityToSave); } + fireBatchSaved(row); + } public void removeFromMarineLitterCategoriesUsed(MarineLitterBatchRowModel row) { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java index 01475e0..e816265 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java @@ -1310,6 +1310,8 @@ public class SpeciesBatchUIHandler extends AbstractTuttiBatchTableUIHandler<Spec getPersistenceService().saveSpeciesBatch(catchBean); } + fireBatchSaved(row); + List<SpeciesFrequencyRowModel> frequencyRows = row.getFrequency(); List<SpeciesBatchFrequency> frequency = diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/validation/actions/EditFishingOperationInValidationUIAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/validation/actions/EditFishingOperationInValidationUIAction.java index 3ed5596..207d9f1 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/validation/actions/EditFishingOperationInValidationUIAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/validation/actions/EditFishingOperationInValidationUIAction.java @@ -27,13 +27,17 @@ import fr.ifremer.tutti.persistence.entities.data.CatchBatch; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.service.catches.ValidateCruiseOperationsService; -import fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport; import fr.ifremer.tutti.ui.swing.content.operation.EditFishingOperationUIModel; import fr.ifremer.tutti.ui.swing.content.operation.FishingOperationsUI; +import fr.ifremer.tutti.ui.swing.content.operation.catches.AbstractTuttiBatchUIModel; +import fr.ifremer.tutti.ui.swing.content.operation.catches.BatchSavedEvent; +import fr.ifremer.tutti.ui.swing.content.operation.catches.BatchSavedListener; +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.content.validation.ValidateCruiseUI; import fr.ifremer.tutti.ui.swing.content.validation.ValidateCruiseUIHandler; import fr.ifremer.tutti.ui.swing.content.validation.ValidateCruiseUIModel; +import fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport; import org.nuiton.validator.NuitonValidatorResult; import java.beans.PropertyChangeEvent; @@ -150,6 +154,29 @@ public class EditFishingOperationInValidationUIAction extends LongActionSupport< } }; + protected final BatchSavedListener batchSavedListener = new BatchSavedListener() { + + @Override + public void onBatchSaved(BatchSavedEvent evt) { + + AbstractTuttiBatchUIModel model = evt.getModel(); + + if (model.getFishingOperation() != null) { + + // after a save, or a reset, reload model cruise, since the synchronizationStatus may have changed + Cruise cruise = getDataContext().reloadCruise(); + getModel().setCruise(cruise); + + NuitonValidatorResult validationResult = validationService.validateCruiseOperation(model.getFishingOperation()); + + ValidateCruiseUIModel uiModel = getModel(); + uiModel.addValidatorResult(uiModel.getSelectedFishingOperation(), validationResult); + + getHandler().updateCurrentOperationNode(validationResult); + } + } + }; + public EditFishingOperationInValidationUIAction(ValidateCruiseUIHandler handler) { super(handler, true); setActionDescription(t("tutti.editFishingOperation.action.editFishingOperation.tip")); @@ -172,8 +199,17 @@ public class EditFishingOperationInValidationUIAction extends LongActionSupport< FishingOperationsUI operationPanel = getUI().getOperationPanel(); operationPanel.getFishingOperationTabContent().getModel(). removePropertyChangeListener(editFishingOperationModelListener); - operationPanel.getCatchesTabContent().getModel(). + + EditCatchesUI catchesTabContent = operationPanel.getCatchesTabContent(); + + catchesTabContent.getModel(). removePropertyChangeListener(editCatchesModelListener); + + catchesTabContent.getSpeciesTabContent().getHandler().removeBatchSavedListener(batchSavedListener); + catchesTabContent.getBenthosTabContent().getHandler().removeBatchSavedListener(batchSavedListener); + catchesTabContent.getAccidentalTabContent().getHandler().removeBatchSavedListener(batchSavedListener); + catchesTabContent.getMarineLitterTabContent().getHandler().removeBatchSavedListener(batchSavedListener); + catchesTabContent.getIndividualObservationTabContent().getHandler().removeBatchSavedListener(batchSavedListener); } @Override @@ -187,7 +223,16 @@ public class EditFishingOperationInValidationUIAction extends LongActionSupport< FishingOperationsUI operationPanel = getUI().getOperationPanel(); operationPanel.getFishingOperationTabContent().getModel().addPropertyChangeListener(editFishingOperationModelListener); - operationPanel.getCatchesTabContent().getModel().addPropertyChangeListener(editCatchesModelListener); + + EditCatchesUI catchesTabContent = operationPanel.getCatchesTabContent(); + + catchesTabContent.getModel().addPropertyChangeListener(editCatchesModelListener); + + catchesTabContent.getSpeciesTabContent().getHandler().addBatchSavedListener(batchSavedListener); + catchesTabContent.getBenthosTabContent().getHandler().addBatchSavedListener(batchSavedListener); + catchesTabContent.getAccidentalTabContent().getHandler().addBatchSavedListener(batchSavedListener); + catchesTabContent.getMarineLitterTabContent().getHandler().addBatchSavedListener(batchSavedListener); + catchesTabContent.getIndividualObservationTabContent().getHandler().addBatchSavedListener(batchSavedListener); } @Override -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.