branch feature/ecran_obs_individuelles updated (cf52df3 -> 9e962b9)
This is an automated email from the git hooks/post-receive script. New change to branch feature/ecran_obs_individuelles in repository tutti. See http://git.codelutin.com/tutti.git from cf52df3 - copie des donnees d'observation individuelles dans le tableau des mensurations en fonction du mode - suppression ou ecrasement des données au changement de mode de copie refs #8019 new 7213e28 - suppression des lignes d'observations individuelles sur - correction de l'affichage de l'histogramme des mensurations refs #8019 new 52b5e76 remplissage des lignes vides lors de l'ajout en rafale (refs #8019) new 8f3eab7 correction de l'incrément des lignes quand on quitte et revient sur l'ecran des mensurations (refs #8019) new 7ec84d0 suppression des lignes d'observation individuelles générées en rafale quand on supprime le log correspondant (refs #8019) new 9e962b9 - validation des lignes d'observations - correction de l'ouverture de l'editeur de caracteristiques refs #8019 The 5 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 9e962b9ab0137fadd99939ce525444a2ede9b871 Author: Kevin Morin <morin@codelutin.com> Date: Tue Mar 1 18:57:28 2016 +0100 - validation des lignes d'observations - correction de l'ouverture de l'editeur de caracteristiques refs #8019 commit 7ec84d07dfeb707e5bf9ce8d5bdde914f08b981e Author: Kevin Morin <morin@codelutin.com> Date: Tue Mar 1 15:05:06 2016 +0100 suppression des lignes d'observation individuelles générées en rafale quand on supprime le log correspondant (refs #8019) commit 8f3eab7b03b9fa919626ad4fd36e3e1f8b31cccf Author: Kevin Morin <morin@codelutin.com> Date: Tue Mar 1 14:57:43 2016 +0100 correction de l'incrément des lignes quand on quitte et revient sur l'ecran des mensurations (refs #8019) commit 52b5e76bbc5d3ba49c46ae81859fd20e1548ff5f Author: Kevin Morin <morin@codelutin.com> Date: Tue Mar 1 14:45:52 2016 +0100 remplissage des lignes vides lors de l'ajout en rafale (refs #8019) commit 7213e28bef08c393e787d7f7a0a4eef7906e19cb Author: Kevin Morin <morin@codelutin.com> Date: Tue Mar 1 12:01:02 2016 +0100 - suppression des lignes d'observations individuelles sur - correction de l'affichage de l'histogramme des mensurations refs #8019 Summary of changes: .../content/operation/catches/EditCatchesUI.jaxx | 6 + .../operation/catches/EditCatchesUIHandler.java | 54 +++++- .../accidental/AccidentalBatchUIHandler.java | 5 +- .../IndividualObservationBatchTableModel.java | 26 ++- .../frequency/SpeciesFrequencyLogRowModel.java | 11 ++ .../frequency/SpeciesFrequencyUIHandler.java | 188 ++++++++++++++------- .../species/frequency/SpeciesFrequencyUIModel.java | 121 +++++++++++-- .../actions/ApplySpeciesFrequencyRafaleAction.java | 19 ++- .../DeleteSpeciesFrequencyLogRowAction.java | 7 + .../frequency/actions/RemoveObservationAction.java | 1 + .../actions/ResetSpeciesFrequencyAction.java | 4 +- .../CaracteristicMapCellComponent.java | 2 +- .../CaracteristicMapColumnUIHandler.java | 4 +- .../caracteristics/CaracteristicMapEditorUI.jaxx | 2 +- 14 files changed, 354 insertions(+), 96 deletions(-) -- 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/ecran_obs_individuelles in repository tutti. See http://git.codelutin.com/tutti.git commit 7213e28bef08c393e787d7f7a0a4eef7906e19cb Author: Kevin Morin <morin@codelutin.com> Date: Tue Mar 1 12:01:02 2016 +0100 - suppression des lignes d'observations individuelles sur - correction de l'affichage de l'histogramme des mensurations refs #8019 --- .../catches/species/frequency/SpeciesFrequencyUIHandler.java | 3 --- .../species/frequency/actions/ResetSpeciesFrequencyAction.java | 4 ++-- 2 files changed, 2 insertions(+), 5 deletions(-) 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 7b93051..e7989b2 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 @@ -1006,9 +1006,6 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci chartPanel.setMouseZoomable(false); chartPanel.setPopupMenu(null); - JPanel histogramPanel = ui.getHistogramPanel(); - histogramPanel.add(chartPanel, BorderLayout.CENTER); - averageWeightsHistogramPopup.getContentPane().add(chartPanel); averageWeightsHistogramPopup.pack(); } 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 8b72765..4a3f8a5 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 @@ -25,7 +25,6 @@ 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.SpeciesFrequencyRowModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUI; import jaxx.runtime.SwingUtil; @@ -61,7 +60,8 @@ public class ResetSpeciesFrequencyAction extends AbstractAction { public void actionPerformed(ActionEvent e) { // remove all frequencies - ui.getModel().setRows(Lists.<SpeciesFrequencyRowModel>newArrayList()); + ui.getModel().setRows(Lists.newArrayList()); + ui.getModel().setIndividualObservationRows(Lists.newArrayList()); } } \ No newline at end of file -- 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/ecran_obs_individuelles in repository tutti. See http://git.codelutin.com/tutti.git commit 52b5e76bbc5d3ba49c46ae81859fd20e1548ff5f Author: Kevin Morin <morin@codelutin.com> Date: Tue Mar 1 14:45:52 2016 +0100 remplissage des lignes vides lors de l'ajout en rafale (refs #8019) --- .../IndividualObservationBatchTableModel.java | 24 ++++++++++++++++++++++ .../actions/ApplySpeciesFrequencyRafaleAction.java | 10 ++++++--- 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchTableModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchTableModel.java index d71cdb7..22274f9 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchTableModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchTableModel.java @@ -115,4 +115,28 @@ public class IndividualObservationBatchTableModel extends AbstractApplicationTab return result; } + + public IndividualObservationBatchRowModel getEmptyRow() { + + IndividualObservationBatchRowModel result = null; + + for (int i = rows.size() - 1 ; i >= 0 ; i--) { + IndividualObservationBatchRowModel row = rows.get(i); + // if the row has no data set, then it could be the empty row we are looking for + if (row.getWeight() == null + && row.getSize() == null + && (row.getCaracteristics() == null || row.getCaracteristics().isEmpty()) + && row.getComment() == null + && (row.getAttachment() == null || row.getAttachment().isEmpty())) { + + result = row; + + } else { // if the row has data set, then the empty row we are looking for was the previous row + break; + } + + } + + return result; + } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ApplySpeciesFrequencyRafaleAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ApplySpeciesFrequencyRafaleAction.java index 6fb44fa..ea3d45d 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ApplySpeciesFrequencyRafaleAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ApplySpeciesFrequencyRafaleAction.java @@ -135,9 +135,13 @@ public class ApplySpeciesFrequencyRafaleAction { IndividualObservationBatchTableModel obsTableModel = (IndividualObservationBatchTableModel) ui.getObsTable().getModel(); - IndividualObservationBatchRowModel newObsRow = obsTableModel.createNewRow(); - newObsRow.setSize(step); - obsTableModel.addNewRow(newObsRow); + IndividualObservationBatchRowModel obsRow = obsTableModel.getEmptyRow(); + if (obsRow == null) { + obsRow = obsTableModel.createNewRow(); + obsTableModel.addNewRow(obsRow); + } + obsRow.setSize(step); + obsTableModel.updateRow(obsRow); } } -- 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/ecran_obs_individuelles in repository tutti. See http://git.codelutin.com/tutti.git commit 8f3eab7b03b9fa919626ad4fd36e3e1f8b31cccf Author: Kevin Morin <morin@codelutin.com> Date: Tue Mar 1 14:57:43 2016 +0100 correction de l'incrément des lignes quand on quitte et revient sur l'ecran des mensurations (refs #8019) --- .../IndividualObservationBatchTableModel.java | 2 +- .../catches/species/frequency/SpeciesFrequencyUIHandler.java | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchTableModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchTableModel.java index 22274f9..2235ae5 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchTableModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchTableModel.java @@ -82,7 +82,7 @@ public class IndividualObservationBatchTableModel extends AbstractApplicationTab public IndividualObservationBatchTableModel(WeightUnit weightUnit, TableColumnModelExt columnModel) { - super(columnModel, true, true); + super(columnModel, true, false); this.weightUnit = weightUnit; setNoneEditableCols(RANK); 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 e7989b2..bb4b4b5 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 @@ -605,14 +605,14 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci model.setMaxStep(null); model.setRtp(null); - ((IndividualObservationBatchTableModel) ui.getObsTable().getModel()).setSpecies(speciesBatch.getSpecies()); + IndividualObservationBatchTableModel obsTableModel = (IndividualObservationBatchTableModel) ui.getObsTable().getModel(); + obsTableModel.setSpecies(speciesBatch.getSpecies()); ArrayList<IndividualObservationBatchRowModel> individualObservationRows = new ArrayList<>(); - IndividualObservationBatchRowModel emptyRow = - ((IndividualObservationBatchTableModel) ui.getObsTable().getModel()).createNewRow(); - emptyRow.addPropertyChangeListener(obsChangedListener); - individualObservationRows.add(emptyRow); model.setIndividualObservationRows(individualObservationRows); + IndividualObservationBatchRowModel emptyRow = obsTableModel.createNewRow(); + emptyRow.addPropertyChangeListener(obsChangedListener); + obsTableModel.addNewRow(emptyRow); frequencyEditor = editor; -- 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/ecran_obs_individuelles in repository tutti. See http://git.codelutin.com/tutti.git commit 7ec84d07dfeb707e5bf9ce8d5bdde914f08b981e Author: Kevin Morin <morin@codelutin.com> Date: Tue Mar 1 15:05:06 2016 +0100 suppression des lignes d'observation individuelles générées en rafale quand on supprime le log correspondant (refs #8019) --- .../species/frequency/SpeciesFrequencyLogRowModel.java | 11 +++++++++++ .../frequency/actions/ApplySpeciesFrequencyRafaleAction.java | 9 +++++---- .../frequency/actions/DeleteSpeciesFrequencyLogRowAction.java | 7 +++++++ 3 files changed, 23 insertions(+), 4 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyLogRowModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyLogRowModel.java index 924a934..109e6e7 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyLogRowModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyLogRowModel.java @@ -24,6 +24,7 @@ package fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency; * #L% */ +import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchRowModel; import org.apache.commons.lang3.time.DateFormatUtils; import org.jdesktop.beans.AbstractSerializableBean; @@ -43,6 +44,8 @@ public class SpeciesFrequencyLogRowModel extends AbstractSerializableBean { protected Date date; + protected IndividualObservationBatchRowModel obsRow; + public Float getLengthStep() { return lengthStep; } @@ -59,6 +62,14 @@ public class SpeciesFrequencyLogRowModel extends AbstractSerializableBean { this.date = date; } + public IndividualObservationBatchRowModel getObsRow() { + return obsRow; + } + + public void setObsRow(IndividualObservationBatchRowModel obsRow) { + this.obsRow = obsRow; + } + public String getLabel() { String formattedTime = DateFormatUtils.format(date, "HH:mm:ss"); return formattedTime + " : " + lengthStep.toString(); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ApplySpeciesFrequencyRafaleAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ApplySpeciesFrequencyRafaleAction.java index ea3d45d..03d2d39 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ApplySpeciesFrequencyRafaleAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/ApplySpeciesFrequencyRafaleAction.java @@ -126,10 +126,10 @@ public class ApplySpeciesFrequencyRafaleAction { JXTable logsTable = ui.getLogsTable(); SpeciesFrequencyLogsTableModel logsTableModel = (SpeciesFrequencyLogsTableModel) logsTable.getModel(); - SpeciesFrequencyLogRowModel newRow = logsTableModel.createNewRow(); - newRow.setDate(new Date()); - newRow.setLengthStep(step); - logsTableModel.addNewRow(0, newRow); + SpeciesFrequencyLogRowModel newLogRow = logsTableModel.createNewRow(); + newLogRow.setDate(new Date()); + newLogRow.setLengthStep(step); + logsTableModel.addNewRow(0, newLogRow); if (model.isAddIndividualObservationOnRafale()) { IndividualObservationBatchTableModel obsTableModel = @@ -142,6 +142,7 @@ public class ApplySpeciesFrequencyRafaleAction { } obsRow.setSize(step); obsTableModel.updateRow(obsRow); + newLogRow.setObsRow(obsRow); } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/DeleteSpeciesFrequencyLogRowAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/DeleteSpeciesFrequencyLogRowAction.java index ebd0bf7..1aee35c 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/DeleteSpeciesFrequencyLogRowAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/DeleteSpeciesFrequencyLogRowAction.java @@ -24,6 +24,7 @@ package fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.ac * #L% */ +import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchTableModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyLogCellComponent; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyLogRowModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyLogsTableModel; @@ -90,6 +91,12 @@ public class DeleteSpeciesFrequencyLogRowAction extends AbstractAction { int index = logsTableModel.getRowIndex(row); logsTableModel.removeRow(index); + if (row.getObsRow() != null) { + IndividualObservationBatchTableModel obsTableModel = + (IndividualObservationBatchTableModel) ui.getObsTable().getModel(); + obsTableModel.removeRow(obsTableModel.getRowIndex(row.getObsRow())); + } + } } -- 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/ecran_obs_individuelles in repository tutti. See http://git.codelutin.com/tutti.git commit 9e962b9ab0137fadd99939ce525444a2ede9b871 Author: Kevin Morin <morin@codelutin.com> Date: Tue Mar 1 18:57:28 2016 +0100 - validation des lignes d'observations - correction de l'ouverture de l'editeur de caracteristiques refs #8019 --- .../content/operation/catches/EditCatchesUI.jaxx | 6 + .../operation/catches/EditCatchesUIHandler.java | 54 +++++- .../accidental/AccidentalBatchUIHandler.java | 5 +- .../frequency/SpeciesFrequencyUIHandler.java | 185 ++++++++++++++------- .../species/frequency/SpeciesFrequencyUIModel.java | 121 ++++++++++++-- .../frequency/actions/RemoveObservationAction.java | 1 + .../CaracteristicMapCellComponent.java | 2 +- .../CaracteristicMapColumnUIHandler.java | 4 +- .../caracteristics/CaracteristicMapEditorUI.jaxx | 2 +- 9 files changed, 297 insertions(+), 83 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx index 6a8ff08..0bd414d 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx @@ -142,6 +142,12 @@ public EditCatchesUI(FishingOperationsUI parentUI) { <SpeciesFrequencyUI id='speciesTabFrequencyEditor' constructorParams='speciesTabContent'/> </JXTitledPanel> + <JXTitledPanel id='speciesIndividualObservationCaracteristicMapEditorReminderLabel' + constraints='EditCatchesUIHandler.EDIT_CARACTERISTICS_CARD'> + <CaracteristicMapEditorUI + id='speciesIndividualObservationCaracteristicMapEditor' + constructorParams='speciesTabContent'/> + </JXTitledPanel> </JPanel> </tab> <tab id='benthosTab'> diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java index 5e54991..deb199e 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java @@ -45,7 +45,10 @@ import org.jdesktop.swingx.JXTitledPanel; import org.nuiton.jaxx.application.swing.tab.TabContentModel; import org.nuiton.jaxx.application.swing.tab.TabHandler; -import javax.swing.*; +import javax.swing.JComponent; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JTabbedPane; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.table.TableColumn; @@ -459,10 +462,10 @@ public class EditCatchesUIHandler extends AbstractTuttiTabContainerUIHandler<Edi SpeciesBatchRowModel editRow = editor.getEditRow(); String frequenciesTitle = buildReminderLabelTitle(editRow.getSpecies(), - editRow, - ui.getSpeciesTabFishingOperationReminderLabel().getTitle(), - "", - false); + editRow, + ui.getSpeciesTabFishingOperationReminderLabel().getTitle(), + "", + false); frequencyEditor.getHandler().editBatch(editor, frequenciesTitle); // open frequency editor @@ -539,6 +542,10 @@ public class EditCatchesUIHandler extends AbstractTuttiTabContainerUIHandler<Edi } else if (EDIT_FREQUENCY_CARD.equals(card)) { tuttiUi = ui.getSpeciesTabFrequencyEditor(); + + } else if (EDIT_CARACTERISTICS_CARD.equals(card)) { + titlePanel = ui.getSpeciesIndividualObservationCaracteristicMapEditorReminderLabel(); + title = n("tutti.editCaracteristics.title"); } if (tuttiUi != null) { @@ -551,6 +558,43 @@ public class EditCatchesUIHandler extends AbstractTuttiTabContainerUIHandler<Edi } } +// public void setIndividualObservationSelectedCard(String card, Species species) { +// JPanel panel = ui.getIndividualObservationTabPanel(); +// CardLayout2Ext layout = (CardLayout2Ext) panel.getLayout(); +// if (!card.equals(layout.getSelected())) { +// layout.setSelected(card); +// +// JPanel actionPanel = getUI().getCreateFishingOperationActions(); +// if (MAIN_CARD.equals(card)) { +// registerValidators(); +// actionPanel.setVisible(true); +// +// } else { +// actionPanel.setVisible(false); +// TuttiUI tuttiUi = null; +// JXTitledPanel titlePanel = null; +// String title = ""; +// +// if (CREATE_BATCH_CARD.equals(card)) { +// tuttiUi = ui.getIndividualObservationTabCreateBatch(); +// titlePanel = ui.getIndividualObservationTabCreateBatchReminderLabel(); +// title = n("tutti.createIndividualObservationBatch.title"); +// +// } else if (EDIT_CARACTERISTICS_CARD.equals(card)) { +// titlePanel = ui.getIndividualObservationCaracteristicMapEditorReminderLabel(); +// title = n("tutti.editCaracteristics.title"); +// } +// +// if (tuttiUi != null) { +// registerValidators(tuttiUi.getHandler().getValidator()); +// } +// if (titlePanel != null) { +// titlePanel.setTitle(ui.getIndividualObservationTabFishingOperationReminderLabel().getTitle() + " - " + t(title, decorate(species))); +// } +// } +// } +// } + public void editBenthosFrequencies(int rowIndex) { JXTable benthosTable = ui.getBenthosTabContent().getTable(); 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 0936688..b86ec72 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 @@ -45,6 +45,7 @@ import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentCellEditor; import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentCellRenderer; import fr.ifremer.tutti.ui.swing.util.caracteristics.CaracteristicMapCellComponent; +import fr.ifremer.tutti.ui.swing.util.caracteristics.CaracteristicMapColumnRowModel; import fr.ifremer.tutti.ui.swing.util.caracteristics.CaracteristicMapColumnUIHandler; import fr.ifremer.tutti.ui.swing.util.caracteristics.CaracteristicMapEditorUI; import fr.ifremer.tutti.ui.swing.util.comment.CommentCellEditor; @@ -369,9 +370,9 @@ public class AccidentalBatchUIHandler } @Override - public void showCaracteristicMapEditor(Species species) { + public void showCaracteristicMapEditor(CaracteristicMapColumnRowModel editRow) { EditCatchesUI parent = getParentContainer(EditCatchesUI.class); - parent.getHandler().setAccidentalSelectedCard(EditCatchesUIHandler.EDIT_CARACTERISTICS_CARD, species); + parent.getHandler().setAccidentalSelectedCard(EditCatchesUIHandler.EDIT_CARACTERISTICS_CARD, editRow.getSpecies()); } @Override 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 bb4b4b5..defb56e 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 @@ -59,6 +59,9 @@ import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentCellEditor; import fr.ifremer.tutti.ui.swing.util.attachment.AttachmentCellRenderer; import fr.ifremer.tutti.ui.swing.util.caracteristics.CaracteristicMapCellComponent; +import fr.ifremer.tutti.ui.swing.util.caracteristics.CaracteristicMapColumnRowModel; +import fr.ifremer.tutti.ui.swing.util.caracteristics.CaracteristicMapColumnUIHandler; +import fr.ifremer.tutti.ui.swing.util.caracteristics.CaracteristicMapEditorUI; import fr.ifremer.tutti.ui.swing.util.comment.CommentCellEditor; import fr.ifremer.tutti.ui.swing.util.comment.CommentCellRenderer; import fr.ifremer.tutti.ui.swing.util.computable.ComputableDataTableCell; @@ -102,6 +105,7 @@ import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.beans.PropertyVetoException; import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -115,7 +119,8 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 0.2 */ -public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<SpeciesFrequencyRowModel, SpeciesFrequencyUIModel, SpeciesFrequencyUI> { +public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<SpeciesFrequencyRowModel, SpeciesFrequencyUIModel, SpeciesFrequencyUI> + implements CaracteristicMapColumnUIHandler { /** Logger. */ private static final Log log = LogFactory.getLog(SpeciesFrequencyUIHandler.class); @@ -218,6 +223,8 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci updateFrequencyRowsWeights(row.getSize(), weightToAdd); } } + + getModel().recomputeIndividualObservationRowValidState(row); } }; @@ -247,6 +254,33 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci } @Override + public CaracteristicMapEditorUI getCaracteristicMapEditor() { + EditCatchesUI parent = getParentContainer(EditCatchesUI.class); + return parent.getSpeciesIndividualObservationCaracteristicMapEditor(); + } + + @Override + public void showCaracteristicMapEditor(CaracteristicMapColumnRowModel editRow) { + EditCatchesUI parent = getParentContainer(EditCatchesUI.class); + + parent.getHandler().setSpeciesSelectedCard(EditCatchesUIHandler.EDIT_CARACTERISTICS_CARD); + + //FIXME title + IndividualObservationBatchRowModel row = (IndividualObservationBatchRowModel) editRow; + WeightUnit individualObservationWeightUnit = getConfig().getIndividualObservationWeightUnit(); + String title = parent.getSpeciesTabFrequencyEditorReminderLabel().getTitle() + " - " + + row.getSize() + " - " + + individualObservationWeightUnit.renderWeight(row.getWeight()); + parent.getSpeciesIndividualObservationCaracteristicMapEditorReminderLabel().setTitle(title); + } + + @Override + public void hideCaracteristicMapEditor() { + EditCatchesUI parent = getParentContainer(EditCatchesUI.class); + parent.getHandler().setSpeciesSelectedCard(EditCatchesUIHandler.EDIT_FREQUENCY_CARD); + } + + @Override protected void onModelRowsChanged(List<SpeciesFrequencyRowModel> rows) { SpeciesFrequencyUIModel model = getModel(); @@ -391,7 +425,7 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci } SpeciesFrequencyUIHandler.this.ui.getValidator().doValidate(); - ((IndividualObservationBatchTableModel) ui.getObsTable().getModel()).setLengthstepCaracteristic(newValue); + getObsTableModel().setLengthstepCaracteristic(newValue); }); // when lengthStepCaracteristicUnit changed, let's updates the label of some fields @@ -439,23 +473,38 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci }); model.addPropertyChangeListener(SpeciesFrequencyUIModel.PROPERTY_INDIVIDUAL_OBSERVATION_ROWS, evt -> { - IndividualObservationBatchTableModel obsTableModel = - (IndividualObservationBatchTableModel) getUI().getObsTable().getModel(); - obsTableModel.setRows((List<IndividualObservationBatchRowModel>) evt.getNewValue()); + getObsTableModel().setRows((List<IndividualObservationBatchRowModel>) evt.getNewValue()); }); - model.addPropertyChangeListener(SpeciesFrequencyUIModel.PROPERTY_COPY_INDIVIDUAL_OBSERVATION_MODE, evt -> { + model.addPropertyChangeListener(SpeciesFrequencyUIModel.PROPERTY_INDIVIDUAL_OBSERVATION_ROWS_IN_ERROR, evt -> { + Set<IndividualObservationBatchRowModel> obsRowsInError = + (Set<IndividualObservationBatchRowModel>) evt.getNewValue(); + + if (obsRowsInError.isEmpty()) { + + reloadRowsFromIndividualObservations(); + + } else { + + model.getRows().clear(); + model.getRowsInError().clear(); + model.reloadRows(); + } + + getTableModel().fireTableDataChanged(); + }); + + model.addVetoableChangeListener(SpeciesFrequencyUIModel.PROPERTY_COPY_INDIVIDUAL_OBSERVATION_MODE, evt -> { - CopyIndividualObservationMode newCopyMode = (CopyIndividualObservationMode) evt.getNewValue(); CopyIndividualObservationMode oldCopyMode = (CopyIndividualObservationMode) evt.getOldValue(); if (oldCopyMode == CopyIndividualObservationMode.NOTHING) { long rowsWithData = model.getRows().stream() - .filter(row -> row.getLengthStep() != null - || row.getNumber() != null - || row.getWeight() != null) - .count(); + .filter(row -> row.getLengthStep() != null + || row.getNumber() != null + || row.getWeight() != null) + .count(); if (rowsWithData > 0) { @@ -471,52 +520,30 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci JOptionPane.QUESTION_MESSAGE); if (i == JOptionPane.CANCEL_OPTION) { - return; + ui.getCopyNothingButton().setSelected(true); + throw new PropertyVetoException("The user does not want to erase his data.", evt); } } } + }); - model.getRows().clear(); - model.reloadRows(); - - if (newCopyMode != null) { - if (newCopyMode != CopyIndividualObservationMode.NOTHING) { - - Caracteristic lengthStepCaracteristic = model.getLengthStepCaracteristic(); - for (IndividualObservationBatchRowModel obsRow : model.getIndividualObservationRows()) { + model.addPropertyChangeListener(SpeciesFrequencyUIModel.PROPERTY_COPY_INDIVIDUAL_OBSERVATION_MODE, evt -> { - Float size = obsRow.getSize(); - if (size != null) { - size = model.getLengthStep(size); - if (log.isInfoEnabled()) { - log.info("size : " + size); - } - SpeciesFrequencyRowModel row = model.getRowCache().get(size); - if (row == null) { - row = getTableModel().createNewRow(); - row.setLengthStep(size); - row.setLengthStepCaracteristic(lengthStepCaracteristic); - model.getRows().add(row); - model.getRowCache().put(size, row); - } - row.incNumber(); - if (newCopyMode == CopyIndividualObservationMode.ALL && obsRow.getWeight() != null) { - row.addToWeight(obsRow.getWeight()); - } - } - } + CopyIndividualObservationMode newCopyMode = (CopyIndividualObservationMode) evt.getNewValue(); - Collections.sort(model.getRows()); + model.getRows().clear(); + model.getRowsInError().clear(); + model.reloadRows(); - } else { - getTableModel().addNewRow(); - } + model.recomputeIndividualObservationRowsValidateState(); - model.reloadRows(); + if (newCopyMode != null && model.getIndividualObservationRowsInError().isEmpty()) { + reloadRowsFromIndividualObservations(); } getTableModel().fireTableDataChanged(); + getObsTableModel().fireTableDataChanged(); }); @@ -543,6 +570,10 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci } + protected IndividualObservationBatchTableModel getObsTableModel() { + return (IndividualObservationBatchTableModel) ui.getObsTable().getModel(); + } + public void showAverageWeightsHistogram() { averageWeightsHistogramPopup.setVisible(true); } @@ -605,15 +636,6 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci model.setMaxStep(null); model.setRtp(null); - IndividualObservationBatchTableModel obsTableModel = (IndividualObservationBatchTableModel) ui.getObsTable().getModel(); - obsTableModel.setSpecies(speciesBatch.getSpecies()); - - ArrayList<IndividualObservationBatchRowModel> individualObservationRows = new ArrayList<>(); - model.setIndividualObservationRows(individualObservationRows); - IndividualObservationBatchRowModel emptyRow = obsTableModel.createNewRow(); - emptyRow.addPropertyChangeListener(obsChangedListener); - obsTableModel.addNewRow(emptyRow); - frequencyEditor = editor; Caracteristic lengthStepCaracteristic = null; @@ -779,6 +801,14 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci model.setLengthStepCaracteristic(lengthStepCaracteristic); model.setRows(rows); + IndividualObservationBatchTableModel obsTableModel = getObsTableModel(); + obsTableModel.setSpecies(speciesBatch.getSpecies()); + + ArrayList<IndividualObservationBatchRowModel> individualObservationRows = new ArrayList<>(); + model.setIndividualObservationRows(individualObservationRows); + obsTableModel.addNewRow(); + model.recomputeIndividualObservationRowsValidateState(); + // keep batch (will be used to push back editing entry) model.setBatch(speciesBatch); @@ -1074,11 +1104,13 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci obsTable); } + WeightUnit individualObservationWeightUnit = getConfig().getIndividualObservationWeightUnit(); + { // Weight column addFloatColumnToModel(columnModel, IndividualObservationBatchTableModel.WEIGHT, - weightUnit, + individualObservationWeightUnit, obsTable); } @@ -1152,7 +1184,7 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci // create obsTable model IndividualObservationBatchTableModel tableModel = - new IndividualObservationBatchTableModel(weightUnit, + new IndividualObservationBatchTableModel(individualObservationWeightUnit, columnModel); obsTable.setModel(tableModel); @@ -1182,6 +1214,8 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci if (getModel().mustCopyIndividualObservationSize()) { updateFrequencyRowsNumbers(null, newRow.getSize()); } + + getModel().recomputeIndividualObservationRowValidState(newRow); } } }); @@ -1317,6 +1351,45 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci return row; } + protected void reloadRowsFromIndividualObservations() { + SpeciesFrequencyUIModel model = getModel(); + CopyIndividualObservationMode copyMode = model.getCopyIndividualObservationMode(); + + if (copyMode != CopyIndividualObservationMode.NOTHING) { + + Caracteristic lengthStepCaracteristic = model.getLengthStepCaracteristic(); + for (IndividualObservationBatchRowModel obsRow : model.getIndividualObservationRows()) { + + Float size = obsRow.getSize(); + if (size != null) { + size = model.getLengthStep(size); + if (log.isInfoEnabled()) { + log.info("size : " + size); + } + SpeciesFrequencyRowModel row = model.getRowCache().get(size); + if (row == null) { + row = getTableModel().createNewRow(); + row.setLengthStep(size); + row.setLengthStepCaracteristic(lengthStepCaracteristic); + model.getRows().add(row); + model.getRowCache().put(size, row); + } + row.incNumber(); + if (copyMode == CopyIndividualObservationMode.ALL && obsRow.getWeight() != null) { + row.addToWeight(obsRow.getWeight()); + } + } + } + + Collections.sort(model.getRows()); + + } else if (getTableModel().getRowCount() == 0) { + getTableModel().addNewRow(); + } + + model.reloadRows(); + } + @Override public <E> void initBeanFilterableComboBox(BeanFilterableComboBox<E> comboBox, List<E> data, E selectedData) { super.initBeanFilterableComboBox(comboBox, data, selectedData); 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 ef543ba..62b2e2f 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 @@ -41,6 +41,8 @@ import org.apache.commons.logging.LogFactory; import org.jfree.data.xy.XYSeries; import org.jfree.data.xy.XYSeriesCollection; +import java.beans.PropertyVetoException; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -108,6 +110,8 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa public static final String PROPERTY_INDIVIDUAL_OBSERVATION_ROWS = "individualObservationRows"; + public static final String PROPERTY_INDIVIDUAL_OBSERVATION_ROWS_IN_ERROR = "individualObservationRowsInError"; + /** * Fill mode. * @@ -272,6 +276,13 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa */ protected List<IndividualObservationBatchRowModel> individualObservationRows; + /** + * Individual observations in error + * + * @since 4.5 + */ + protected Set<IndividualObservationBatchRowModel> individualObservationRowsInError; + public SpeciesFrequencyUIModel(WeightUnit weightUnit, SampleCategoryModel sampleCategoryModel, List<Caracteristic> defaultCaracteristic) { @@ -296,6 +307,8 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa this.defaultCaracteristic = defaultCaracteristic == null ? Lists.<Caracteristic>newArrayList() : Lists.newArrayList(defaultCaracteristic); + + setIndividualObservationRowsInError(new HashSet<>()); } public void reloadRows() { @@ -597,17 +610,28 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa } public void setCopyIndividualObservationMode(CopyIndividualObservationMode copyIndividualObservationMode) { - Object oldValue = getCopyIndividualObservationMode(); + CopyIndividualObservationMode oldValue = getCopyIndividualObservationMode(); this.copyIndividualObservationMode = copyIndividualObservationMode; - firePropertyChange(PROPERTY_COPY_INDIVIDUAL_OBSERVATION_MODE, oldValue, copyIndividualObservationMode); + + try { + fireVetoableChange(PROPERTY_COPY_INDIVIDUAL_OBSERVATION_MODE, oldValue, copyIndividualObservationMode); + firePropertyChange(PROPERTY_COPY_INDIVIDUAL_OBSERVATION_MODE, oldValue, copyIndividualObservationMode); + + } catch (PropertyVetoException e) { + if (log.isErrorEnabled()) { + log.error("error in setting copyIndividualObservationMode", e); + } + this.copyIndividualObservationMode = oldValue; + } } public boolean mustCopyIndividualObservationSize() { - return isCopyIndividualObservationAll() || isCopyIndividualObservationSize(); + return getIndividualObservationRowsInError().isEmpty() + && (isCopyIndividualObservationAll() || isCopyIndividualObservationSize()); } public boolean mustCopyIndividualObservationWeight() { - return isCopyIndividualObservationAll(); + return getIndividualObservationRowsInError().isEmpty() && isCopyIndividualObservationAll(); } public boolean isCopyIndividualObservationAll() { @@ -781,22 +805,35 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa Object oldValue = getIndividualObservationRows(); this.individualObservationRows = individualObservationRows; firePropertyChange(PROPERTY_INDIVIDUAL_OBSERVATION_ROWS, oldValue, individualObservationRows); - } - protected final void recomputeRowValidState(SpeciesFrequencyRowModel row) { + individualObservationRowsInError.clear(); + for (IndividualObservationBatchRowModel row : individualObservationRows) { + if (!row.isValid()) { + individualObservationRowsInError.add(row); + } + } + setIndividualObservationRowsInError(individualObservationRowsInError); + } - // recompute row valid state - boolean valid = isRowValid(row); + public Set<IndividualObservationBatchRowModel> getIndividualObservationRowsInError() { + return individualObservationRowsInError; + } - // apply it to row - row.setValid(valid); + public void setIndividualObservationRowsInError(Set<IndividualObservationBatchRowModel> individualObservationRowsInError) { + this.individualObservationRowsInError = individualObservationRowsInError; + firePropertyChange(PROPERTY_INDIVIDUAL_OBSERVATION_ROWS_IN_ERROR, null, individualObservationRowsInError); + } - if (valid) { - removeRowInError(row); - } else { - addRowInError(row); - } + public void addIndividualObservationRowInError(IndividualObservationBatchRowModel row) { + Object oldValue = new HashSet<>(individualObservationRowsInError); + individualObservationRowsInError.add(row); + firePropertyChange(PROPERTY_INDIVIDUAL_OBSERVATION_ROWS_IN_ERROR, oldValue, individualObservationRowsInError); + } + public void removeIndividualObservationRowInError(IndividualObservationBatchRowModel row) { + Object oldValue = new HashSet<>(individualObservationRowsInError); + individualObservationRowsInError.remove(row); + firePropertyChange(PROPERTY_INDIVIDUAL_OBSERVATION_ROWS_IN_ERROR, oldValue, individualObservationRowsInError); } public void recomputeRowsValidateState() { @@ -811,6 +848,27 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa } + public void recomputeIndividualObservationRowsValidateState() { + + if (log.isInfoEnabled()) { + log.info("Revalidate all individual observation rows"); + } + + for (IndividualObservationBatchRowModel r : individualObservationRows) { + recomputeIndividualObservationRowValidState(r); + } + + } + + public boolean isIndividualObservationRowValid(IndividualObservationBatchRowModel row) { + return copyIndividualObservationMode == CopyIndividualObservationMode.NOTHING + || copyIndividualObservationMode == CopyIndividualObservationMode.SIZE + && row.getSize() != null + || copyIndividualObservationMode == CopyIndividualObservationMode.ALL + && row.getSize() != null + && row.getWeight() != null; + } + public void setDataSetIntervalWidth(float step) { frequenciesDataset.setIntervalWidth(step); averageWeightsDataset.setIntervalWidth(step); @@ -819,4 +877,37 @@ public class SpeciesFrequencyUIModel extends AbstractTuttiTableUIModel<SpeciesBa public List<Caracteristic> getDefaultCaracteristic() { return defaultCaracteristic; } + + protected final void recomputeRowValidState(SpeciesFrequencyRowModel row) { + + // recompute row valid state + boolean valid = isRowValid(row); + + // apply it to row + row.setValid(valid); + + if (valid) { + removeRowInError(row); + } else { + addRowInError(row); + } + + } + + protected final void recomputeIndividualObservationRowValidState(IndividualObservationBatchRowModel row) { + + // recompute row valid state + boolean valid = isIndividualObservationRowValid(row); + + // apply it to row + row.setValid(valid); + + if (valid) { + removeIndividualObservationRowInError(row); + } else { + addIndividualObservationRowInError(row); + } + + } + } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/RemoveObservationAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/RemoveObservationAction.java index 61bb6fc..ac7e997 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/RemoveObservationAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/actions/RemoveObservationAction.java @@ -59,6 +59,7 @@ public class RemoveObservationAction extends SimpleActionSupport<SpeciesFrequenc if (model.mustCopyIndividualObservationSize()) { handler.updateFrequencyRowsNumbers(row.getSize(), null); } + model.removeIndividualObservationRowInError(row); }); int minSelection = obsTable.getSelectionModel().getMinSelectionIndex(); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapCellComponent.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapCellComponent.java index 105a56a..026c17e 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapCellComponent.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapCellComponent.java @@ -209,7 +209,7 @@ public class CaracteristicMapCellComponent extends DefaultTableCellRenderer { // remove all default caracteristics (caracteristicsToSkip) caracteristicMapEditor.getModel().getAvailableCaracteristics().removeAll(caracteristicsToSkip); caracteristicMapEditor.getHandler().editBatch(editRow, this, caracteristicsUsed); - handler.showCaracteristicMapEditor(editRow.getSpecies()); + handler.showCaracteristicMapEditor(editRow); } public void validateEdition(CaracteristicMapEditorUIModel caracteristicMapEditorModel) { diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapColumnUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapColumnUIHandler.java index 87a72eb..043e79f 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapColumnUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapColumnUIHandler.java @@ -22,8 +22,6 @@ package fr.ifremer.tutti.ui.swing.util.caracteristics; * #L% */ -import fr.ifremer.tutti.persistence.entities.referential.Species; - /** * @author Kevin Morin - kmorin@codelutin.com * @since 2.0 @@ -32,7 +30,7 @@ public interface CaracteristicMapColumnUIHandler { CaracteristicMapEditorUI getCaracteristicMapEditor(); - void showCaracteristicMapEditor(Species species); + void showCaracteristicMapEditor(CaracteristicMapColumnRowModel editRow); void hideCaracteristicMapEditor(); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapEditorUI.jaxx b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapEditorUI.jaxx index c82c7d1..b7b6115 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapEditorUI.jaxx +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/caracteristics/CaracteristicMapEditorUI.jaxx @@ -69,7 +69,7 @@ public CaracteristicMapEditorUI(TuttiUI parentUI) { <!-- Form Actions --> <row fill='both'> <cell fill='both' columns='2'> - <JPanel layout='{new GridLayout(1, 0)}'> + <JPanel layout='{new GridLayout(1, 0)}' styleClass="buttonPanel"> <JButton id='cancelButton'/> <JButton id='saveButton'/> </JPanel> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm