branch feature/ecran_obs_individuelles updated (aa1354f -> df1825b)
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 aa1354f activtation ou desactivation de cellules de la tables des mensurations en fonction du mode de copie (refs #6926) new df1825b - suppression de l'onglet observations individuelles dans la capture - ajout des lignes dans la table d'obs individuelles dans les mensurations (refs #8019) 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 df1825ba98907a4a33527d697d5d0b3251ce9c66 Author: Kevin Morin <morin@codelutin.com> Date: Thu Feb 25 11:35:02 2016 +0100 - suppression de l'onglet observations individuelles dans la capture - ajout des lignes dans la table d'obs individuelles dans les mensurations (refs #8019) Summary of changes: .../operation/FishingOperationsUIHandler.java | 4 +- .../content/operation/catches/EditCatchesUI.jaxx | 28 - .../content/operation/catches/EditCatchesUI.jcss | 12 - .../operation/catches/EditCatchesUIHandler.java | 46 +- .../operation/catches/EditCatchesUIModel.java | 11 +- .../create/CreateBenthosBatchUIHandler.java | 2 +- .../benthos/split/SplitBenthosBatchUIHandler.java | 2 +- .../CopyIndividualObservationMode.java | 2 +- .../IndividualObservationBatchTableModel.java | 2 +- .../IndividualObservationBatchUI.jaxx | 97 --- .../IndividualObservationBatchUI.jcss | 106 --- .../IndividualObservationBatchUIHandler.java | 759 --------------------- .../IndividualObservationBatchUIModel.java | 141 ---- ...ExportMultiPostIndividualObservationAction.java | 79 --- ...ImportMultiPostIndividualObservationAction.java | 81 --- ...enCreateIndividualObservationBatchUIAction.java | 62 -- .../RemoveAllIndividualObservationBatchAction.java | 156 ----- .../RemoveIndividualObservationBatchAction.java | 118 ---- ...SpeciesForIndividualObservationBatchAction.java | 103 --- .../create/CreateIndividualObservationBatchUI.jaxx | 135 ---- .../create/CreateIndividualObservationBatchUI.jcss | 137 ---- .../CreateIndividualObservationBatchUIHandler.java | 438 ------------ .../CreateIndividualObservationBatchUIModel.java | 290 -------- ...teIndividualObservationBatchAndCloseAction.java | 64 -- ...ndividualObservationBatchAndContinueAction.java | 73 -- ...eateIndividualObservationBatchCancelAction.java | 59 -- .../create/CreateSpeciesBatchUIHandler.java | 2 +- .../frequency/SpeciesFrequencyTableModel.java | 1 + .../species/frequency/SpeciesFrequencyUI.jaxx | 1 + .../species/frequency/SpeciesFrequencyUI.jcss | 8 +- .../frequency/SpeciesFrequencyUIHandler.java | 7 +- .../species/frequency/SpeciesFrequencyUIModel.java | 1 + .../species/split/SplitSpeciesBatchUIHandler.java | 2 +- .../actions/EditFishingOperationAction.java | 3 - .../EditFishingOperationInValidationUIAction.java | 2 - .../util/table/AbstractTuttiTableUIHandler.java | 20 +- 36 files changed, 37 insertions(+), 3017 deletions(-) rename tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/{species/frequency => individualobservation}/CopyIndividualObservationMode.java (60%) delete mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.jaxx delete mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.jcss delete mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java delete mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIModel.java delete mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/actions/ExportMultiPostIndividualObservationAction.java delete mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/actions/ImportMultiPostIndividualObservationAction.java delete mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/actions/OpenCreateIndividualObservationBatchUIAction.java delete mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/actions/RemoveAllIndividualObservationBatchAction.java delete mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/actions/RemoveIndividualObservationBatchAction.java delete mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/actions/SelectSpeciesForIndividualObservationBatchAction.java delete mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUI.jaxx delete mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUI.jcss delete mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIHandler.java delete mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIModel.java delete mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/actions/CreateIndividualObservationBatchAndCloseAction.java delete mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/actions/CreateIndividualObservationBatchAndContinueAction.java delete mode 100644 tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/actions/CreateIndividualObservationBatchCancelAction.java -- 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 df1825ba98907a4a33527d697d5d0b3251ce9c66 Author: Kevin Morin <morin@codelutin.com> Date: Thu Feb 25 11:35:02 2016 +0100 - suppression de l'onglet observations individuelles dans la capture - ajout des lignes dans la table d'obs individuelles dans les mensurations (refs #8019) --- .../operation/FishingOperationsUIHandler.java | 4 +- .../content/operation/catches/EditCatchesUI.jaxx | 28 - .../content/operation/catches/EditCatchesUI.jcss | 12 - .../operation/catches/EditCatchesUIHandler.java | 46 +- .../operation/catches/EditCatchesUIModel.java | 11 +- .../create/CreateBenthosBatchUIHandler.java | 2 +- .../benthos/split/SplitBenthosBatchUIHandler.java | 2 +- .../CopyIndividualObservationMode.java | 2 +- .../IndividualObservationBatchTableModel.java | 2 +- .../IndividualObservationBatchUI.jaxx | 97 --- .../IndividualObservationBatchUI.jcss | 106 --- .../IndividualObservationBatchUIHandler.java | 759 --------------------- .../IndividualObservationBatchUIModel.java | 141 ---- ...ExportMultiPostIndividualObservationAction.java | 79 --- ...ImportMultiPostIndividualObservationAction.java | 81 --- ...enCreateIndividualObservationBatchUIAction.java | 62 -- .../RemoveAllIndividualObservationBatchAction.java | 156 ----- .../RemoveIndividualObservationBatchAction.java | 118 ---- ...SpeciesForIndividualObservationBatchAction.java | 103 --- .../create/CreateIndividualObservationBatchUI.jaxx | 135 ---- .../create/CreateIndividualObservationBatchUI.jcss | 137 ---- .../CreateIndividualObservationBatchUIHandler.java | 438 ------------ .../CreateIndividualObservationBatchUIModel.java | 290 -------- ...teIndividualObservationBatchAndCloseAction.java | 64 -- ...ndividualObservationBatchAndContinueAction.java | 73 -- ...eateIndividualObservationBatchCancelAction.java | 59 -- .../create/CreateSpeciesBatchUIHandler.java | 2 +- .../frequency/SpeciesFrequencyTableModel.java | 1 + .../species/frequency/SpeciesFrequencyUI.jaxx | 1 + .../species/frequency/SpeciesFrequencyUI.jcss | 8 +- .../frequency/SpeciesFrequencyUIHandler.java | 7 +- .../species/frequency/SpeciesFrequencyUIModel.java | 1 + .../species/split/SplitSpeciesBatchUIHandler.java | 2 +- .../actions/EditFishingOperationAction.java | 3 - .../EditFishingOperationInValidationUIAction.java | 2 - .../util/table/AbstractTuttiTableUIHandler.java | 20 +- 36 files changed, 37 insertions(+), 3017 deletions(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java index cb068e3..a575048 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java @@ -78,8 +78,7 @@ public class FishingOperationsUIHandler extends AbstractTuttiTabContainerUIHandl EditCatchesUIModel catchesUIModel = new EditCatchesUIModel( getConfig().getSpeciesWeightUnit(), getConfig().getBenthosWeightUnit(), - getConfig().getMarineLitterWeightUnit(), - getConfig().getIndividualObservationWeightUnit()); + getConfig().getMarineLitterWeightUnit()); // load existing cruise Cruise cruise = getDataContext().getCruise(); @@ -179,7 +178,6 @@ public class FishingOperationsUIHandler extends AbstractTuttiTabContainerUIHandl ecUI.getBenthosTabFishingOperationReminderLabel().setTitle(fishingOperationText); ecUI.getMarineLitterTabFishingOperationReminderLabel().setTitle(fishingOperationText); ecUI.getAccidentalTabFishingOperationReminderLabel().setTitle(fishingOperationText); - ecUI.getIndividualObservationTabFishingOperationReminderLabel().setTitle(fishingOperationText); } }); 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 56216ac..6a8ff08 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 @@ -35,8 +35,6 @@ fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.create.CreateBenthosBatchUI fr.ifremer.tutti.ui.swing.content.operation.catches.benthos.split.SplitBenthosBatchUI fr.ifremer.tutti.ui.swing.content.operation.catches.marinelitter.MarineLitterBatchUI - fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchUI - fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.create.CreateIndividualObservationBatchUI fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUI fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyUI fr.ifremer.tutti.ui.swing.content.operation.catches.species.create.CreateSpeciesBatchUI @@ -96,9 +94,6 @@ public EditCatchesUI(FishingOperationsUI parentUI) { <CardLayout2Ext id='accidentalTabPanelLayout' constructorParams='this, "accidentalTabPanel"'/> - <CardLayout2Ext id='individualObservationTabPanelLayout' - constructorParams='this, "individualObservationTabPanel"'/> - <TuttiHelpBroker id='broker' constructorParams='"tutti.editCatchBatch.help"'/> <JToolBar id='catchesCaracteristicsTabToolBar'> @@ -191,29 +186,6 @@ public EditCatchesUI(FishingOperationsUI parentUI) { </JXTitledPanel> </JPanel> </tab> - <tab id='individualObservationTab'> - <JPanel id='individualObservationTabPanel'> - <JXTitledPanel - id='individualObservationTabFishingOperationReminderLabel' - constraints='EditCatchesUIHandler.MAIN_CARD'> - <IndividualObservationBatchUI id='individualObservationTabContent' - constructorParams='this'/> - </JXTitledPanel> - <JXTitledPanel id='individualObservationTabCreateBatchReminderLabel' - constraints='EditCatchesUIHandler.CREATE_BATCH_CARD'> - <CreateIndividualObservationBatchUI - id='individualObservationTabCreateBatch' - constructorParams='this'/> - </JXTitledPanel> - <JXTitledPanel - id='individualObservationCaracteristicMapEditorReminderLabel' - constraints='EditCatchesUIHandler.EDIT_CARACTERISTICS_CARD'> - <CaracteristicMapEditorUI - id='individualObservationCaracteristicMapEditor' - constructorParams='individualObservationTabContent'/> - </JXTitledPanel> - </JPanel> - </tab> <tab id='accidentalTab'> <JPanel id='accidentalTabPanel'> <JXTitledPanel id='accidentalTabFishingOperationReminderLabel' diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jcss b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jcss index 524d58c..5551975 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jcss +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jcss @@ -80,10 +80,6 @@ ComputableDataEditor { rightDecoration: {marineLitterTabContent.getMarineLitterBatchTabToolBar()}; } -#individualObservationTabFishingOperationReminderLabel { - rightDecoration: {individualObservationTabContent.getIndividualObservationBatchTabToolBar()}; -} - #accidentalTabFishingOperationReminderLabel { rightDecoration: {accidentalTabContent.getAccidentalBatchTabToolBar()}; } @@ -108,14 +104,6 @@ ComputableDataEditor { border: {BorderFactory.createTitledBorder(t("tutti.editCatchBatch.legend.accidental"))}; } -#individualObservationTabPanel { - layout:{individualObservationTabPanelLayout}; -} - -#individualObservationTable { - border: {BorderFactory.createTitledBorder(t("tutti.editCatchBatch.legend.individualObservation"))}; -} - #exportFishingOperationReportButton { actionIcon: export; text: "tutti.editCatchBatch.action.exportFishingOperationReport"; 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 5242a0b..d37b1a2 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 @@ -191,8 +191,7 @@ public class EditCatchesUIHandler extends AbstractTuttiTabContainerUIHandler<Edi setCustomTab(1, ui.getSpeciesTabContent().getModel()); setCustomTab(2, ui.getBenthosTabContent().getModel()); setCustomTab(3, ui.getMarineLitterTabContent().getModel()); - setCustomTab(4, ui.getIndividualObservationTabContent().getModel()); - setCustomTab(5, ui.getAccidentalTabContent().getModel()); + setCustomTab(4, ui.getAccidentalTabContent().getModel()); getTabPanel().setSelectedIndex(1); // when internal tab change, close any attachments popup @@ -217,7 +216,6 @@ public class EditCatchesUIHandler extends AbstractTuttiTabContainerUIHandler<Edi ui.getSpeciesTabContent().getSpeciesBatchAttachmentsButton().onCloseUI(); ui.getBenthosTabContent().getBenthosBatchAttachmentsButton().onCloseUI(); ui.getMarineLitterTabContent().getMarineLitterBatchAttachmentsButton().onCloseUI(); - ui.getIndividualObservationTabContent().getIndividualObservationBatchAttachmentsButton().onCloseUI(); ui.getAccidentalTabContent().getAccidentalBatchAttachmentsButton().onCloseUI(); } @@ -252,7 +250,6 @@ public class EditCatchesUIHandler extends AbstractTuttiTabContainerUIHandler<Edi closeUI(ui.getBenthosTabFrequencyEditor()); closeUI(ui.getMarineLitterTabContent()); closeUI(ui.getAccidentalTabContent()); - closeUI(ui.getIndividualObservationTabContent()); } @Override @@ -689,47 +686,6 @@ public class EditCatchesUIHandler extends AbstractTuttiTabContainerUIHandler<Edi } } - public void setIndividualObservationSelectedCard(String card) { - setIndividualObservationSelectedCard(card, null); - } - - 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 setAccidentalSelectedCard(String card) { setAccidentalSelectedCard(card, null); } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIModel.java index 09bbef0..df5c727 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIModel.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIModel.java @@ -158,17 +158,9 @@ public class EditCatchesUIModel extends AbstractTuttiBeanUIModel<CatchBatch, Edi */ protected final WeightUnit marineLitterWeightUnit; - /** - * Indivudual observation weight unit. - * - * @since 2.5 - */ - protected final WeightUnit individualObservationWeightUnit; - public EditCatchesUIModel(WeightUnit speciesWeightUnit, WeightUnit benthosWeightUnit, - WeightUnit marineLitterWeightUnit, - WeightUnit individualObservationWeightUnit) { + WeightUnit marineLitterWeightUnit) { super(fromBeanBinder, toBeanBinder); //FIXME See if this can be configurable or guess from other weightUnits if (WeightUnit.G == speciesWeightUnit && @@ -180,7 +172,6 @@ public class EditCatchesUIModel extends AbstractTuttiBeanUIModel<CatchBatch, Edi this.speciesWeightUnit = speciesWeightUnit; this.benthosWeightUnit = benthosWeightUnit; this.marineLitterWeightUnit = marineLitterWeightUnit; - this.individualObservationWeightUnit = individualObservationWeightUnit; speciesTotalSortedComputedOrNotWeight.addPropagateListener( PROPERTY_SPECIES_TOTAL_SORTED_WEIGHT, this); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIHandler.java index 426bbd9..51b6179 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/create/CreateBenthosBatchUIHandler.java @@ -495,7 +495,7 @@ public class CreateBenthosBatchUIHandler extends AbstractTuttiTableUIHandler<Spl // remove all listener on tables we could add before uninstallTableSaveOnRowChangedSelectionListener(); - uninstallTableKeyListener(); + uninstallTableKeyListener(getTable()); if (log.isDebugEnabled()) { log.debug("Install new table model " + tableModel); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java index 0f958b7..21ad094 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/split/SplitBenthosBatchUIHandler.java @@ -452,7 +452,7 @@ public class SplitBenthosBatchUIHandler extends AbstractTuttiTableUIHandler<Spli // remove all listener on tables we could add before uninstallTableSaveOnRowChangedSelectionListener(); - uninstallTableKeyListener(); + uninstallTableKeyListener(getTable()); if (log.isDebugEnabled()) { log.debug("Install new table model " + tableModel); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/CopyIndividualObservationMode.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/CopyIndividualObservationMode.java similarity index 60% rename from tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/CopyIndividualObservationMode.java rename to tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/CopyIndividualObservationMode.java index a73cd97..402a42c 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/CopyIndividualObservationMode.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/CopyIndividualObservationMode.java @@ -1,4 +1,4 @@ -package fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency; +package fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation; /** * @author Kevin Morin (Code Lutin) 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 74cb4c6..f22197b 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 @@ -86,7 +86,7 @@ public class IndividualObservationBatchTableModel extends AbstractApplicationTab public IndividualObservationBatchTableModel(WeightUnit weightUnit, TableColumnModelExt columnModel) { - super(columnModel, false, false); + super(columnModel, true, true); this.weightUnit = weightUnit; setNoneEditableCols(ID); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.jaxx b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.jaxx deleted file mode 100644 index b4fb771..0000000 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.jaxx +++ /dev/null @@ -1,97 +0,0 @@ -<!-- - #%L - Tutti :: UI - %% - Copyright (C) 2012 - 2014 Ifremer - %% - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public - License along with this program. If not, see - <http://www.gnu.org/licenses/gpl-3.0.html>. - #L% - --> - -<JPanel id='editIndividualObservationBatchTopPanel' - layout='{new BorderLayout()}' - decorator='help' - implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<IndividualObservationBatchUIModel, IndividualObservationBatchUIHandler>'> - - <import> - fr.ifremer.tutti.ui.swing.TuttiHelpBroker - fr.ifremer.tutti.ui.swing.TuttiUIContext - fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel - fr.ifremer.tutti.ui.swing.util.TuttiUI - fr.ifremer.tutti.ui.swing.util.TuttiUIUtil - fr.ifremer.tutti.ui.swing.util.attachment.ButtonAttachment - - org.nuiton.jaxx.widgets.number.NumberEditor - - org.jdesktop.swingx.JXTable - - javax.swing.ListSelectionModel - - java.awt.Color - java.awt.Dimension - - static org.nuiton.i18n.I18n.t - </import> - - <script><![CDATA[ - -public IndividualObservationBatchUI(TuttiUI<?,?> parentUI) { - TuttiUIUtil.setParentUI(this, parentUI); -} - ]]></script> - - <IndividualObservationBatchUIModel id='model' - initializer='getContextValue(IndividualObservationBatchUIModel.class)'/> - - <BeanValidator id='validator' bean='model' - uiClass='jaxx.runtime.validator.swing.ui.ImageValidationUI'> - </BeanValidator> - - <TuttiHelpBroker id='broker' - constructorParams='"tutti.editIndividualObservationBatch.help"'/> - - <JToolBar id='individualObservationBatchTabToolBar'> - <JMenuBar id='menu'> - <JMenu id='menuAction'> - <JMenuItem id='importMultiPostButton'/> - <JMenuItem id='exportMultiPostButton'/> - </JMenu> - </JMenuBar> - <ButtonAttachment id='individualObservationBatchAttachmentsButton' - constructorParams='handler.getContext(), getContextValue(EditCatchesUIModel.class)'/> - </JToolBar> - - <JPopupMenu id='tablePopup'> - <JMenuItem id='removeIndividualObservationBatchMenu'/> - <JMenuItem id='removeAllIndividualObservationBatchMenu'/> - </JPopupMenu> - - <JPanel id='tableToolbar' - constraints='BorderLayout.NORTH' - layout='{new BorderLayout()}' - styleClass="buttonPanel"> - <JPanel layout='{new GridLayout(1,0)}' - constraints='BorderLayout.WEST'> - <JButton id='createIndividualObservationBatchButton'/> - </JPanel> - </JPanel> - - <JScrollPane id='tableScrollPane' constraints='BorderLayout.CENTER'> - <JXTable id='table' - onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)' - onKeyPressed='handler.openRowMenu(event, tablePopup)'/> - </JScrollPane> - -</JPanel> diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.jcss b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.jcss deleted file mode 100644 index 67a3afb..0000000 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUI.jcss +++ /dev/null @@ -1,106 +0,0 @@ -/* - * #%L - * Tutti :: UI - * %% - * Copyright (C) 2012 - 2014 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -#editIndividualObservationBatchTopPanel { - _help: {"tutti.editIndividualObservationBatch.help"}; -} - -#individualObservationBatchTabToolBar { - floatable: false; - opaque: true; - borderPainted: false; -} - -#menu { - border:{null}; - background:{javax.swing.UIManager.getColor("MenuBar.background")}; -} - -#menuAction { - opaque: true; - text: "tutti.toolbar.menu.action"; - toolTipText: "tutti.toolbar.menu.action.tip"; - i18nMnemonic: "tutti.toolbar.menu.action.mnemonic"; -} - -#individualObservationBatchAttachmentsButton { - toolTipText: "tutti.editIndividualObservationBatch.action.attachments.tip"; - focusPainted: false; -} - -#tablePopup { - label: "tutti.editIndividualObservationBatch.title.batchActions"; -} - -#table { - selectionMode: {ListSelectionModel.SINGLE_SELECTION}; - /*selectionBackground: {null};*/ - selectionForeground: {Color.BLACK}; - sortable: false; -} - -#importMultiPostButton { - actionIcon: import; - text: "tutti.editIndividualObservationBatch.action.importMultiPost"; - toolTipText: "tutti.editIndividualObservationBatch.action.importMultiPost.tip"; - i18nMnemonic: "tutti.editIndividualObservationBatch.action.importMultiPost.mnemonic"; - _applicationAction: {fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.actions.ImportMultiPostIndividualObservationAction.class}; - _help: {"tutti.editIndividualObservationBatch.action.importMultiPost.help"}; -} - -#exportMultiPostButton { - actionIcon: export; - text: "tutti.editIndividualObservationBatch.action.exportMultiPost"; - toolTipText: "tutti.editIndividualObservationBatch.action.exportMultiPost.tip"; - i18nMnemonic: "tutti.editIndividualObservationBatch.action.exportMultiPost.mnemonic"; - _applicationAction: {fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.actions.ExportMultiPostIndividualObservationAction.class}; - _help: {"tutti.editIndividualObservationBatch.action.exportMultiPost.help"}; -} - -#createIndividualObservationBatchButton { - actionIcon: batch-create; - text: "tutti.editIndividualObservationBatch.action.createBatch"; - toolTipText: "tutti.editIndividualObservationBatch.action.createBatch.tip"; - i18nMnemonic: "tutti.editIndividualObservationBatch.action.createBatch.mnemonic"; - _simpleAction: {fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.actions.OpenCreateIndividualObservationBatchUIAction.class}; - _help: {"tutti.editIndividualObservationBatch.action.createBatch.help"}; -} - -#removeIndividualObservationBatchMenu { - actionIcon: batch-delete; - text: "tutti.editIndividualObservationBatch.action.removeBatch"; - toolTipText: "tutti.editIndividualObservationBatch.action.removeBatch.tip"; - i18nMnemonic: "tutti.editIndividualObservationBatch.action.removeBatch.mnemonic"; - _applicationAction: {fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.actions.RemoveIndividualObservationBatchAction.class}; - enabled: {model.isRemoveBatchEnabled()}; - _help: {"tutti.editIndividualObservationBatch.action.removeBatch.help"}; -} - -#removeAllIndividualObservationBatchMenu { - actionIcon: batch-delete; - text: "tutti.editIndividualObservationBatch.action.removeAllBatch"; - toolTipText: "tutti.editIndividualObservationBatch.action.removeAllBatch.tip"; - i18nMnemonic: "tutti.editIndividualObservationBatch.action.removeAllBatch.mnemonic"; - _applicationAction: {fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.actions.RemoveAllIndividualObservationBatchAction.class}; - enabled: {model.isRemoveBatchEnabled()}; - _help: {"tutti.editIndividualObservationBatch.action.removeAllBatch.help"}; -} 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 deleted file mode 100644 index 777ad42..0000000 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java +++ /dev/null @@ -1,759 +0,0 @@ -package fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation; - -/* - * #%L - * Tutti :: UI - * %% - * Copyright (C) 2012 - 2014 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import com.google.common.collect.Lists; -import com.google.common.collect.Sets; -import fr.ifremer.tutti.persistence.entities.CaracteristicMap; -import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.persistence.entities.data.Attachment; -import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; -import fr.ifremer.tutti.persistence.entities.data.SampleCategory; -import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; -import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.service.DecoratorService; -import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.type.WeightUnit; -import fr.ifremer.tutti.ui.swing.content.operation.catches.AbstractTuttiBatchTableUIHandler; -import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI; -import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler; -import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.create.CreateIndividualObservationBatchUIModel; -import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchRowModel; -import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUIModel; -import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyRowModel; -import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; -import fr.ifremer.tutti.ui.swing.util.TuttiUI; -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.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.table.CaracteristicColumnIdentifier; -import fr.ifremer.tutti.util.Numbers; -import jaxx.runtime.validator.swing.SwingValidator; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.jdesktop.swingx.JXTable; -import org.jdesktop.swingx.table.DefaultTableColumnModelExt; -import org.nuiton.decorator.Decorator; -import org.nuiton.jaxx.application.swing.table.ColumnIdentifier; -import org.nuiton.validator.NuitonValidatorResult; - -import javax.swing.JComponent; -import javax.swing.JOptionPane; -import java.io.Serializable; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import static org.nuiton.i18n.I18n.t; - -/** - * @author Kevin Morin - kmorin@codelutin.com - * @since 1.4 - */ -public class IndividualObservationBatchUIHandler - extends AbstractTuttiBatchTableUIHandler<IndividualObservationBatchRowModel, IndividualObservationBatchUIModel, IndividualObservationBatchTableModel, IndividualObservationBatchUI> - implements CaracteristicMapColumnUIHandler { - - private static final Log log = - LogFactory.getLog(IndividualObservationBatchUIHandler.class); - - /** - * Weight unit. - * - * @since 2.5 - */ - protected WeightUnit weightUnit; - - protected WeightUnit speciesWeightUnit; - - public Integer PMFM_ID_SORTED_UNSORTED; - - public IndividualObservationBatchUIHandler() { - super(IndividualObservationBatchRowModel.PROPERTY_SPECIES, - IndividualObservationBatchRowModel.PROPERTY_WEIGHT, - IndividualObservationBatchRowModel.PROPERTY_SIZE, - IndividualObservationBatchRowModel.PROPERTY_LENGTH_STEP_CARACTERISTIC, - IndividualObservationBatchRowModel.PROPERTY_CARACTERISTICS, - IndividualObservationBatchRowModel.PROPERTY_DEFAULT_CARACTERISTICS, - IndividualObservationBatchRowModel.PROPERTY_COMMENT, - IndividualObservationBatchRowModel.PROPERTY_ATTACHMENT); - } - - //------------------------------------------------------------------------// - //-- AbstractTuttiBatchTableUIHandler methods --// - //------------------------------------------------------------------------// - - @Override - protected ColumnIdentifier<IndividualObservationBatchRowModel> getCommentIdentifier() { - return IndividualObservationBatchTableModel.COMMENT; - } - - @Override - protected ColumnIdentifier<IndividualObservationBatchRowModel> getAttachementIdentifier() { - return IndividualObservationBatchTableModel.ATTACHMENT; - } - - @Override - public void selectFishingOperation(FishingOperation bean) { - - boolean empty = bean == null; - - IndividualObservationBatchUIModel model = getModel(); - - List<IndividualObservationBatchRowModel> rows; - - if (empty) { - rows = null; - } else { - - if (log.isDebugEnabled()) { - log.debug("Get individualObservation batch for fishingOperation: " + - bean.getId()); - } - rows = Lists.newArrayList(); - - if (!TuttiEntities.isNew(bean)) { - PersistenceService persistenceService = getPersistenceService(); - List<IndividualObservationBatch> batches = - persistenceService.getAllIndividualObservationBatch(bean.getId()); - - for (IndividualObservationBatch aBatch : batches) { - - // set the surveycode - if (getDataContext().isProtocolFilled()) { - // get the surveycode from the species list of the model - List<Species> speciesList = getDataContext().getReferentSpeciesWithSurveyCode(); - int i = speciesList.indexOf(aBatch.getSpecies()); - if (i > -1) { - aBatch.setSpecies(speciesList.get(i)); - } - } - - IndividualObservationBatchRowModel entry = - new IndividualObservationBatchRowModel( - weightUnit, - aBatch, - getModel().getDefaultCaracteristic()); - - List<Attachment> attachments = - persistenceService.getAllAttachments(entry.getObjectType(), - entry.getObjectId()); - - entry.addAllAttachment(attachments); - rows.add(entry); - } - } - } - model.setRows(rows); - } - - //------------------------------------------------------------------------// - //-- AbstractTuttiTableUIHandler methods --// - //------------------------------------------------------------------------// - - @Override - public IndividualObservationBatchTableModel getTableModel() { - return (IndividualObservationBatchTableModel) getTable().getModel(); - } - - @Override - public JXTable getTable() { - return ui.getTable(); - } - - @Override - protected boolean isRowValid(IndividualObservationBatchRowModel row) { - IndividualObservationBatch batch = row.toEntity(); - NuitonValidatorResult validator = getValidationService().validateEditIndividualObservationBatch(batch); - boolean result = !validator.hasErrorMessagess(); - return result; - } - - @Override - protected void saveSelectedRowIfRequired(TuttiBeanMonitor<IndividualObservationBatchRowModel> rowMonitor, - IndividualObservationBatchRowModel row) { - - if (row != null && row.isValid() && rowMonitor.wasModified()) { - - // monitored bean was modified, save it - if (log.isDebugEnabled()) { - log.debug("Row " + row + " was modified, will save it"); - } - - String title = buildReminderLabelTitle(row.getSpecies(), - null, - "Sauvegarde de Données individuelles : ", - "Ligne :" + (getTableModel().getRowIndex(row) + 1)); - - showInformationMessage(title); - - rowMonitor.setBean(null); - saveRow(row); - rowMonitor.setBean(row); - - // clear modified flag on the monitor - rowMonitor.clearModified(); - } - } - - //------------------------------------------------------------------------// - //-- AbstractTuttiUIHandler methods --// - //------------------------------------------------------------------------// - - @Override - public SwingValidator<IndividualObservationBatchUIModel> getValidator() { - return ui.getValidator(); - } - - @Override - public void beforeInit(IndividualObservationBatchUI ui) { - - super.beforeInit(ui); - if (log.isDebugEnabled()) { - log.debug("beforeInit: " + ui); - } - - weightUnit = getConfig().getIndividualObservationWeightUnit(); - speciesWeightUnit = getConfig().getSpeciesWeightUnit(); - - PMFM_ID_SORTED_UNSORTED = - getPersistenceService().getSortedUnsortedCaracteristic().getIdAsInt(); - - // get the default caracteristics - List<Caracteristic> defaultCaracteristic = - getDataContext().getDefaultIndividualObservationCaracteristics(); - - // create model - EditCatchesUIModel catchesUIModel = - ui.getContextValue(EditCatchesUIModel.class); - IndividualObservationBatchUIModel model = - new IndividualObservationBatchUIModel(catchesUIModel, - defaultCaracteristic); - ui.setContextValue(model); - } - - @Override - public void afterInit(IndividualObservationBatchUI ui) { - - if (log.isDebugEnabled()) { - log.debug("afterInit: " + ui); - } - - initUI(ui); - - JXTable table = getTable(); - - // can show / hide some columns in model - table.setColumnControlVisible(true); - - // create table column model - DefaultTableColumnModelExt columnModel = - new DefaultTableColumnModelExt(); - Decorator<Caracteristic> caracteristicDecorator = - getDecorator(Caracteristic.class, DecoratorService.CARACTERISTIC_PARAMETER_ONLY_WITH_UNIT); - Decorator<Caracteristic> caracteristicTipDecorator = - getDecorator(Caracteristic.class, DecoratorService.CARACTERISTIC_WITH_UNIT); - - Decorator<CaracteristicQualitativeValue> caracteristicQualitativeDecorator = - getDecorator(CaracteristicQualitativeValue.class, null); - - { - // Id column - - addIdColumnToModel(columnModel, IndividualObservationBatchTableModel.ID, table); - - } - - { // Species column - - Decorator<Species> speciesDecorator = getDecorator( - Species.class, DecoratorService.FROM_PROTOCOL); - addComboDataColumnToModel(columnModel, - IndividualObservationBatchTableModel.SPECIES, - speciesDecorator, getDataContext().getReferentSpeciesWithSurveyCode()); - } - - { // Weight column - - addFloatColumnToModel(columnModel, - IndividualObservationBatchTableModel.WEIGHT, - weightUnit, - table); - } - - { // Size column - - addFloatColumnToModel(columnModel, - IndividualObservationBatchTableModel.SIZE, - TuttiUI.DECIMAL3_PATTERN, - table); - } - - { // Length step caracteristic column - - addComboDataColumnToModel(columnModel, - IndividualObservationBatchTableModel.LENGTH_STEP_CARACTERISTIC, - getDecorator(Caracteristic.class, null), - getDataContext().getLengthStepCaracteristics()); - - } - - List<Caracteristic> defaultCaracteristic = - getModel().getDefaultCaracteristic(); - - - for (Caracteristic caracteristic : defaultCaracteristic) { - String header = caracteristicDecorator.toString(caracteristic); - String headerTip = caracteristicTipDecorator.toString(caracteristic); - - CaracteristicColumnIdentifier id = CaracteristicColumnIdentifier.newCaracteristicId( - caracteristic, - IndividualObservationBatchRowModel.PROPERTY_DEFAULT_CARACTERISTICS, - header, - headerTip - ); - - switch (caracteristic.getCaracteristicType()) { - - case NUMBER: - - addFloatColumnToModel(columnModel, - id, - TuttiUI.DECIMAL3_PATTERN, - table); - - break; - case QUALITATIVE: - List<CaracteristicQualitativeValue> values = - caracteristic.getQualitativeValue(); - addComboDataColumnToModel( - columnModel, - id, - caracteristicQualitativeDecorator, - values); - break; - case TEXT: - - addColumnToModel(columnModel, id); - - break; - } - } - - { // Other caracteristics column - - Set<Caracteristic> caracteristicsToSkip = Collections.unmodifiableSet( - Sets.newHashSet(getModel().getDefaultCaracteristic())); - - addColumnToModel(columnModel, - CaracteristicMapCellComponent.newEditor(ui, caracteristicsToSkip), - CaracteristicMapCellComponent.newRender(getContext()), - IndividualObservationBatchTableModel.OTHER_CARACTERISTICS); - - } - - { // Comment column - - addColumnToModel(columnModel, - CommentCellEditor.newEditor(ui), - CommentCellRenderer.newRender(), - IndividualObservationBatchTableModel.COMMENT); - } - - { // File column - - addColumnToModel(columnModel, - AttachmentCellEditor.newEditor(ui), - AttachmentCellRenderer.newRender(getDecorator(Attachment.class, null)), - IndividualObservationBatchTableModel.ATTACHMENT); - } - - // create table model - IndividualObservationBatchTableModel tableModel = - new IndividualObservationBatchTableModel(weightUnit, - columnModel); - - table.setModel(tableModel); - table.setColumnModel(columnModel); - - initBatchTable(table, columnModel, tableModel); - } - - @Override - protected void beforeOpenPopup(int rowIndex, int columnIndex) { - super.beforeOpenPopup(rowIndex, columnIndex); - - boolean enableRemove = false; - - if (rowIndex != -1) { - - // there is a selected row - enableRemove = true; - } - IndividualObservationBatchUIModel model = getModel(); - model.setRemoveBatchEnabled(enableRemove); - } - - @Override - protected JComponent getComponentToFocus() { - return getUI().getTable(); - } - - @Override - public void onCloseUI() { - if (log.isDebugEnabled()) { - log.debug("closing: " + ui); - } - ui.getIndividualObservationBatchAttachmentsButton().onCloseUI(); - } - - @Override - public CaracteristicMapEditorUI getCaracteristicMapEditor() { - EditCatchesUI parent = getParentContainer(EditCatchesUI.class); - return parent.getIndividualObservationCaracteristicMapEditor(); - } - - @Override - public void showCaracteristicMapEditor(Species species) { - EditCatchesUI parent = getParentContainer(EditCatchesUI.class); - parent.getHandler().setIndividualObservationSelectedCard(EditCatchesUIHandler.EDIT_CARACTERISTICS_CARD, species); - } - - @Override - public void hideCaracteristicMapEditor() { - EditCatchesUI parent = getParentContainer(EditCatchesUI.class); - parent.getHandler().setIndividualObservationSelectedCard(EditCatchesUIHandler.MAIN_CARD); - } - - //------------------------------------------------------------------------// - //-- Public methods --// - //------------------------------------------------------------------------// - - public void addBatch(CreateIndividualObservationBatchUIModel model) { - if (model.isValid()) { - - IndividualObservationBatchTableModel tableModel = getTableModel(); - - if (model.isCreateFromBatch()) { - - Species species = model.getSpecies(); - - String speciesStr = decorate(species); - - // check if there is some rows to create - - if (!model.isSpeciesFromBatchWithCount()) { - - String htmlMessage = String.format("<html>%s</html>", - t("tutti.createIndividualObservationBatch.warn.nocount", speciesStr)); - JOptionPane.showMessageDialog(getContext().getMainUI(), - htmlMessage, - t("tutti.createIndividualObservationBatch.warn.nocount.title"), - JOptionPane.WARNING_MESSAGE); - return; - } - - // check if there is already some indivudal data for this species - - Set<Species> speciesUsed = getModel().getSpeciesUsed(); - if (speciesUsed.contains(species)) { - - String htmlMessage = String.format( - CONFIRMATION_FORMAT, - t("tutti.createIndividualObservationBatch.confirm.alreadyUsedSpecies.message", speciesStr), - t("tutti.createIndividualObservationBatch.confirm.alreadyUsedSpecies.help")); - int response = JOptionPane.showConfirmDialog( - getTopestUI(), - htmlMessage, - t("tutti.createIndividualObservationBatch.confirm.alreadyUsedSpecies.title"), - JOptionPane.OK_CANCEL_OPTION, - JOptionPane.WARNING_MESSAGE); - - - boolean create = response == JOptionPane.OK_OPTION; - - if (!create) { - return; - } - } - EditCatchesUI parent = getParentContainer(EditCatchesUI.class); - - SpeciesBatchUIModel speciesBatchUIModel = parent.getSpeciesTabContent().getModel(); - - // get species rows to use (all leafs for the given species) - - List<SpeciesBatchRowModel> leafs = - speciesBatchUIModel.getLeafs(species); - - List<IndividualObservationBatchRowModel> rowsToCreate = Lists.newArrayList(); - - CaracteristicMap defaultCaracteristics = new CaracteristicMap(); - defaultCaracteristics.putAll(model.getCaracteristics()); - - List<Caracteristic> defaultCaracteristic = - Lists.newArrayList(model.getDefaultCaracteristic()); - defaultCaracteristic.addAll(defaultCaracteristics.keySet()); - - for (SpeciesBatchRowModel leaf : leafs) { - - CaracteristicMap batchCaracteristics = new CaracteristicMap(); - - for (SampleCategory<?> sampleCategory : leaf) { - if (PMFM_ID_SORTED_UNSORTED.equals(sampleCategory.getCategoryId())) { - // do not use vrac / hors vrac caracteristic ? - continue; - } - if (sampleCategory.getCategoryValue() == null) { - // not using this category - continue; - } - if (defaultCaracteristic.contains(sampleCategory.getCategoryDef().getCaracteristic())) { - - // use default caracteristics - defaultCaracteristics.put(sampleCategory.getCategoryDef().getCaracteristic(), - sampleCategory.getCategoryValue()); - } else { - - // use other caracteristics - batchCaracteristics.put(sampleCategory.getCategoryDef().getCaracteristic(), - sampleCategory.getCategoryValue()); - } - - } - - List<SpeciesFrequencyRowModel> frequencies = leaf.getFrequency(); - - if (CollectionUtils.isEmpty(frequencies)) { - - // no frequency, create a simple row - - int nbRow = Numbers.getValueOrComputedValue(leaf.getNumber(), 0); - - for (int i = 0; i < nbRow; i++) { - IndividualObservationBatchRowModel newRow = tableModel.createNewRow(); - newRow.setSpecies(species); - newRow.getCaracteristics().putAll(batchCaracteristics); - -// //FIXME Keep this ? -// newRow.getDefaultCaracteristics().putAll(defaultCaracteristics); -// //FIXME Keep this? -// newRow.setWeight(model.getWeight()); -// //FIXME Keep this? -// newRow.setSize(model.getSize()); -// //FIXME Keep this? -// newRow.setLengthStepCaracteristic(model.getLengthStepCaracteristic()); - - rowsToCreate.add(newRow); - - } - - if (nbRow == 1) { - - // apply also weight found - IndividualObservationBatchRowModel lastRow = - rowsToCreate.get(rowsToCreate.size() - 1); - Float weight = Numbers.getValueOrComputedValue( - leaf.getWeight(), - leaf.getFinestCategory().getCategoryWeight()); - if (weight != null) { - - // convert weight units - weight = speciesWeightUnit.toEntity(weight); - weight = weightUnit.fromEntity(weight); - } - lastRow.setWeight(weight); - } - - } else { - - boolean withOneFrequency = frequencies.size() == 1; - - for (SpeciesFrequencyRowModel frequency : frequencies) { - - // create a row for each frequency - - int nbRow = Numbers.getValueOrComputedValue( - frequency.getNumber(), 0); - - Float weight = null; - if (nbRow == 1) { - - // apply also weight found - weight = frequency.getWeight(); - if (weight == null) { - - if (withOneFrequency) { - - // special case : only one frequency - // with one value, can use the batch weight - - weight = Numbers.getValueOrComputedValue( - leaf.getWeight(), - leaf.getFinestCategory().getCategoryWeight()); - } - } - - if (weight != null) { - - // convert weight units - weight = speciesWeightUnit.toEntity(weight); - weight = weightUnit.fromEntity(weight); - } - - - } - - for (int i = 0; i < nbRow; i++) { - IndividualObservationBatchRowModel newRow = tableModel.createNewRow(); - newRow.setSpecies(species); - newRow.setWeight(weight); - newRow.setSize(frequency.getLengthStep()); - newRow.setLengthStepCaracteristic(frequency.getLengthStepCaracteristic()); - - newRow.getCaracteristics().putAll(batchCaracteristics); - newRow.getDefaultCaracteristics().putAll(defaultCaracteristics); - - rowsToCreate.add(newRow); - } - } - } - } - - int nbRowsToCreate = rowsToCreate.size(); - - boolean create; - - int maxIndividualObservationRowsToCreate = - getConfig().getMaxIndividualObservationRowsToCreate(); - - if (maxIndividualObservationRowsToCreate < nbRowsToCreate) { - - // ask confirmation - - String htmlMessage = String.format( - CONFIRMATION_FORMAT, - t("tutti.createIndividualObservationBatch.confirm.message", speciesStr, nbRowsToCreate), - t("tutti.createIndividualObservationBatch.confirm.help")); - int response = JOptionPane.showConfirmDialog( - getTopestUI(), - htmlMessage, - t("tutti.createIndividualObservationBatch.confirm.title"), - JOptionPane.OK_CANCEL_OPTION, - JOptionPane.WARNING_MESSAGE); - - - create = response == JOptionPane.OK_OPTION; - } else { - - create = true; - } - - if (create) { - - if (log.isInfoEnabled()) { - log.info("Will create " + rowsToCreate.size() + " individual observation batches"); - } - - for (IndividualObservationBatchRowModel newRow : rowsToCreate) { - - recomputeRowValidState(newRow); - - saveRow(newRow); - - tableModel.addNewRow(newRow); - } - - TuttiUIUtil.selectFirstCellOnLastRow(getTable()); - } - - } else { - - IndividualObservationBatchRowModel newRow = tableModel.createNewRow(); - newRow.setSpecies(model.getSpecies()); - newRow.setWeight(model.getWeight()); - newRow.setSize(model.getSize()); - newRow.setLengthStepCaracteristic(model.getLengthStepCaracteristic()); - newRow.getDefaultCaracteristics().putAll(model.getCaracteristics()); - - recomputeRowValidState(newRow); - - saveRow(newRow); - - tableModel.addNewRow(newRow); - TuttiUIUtil.selectFirstCellOnLastRow(getTable()); - } - } - - } - - //------------------------------------------------------------------------// - //-- Internal methods --// - //------------------------------------------------------------------------// - - protected void saveRow(IndividualObservationBatchRowModel row) { - - IndividualObservationBatch entityToSave = row.toEntity(); - - CaracteristicMap caracteristics = new CaracteristicMap(); - entityToSave.setCaracteristics(caracteristics); - - // push back not null extra caracteristics - for (Map.Entry<Caracteristic, Serializable> entry : row.getCaracteristics().entrySet()) { - Serializable value = entry.getValue(); - if (value != null) { - caracteristics.put(entry.getKey(), value); - } - } - - // push back not null default caracteristics - for (Map.Entry<Caracteristic, Serializable> entry : row.getDefaultCaracteristics().entrySet()) { - Serializable value = entry.getValue(); - if (value != null) { - caracteristics.put(entry.getKey(), value); - } - } - - FishingOperation fishingOperation = getModel().getFishingOperation(); - entityToSave.setFishingOperation(fishingOperation); - - if (TuttiEntities.isNew(entityToSave)) { - - entityToSave = getPersistenceService().createIndividualObservationBatch(entityToSave); - row.setId(entityToSave.getId()); - } else { - getPersistenceService().saveIndividualObservationBatch(entityToSave); - } - - fireBatchSaved(row); - } -} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIModel.java deleted file mode 100644 index 22ca4c6..0000000 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIModel.java +++ /dev/null @@ -1,141 +0,0 @@ -package fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation; - -/* - * #%L - * Tutti :: UI - * %% - * Copyright (C) 2012 - 2014 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import com.google.common.collect.Lists; -import com.google.common.collect.Sets; -import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.ui.swing.content.operation.catches.AbstractTuttiBatchUIModel; -import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; -import org.nuiton.jaxx.application.swing.tab.TabContentModel; -import org.apache.commons.collections4.CollectionUtils; - -import java.util.List; -import java.util.Set; - -import static org.nuiton.i18n.I18n.n; - -/** - * @author Kevin Morin - kmorin@codelutin.com - * @since 1.4 - */ -public class IndividualObservationBatchUIModel extends AbstractTuttiBatchUIModel<IndividualObservationBatchRowModel, IndividualObservationBatchUIModel> - implements TabContentModel { - - private static final long serialVersionUID = 1L; - - public static final String PROPERTY_REMOVE_BATCH_ENABLED = "removeBatchEnabled"; - - /** Can user remove a selected batch? */ - protected boolean removeBatchEnabled; - - /** - * Default caracteristics coming from protocol. - * - * @since 2.5 - */ - protected final List<Caracteristic> defaultCaracteristic; - - public IndividualObservationBatchUIModel(EditCatchesUIModel catchesUIModel, - List<Caracteristic> defaultCaracteristic) { - super(catchesUIModel); - this.defaultCaracteristic = defaultCaracteristic == null ? - Lists.<Caracteristic>newArrayList() : - Lists.newArrayList(defaultCaracteristic); - } - - public boolean isRemoveBatchEnabled() { - return removeBatchEnabled; - } - - public void setRemoveBatchEnabled(boolean removeBatchEnabled) { - this.removeBatchEnabled = removeBatchEnabled; - firePropertyChange(PROPERTY_REMOVE_BATCH_ENABLED, null, removeBatchEnabled); - } - - public List<Caracteristic> getDefaultCaracteristic() { - return defaultCaracteristic; - } - - public Species getLastSpeciesUsed() { - Species result = null; - if (!rows.isEmpty()) { - result = rows.get(rows.size() - 1).getSpecies(); - } - return result; - } - - public Caracteristic getLastLengthStepCaracteristicUsed() { - Caracteristic result = null; - if (!rows.isEmpty()) { - result = rows.get(rows.size() - 1).getLengthStepCaracteristic(); - } - return result; - } - - public Set<Species> getSpeciesUsed() { - Set<Species> result = Sets.newHashSet(); - for (IndividualObservationBatchRowModel row : getRows()) { - result.add(row.getSpecies()); - } - return result; - } - - //------------------------------------------------------------------------// - //-- TabContentModel --// - //------------------------------------------------------------------------// - - @Override - public boolean isEmpty() { - boolean result = true; - if (CollectionUtils.isNotEmpty(getRows())) { - - // check if every line is not valid - for (IndividualObservationBatchRowModel row : rows) { - if (row.isValid()) { - - // found a valid row so not empty - result = false; - break; - } - } - } - return result; - } - - @Override - public String getTitle() { - return n("tutti.label.tab.individualObservations"); - } - - @Override - public String getIcon() { - return null; - } - - @Override - public boolean isCloseable() { - return false; - } -} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/actions/ExportMultiPostIndividualObservationAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/actions/ExportMultiPostIndividualObservationAction.java deleted file mode 100644 index 157bed5..0000000 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/actions/ExportMultiPostIndividualObservationAction.java +++ /dev/null @@ -1,79 +0,0 @@ -package fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.actions; - -/* - * #%L - * Tutti :: UI - * %% - * Copyright (C) 2012 - 2014 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.service.catches.multipost.MultiPostExportService; -import fr.ifremer.tutti.ui.swing.content.operation.catches.actions.ExportMultiPostActionSupport; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchUI; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchUIHandler; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchUIModel; - -import java.io.File; - -import static org.nuiton.i18n.I18n.t; - -/** - * @author Kevin Morin - kmorin@codelutin.com - * @since 2.2 - */ -public class ExportMultiPostIndividualObservationAction - extends ExportMultiPostActionSupport<IndividualObservationBatchUIModel, IndividualObservationBatchUI, IndividualObservationBatchUIHandler> { - - public ExportMultiPostIndividualObservationAction(IndividualObservationBatchUIHandler handler) { - super(handler); - } - - @Override - protected String getFileExtension() { - return "tuttiIndividualObservation"; - } - - @Override - protected String getFileExtensionDescription() { - return t("tutti.common.file.tuttiIndividualObservation"); - } - - @Override - protected String getFileChooserTitle() { - return t("tutti.editIndividualObservationBatch.action.exportMultiPost.destinationFile.title"); - } - - @Override - protected String getFileChooserButton() { - return t("tutti.editIndividualObservationBatch.action.exportMultiPost.destinationFile.button"); - } - - @Override - protected String getSuccessMessage(File file) { - return t("tutti.editIndividualObservationBatch.action.exportMultiPost.success", file); - } - - @Override - protected void doExport(MultiPostExportService multiPostImportExportService, File file, FishingOperation fishingOperation) { - - multiPostImportExportService.exportIndividualObservation(file, fishingOperation); - - } - -} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/actions/ImportMultiPostIndividualObservationAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/actions/ImportMultiPostIndividualObservationAction.java deleted file mode 100644 index 5dc393f..0000000 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/actions/ImportMultiPostIndividualObservationAction.java +++ /dev/null @@ -1,81 +0,0 @@ -package fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.actions; - -/* - * #%L - * Tutti :: UI - * %% - * Copyright (C) 2012 - 2014 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.service.catches.multipost.MultiPostImportService; -import fr.ifremer.tutti.ui.swing.content.operation.catches.actions.ImportMultiPostActionSupport; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchUI; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchUIHandler; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchUIModel; - -import java.io.File; -import java.util.Map; - -import static org.nuiton.i18n.I18n.t; - -/** - * @author Kevin Morin - kmorin@codelutin.com - * @since 2.2 - */ -public class ImportMultiPostIndividualObservationAction - extends ImportMultiPostActionSupport<IndividualObservationBatchUIModel, IndividualObservationBatchUI, IndividualObservationBatchUIHandler> { - - public ImportMultiPostIndividualObservationAction(IndividualObservationBatchUIHandler handler) { - super(handler); - } - - @Override - protected String getFileExtension() { - return "tuttiIndividualObservation"; - } - - @Override - protected String getFileExtensionDescription() { - return t("tutti.common.file.tuttiIndividualObservation"); - } - - @Override - protected String getFileChooserTitle() { - return t("tutti.editIndividualObservationBatch.action.importMultiPost.sourceFile.title"); - } - - @Override - protected String getFileChooserButton() { - return t("tutti.editIndividualObservationBatch.action.importMultiPost.sourceFile.button"); - } - - @Override - protected String getSuccessMessage(File file) { - return t("tutti.editIndividualObservationBatch.action.importMultiPost.success", file); - } - - @Override - protected Map<String, Object> importBatches(MultiPostImportService multiPostImportExportService, File file, FishingOperation operation) { - - multiPostImportExportService.importIndividualObservation(file, operation); - return null; - - } - -} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/actions/OpenCreateIndividualObservationBatchUIAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/actions/OpenCreateIndividualObservationBatchUIAction.java deleted file mode 100644 index 94ed130..0000000 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/actions/OpenCreateIndividualObservationBatchUIAction.java +++ /dev/null @@ -1,62 +0,0 @@ -package fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.actions; - -/* - * #%L - * Tutti :: UI - * $Id:$ - * $HeadURL:$ - * %% - * Copyright (C) 2012 - 2015 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI; -import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchUI; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.create.CreateIndividualObservationBatchUI; -import fr.ifremer.tutti.ui.swing.util.actions.SimpleActionSupport; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * Created on 3/7/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.15 - */ -public class OpenCreateIndividualObservationBatchUIAction extends SimpleActionSupport<IndividualObservationBatchUI> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(OpenCreateIndividualObservationBatchUIAction.class); - - private static final long serialVersionUID = 1L; - - public OpenCreateIndividualObservationBatchUIAction(IndividualObservationBatchUI ui) { - super(ui); - } - - @Override - protected void onActionPerformed(IndividualObservationBatchUI ui) { - - EditCatchesUI parent = ui.getParentContainer(EditCatchesUI.class); - CreateIndividualObservationBatchUI createBatchEditor = parent.getIndividualObservationTabCreateBatch(); - - createBatchEditor.getHandler().openUI(ui.getModel()); - parent.getHandler().setIndividualObservationSelectedCard(EditCatchesUIHandler.CREATE_BATCH_CARD); - - } -} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/actions/RemoveAllIndividualObservationBatchAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/actions/RemoveAllIndividualObservationBatchAction.java deleted file mode 100644 index 362ac97..0000000 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/actions/RemoveAllIndividualObservationBatchAction.java +++ /dev/null @@ -1,156 +0,0 @@ -package fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.actions; - -/* - * #%L - * Tutti :: UI - * %% - * Copyright (C) 2012 - 2014 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import com.google.common.base.Preconditions; -import com.google.common.collect.Lists; -import fr.ifremer.tutti.persistence.TuttiPersistence; -import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchRowModel; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchTableModel; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchUI; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchUIHandler; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchUIModel; -import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.jdesktop.swingx.JXTable; - -import javax.swing.JOptionPane; -import java.util.List; - -import static org.nuiton.i18n.I18n.t; - -/** - * Created on 10/3/13. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 2.7 - */ -public class RemoveAllIndividualObservationBatchAction - extends LongActionSupport<IndividualObservationBatchUIModel, IndividualObservationBatchUI, IndividualObservationBatchUIHandler> { - - private static final Log log = - LogFactory.getLog(RemoveAllIndividualObservationBatchAction.class); - - public RemoveAllIndividualObservationBatchAction(IndividualObservationBatchUIHandler handler) { - super(handler, false); - } - - protected Species species; - - protected List<Integer> rowIndexToRemove; - - @Override - public boolean prepareAction() throws Exception { - boolean result = super.prepareAction(); - - rowIndexToRemove = null; - species = null; - - int rowIndex = -1; - - if (result) { - JXTable table = handler.getTable(); - - rowIndex = table.getSelectedRow(); - - Preconditions.checkState(rowIndex != -1, - "Cant remove batch if none is selected"); - } - - if (result) { - - IndividualObservationBatchTableModel tableModel = handler.getTableModel(); - - IndividualObservationBatchRowModel entry = tableModel.getEntry(rowIndex); - - species = entry.getSpecies(); - - rowIndexToRemove = Lists.newArrayList(); - - for (IndividualObservationBatchRowModel rowModel : tableModel.getRows()) { - if (species.equals(rowModel.getSpecies())) { - rowIndexToRemove.add(0, tableModel.getRowIndex(rowModel)); - } - } - - int answer = JOptionPane.showConfirmDialog(getContext().getActionUI(), - t("tutti.editIndividualObservationBatch.action.removeAllBatch.confirm.message", rowIndexToRemove.size(), decorate(species)), - t("tutti.editIndividualObservationBatch.action.removeAllBatch.confirm.title"), - JOptionPane.YES_NO_OPTION); - result = answer == JOptionPane.YES_OPTION; - } - - return result; - } - - @Override - public void doAction() throws Exception { - - Preconditions.checkNotNull(rowIndexToRemove); - Preconditions.checkNotNull(species); - - IndividualObservationBatchTableModel tableModel = handler.getTableModel(); - - for (Integer rowIndex : rowIndexToRemove) { - IndividualObservationBatchRowModel selectedBatch = tableModel.getEntry(rowIndex); - - boolean persisted = !TuttiEntities.isNew(selectedBatch); - - if (persisted) { - - // remove it from db - - String id = selectedBatch.getId(); - - if (log.isInfoEnabled()) { - log.info("Remove individual observation with id: " + id); - } - - TuttiPersistence persistenceService = - getContext().getPersistenceService(); - - persistenceService.deleteIndividualObservationBatch(id); - } - } - - } - - @Override - public void postSuccessAction() { - super.postSuccessAction(); - - JXTable table = handler.getTable(); - - IndividualObservationBatchTableModel tableModel = handler.getTableModel(); - - for (Integer rowIndex : rowIndexToRemove) { - tableModel.removeRow(rowIndex); - } - - TuttiUIUtil.selectFirstCellOnFirstRowAndStopEditing(table); - } -} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/actions/RemoveIndividualObservationBatchAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/actions/RemoveIndividualObservationBatchAction.java deleted file mode 100644 index 5ede469..0000000 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/actions/RemoveIndividualObservationBatchAction.java +++ /dev/null @@ -1,118 +0,0 @@ -package fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.actions; - -/* - * #%L - * Tutti :: UI - * %% - * Copyright (C) 2012 - 2014 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import com.google.common.base.Preconditions; -import fr.ifremer.tutti.persistence.TuttiPersistence; -import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchRowModel; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchTableModel; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchUI; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchUIHandler; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchUIModel; -import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.jdesktop.swingx.JXTable; - -import javax.swing.JOptionPane; - -import static org.nuiton.i18n.I18n.t; - -/** - * @author Kevin Morin - kmorin@codelutin.com - * @since 1.4 - */ -public class RemoveIndividualObservationBatchAction - extends LongActionSupport<IndividualObservationBatchUIModel, IndividualObservationBatchUI, IndividualObservationBatchUIHandler> { - - private static final Log log = - LogFactory.getLog(RemoveIndividualObservationBatchAction.class); - - public RemoveIndividualObservationBatchAction(IndividualObservationBatchUIHandler handler) { - super(handler, false); - } - - int rowIndex; - - @Override - public boolean prepareAction() throws Exception { - boolean result = super.prepareAction(); - - if (result) { - int answer = JOptionPane.showConfirmDialog(getContext().getActionUI(), - t("tutti.editIndividualObservationBatch.action.removeBatch.confirm.message"), - t("tutti.editIndividualObservationBatch.action.removeBatch.confirm.title"), - JOptionPane.YES_NO_OPTION); - result = answer == JOptionPane.YES_OPTION; - } - - return result; - } - - @Override - public void doAction() throws Exception { - - JXTable table = handler.getTable(); - - rowIndex = table.getSelectedRow(); - - Preconditions.checkState(rowIndex != -1, - "Cant remove batch if none is selected"); - - IndividualObservationBatchTableModel tableModel = handler.getTableModel(); - IndividualObservationBatchRowModel selectedBatch = tableModel.getEntry(rowIndex); - - boolean persisted = !TuttiEntities.isNew(selectedBatch); - - if (persisted) { - - // remove it from db - - String id = selectedBatch.getId(); - - if (log.isInfoEnabled()) { - log.info("Remove individual observation with id: " + id); - } - - TuttiPersistence persistenceService = - getContext().getPersistenceService(); - - persistenceService.deleteIndividualObservationBatch(id); - } - } - - @Override - public void postSuccessAction() { - super.postSuccessAction(); - - JXTable table = handler.getTable(); - - IndividualObservationBatchTableModel tableModel = handler.getTableModel(); - - tableModel.removeRow(rowIndex); - - TuttiUIUtil.selectFirstCellOnFirstRowAndStopEditing(table); - } -} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/actions/SelectSpeciesForIndividualObservationBatchAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/actions/SelectSpeciesForIndividualObservationBatchAction.java deleted file mode 100644 index 8913ba9..0000000 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/actions/SelectSpeciesForIndividualObservationBatchAction.java +++ /dev/null @@ -1,103 +0,0 @@ -package fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.actions; - -/* - * #%L - * Tutti :: UI - * %% - * Copyright (C) 2012 - 2014 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import com.google.common.collect.Lists; -import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.persistence.entities.referential.Speciess; -import fr.ifremer.tutti.service.DecoratorService; -import fr.ifremer.tutti.ui.swing.util.actions.LongActionSupport; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.create.CreateIndividualObservationBatchUI; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.create.CreateIndividualObservationBatchUIHandler; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.create.CreateIndividualObservationBatchUIModel; - -import java.util.List; -import java.util.Map; - -import static org.nuiton.i18n.I18n.t; - -/** - * Enable to select a species to the species selected in the protocol. - * - * @author Kevin Morin - kmorin@codelutin.com - * @since 2.0 - */ -public class SelectSpeciesForIndividualObservationBatchAction extends LongActionSupport<CreateIndividualObservationBatchUIModel, - CreateIndividualObservationBatchUI, - CreateIndividualObservationBatchUIHandler> { - - protected List<Species> allSpecies; - - protected List<Species> referentSpecies; - - protected Species selectedSpecies; - - public SelectSpeciesForIndividualObservationBatchAction(CreateIndividualObservationBatchUIHandler handler) { - super(handler, false); - - allSpecies = getDataContext().getSpecies(); - referentSpecies = getDataContext().getReferentSpecies(); - } - - @Override - public boolean prepareAction() throws Exception { - boolean canContinue = super.prepareAction(); - if (canContinue) { - - CreateIndividualObservationBatchUIModel model = getModel(); - - List<Species> species = Lists.newArrayList(allSpecies); - species.removeAll(model.getAvailableSpecies()); - - selectedSpecies = openAddSpeciesDialog(t("tutti.selectSpecies.title"), species); - canContinue = selectedSpecies != null; - } - return canContinue; - } - - @Override - public void doAction() throws Exception { - - CreateIndividualObservationBatchUIModel model = getModel(); - - List<Species> availableSpecies = Lists.newArrayList(model.getAvailableSpecies()); - - if (!selectedSpecies.isReferenceTaxon()) { - String decoratedSynonym = decorate(selectedSpecies, DecoratorService.FROM_PROTOCOL); - List<Species> referents = referentSpecies; - Map<String, Species> referentsById = Speciess.splitReferenceSpeciesByReferenceTaxonId(referents); - String taxonId = String.valueOf(selectedSpecies.getReferenceTaxonId()); - selectedSpecies = referentsById.get(taxonId); - String decoratedReferent = decorate(selectedSpecies, DecoratorService.FROM_PROTOCOL); - sendMessage(t("tutti.flash.info.species.replaced", decoratedSynonym, decoratedReferent)); - } - - if (!availableSpecies.contains(selectedSpecies)) { - availableSpecies.add(selectedSpecies); - } - model.setAvailableSpecies(availableSpecies); - model.setSpecies(selectedSpecies); - - } - -} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUI.jaxx b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUI.jaxx deleted file mode 100644 index 2f6281b..0000000 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUI.jaxx +++ /dev/null @@ -1,135 +0,0 @@ -<!-- - #%L - Tutti :: UI - %% - Copyright (C) 2012 - 2014 Ifremer - %% - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as - published by the Free Software Foundation, either version 3 of the - License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public - License along with this program. If not, see - <http://www.gnu.org/licenses/gpl-3.0.html>. - #L% - --> -<JPanel id='createIndividualObservationBatchTopPanel' - layout='{new BorderLayout()}' - decorator='help' - implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<CreateIndividualObservationBatchUIModel, CreateIndividualObservationBatchUIHandler>'> - <import> - - fr.ifremer.tutti.persistence.entities.referential.Species - fr.ifremer.tutti.persistence.entities.referential.Caracteristic - - fr.ifremer.tutti.ui.swing.TuttiHelpBroker - fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI - fr.ifremer.tutti.ui.swing.util.TuttiUI - fr.ifremer.tutti.ui.swing.util.TuttiUIUtil - - jaxx.runtime.swing.editor.bean.BeanFilterableComboBox - org.nuiton.jaxx.widgets.number.NumberEditor - - static org.nuiton.i18n.I18n.t - </import> - - <script><![CDATA[ - -public CreateIndividualObservationBatchUI(EditCatchesUI parentUI) { - TuttiUIUtil.setParentUI(this, parentUI); -} - ]]></script> - - <CreateIndividualObservationBatchUIModel id='model' - initializer='getContextValue(CreateIndividualObservationBatchUIModel.class)'/> - - <BeanValidator id='validator' bean='model' - uiClass='jaxx.runtime.validator.swing.ui.ImageValidationUI'> - <field name='species' - component='individualObservationSpeciesComboBox'/> - <field name='weight' - component='individualObservationWeightField'/> - <field name='size' - component='individualObservationSizeField'/> - <field name='lengthStepCaracteristic' - component='individualObservationLengthStepCaracteristicComboBox'/> - </BeanValidator> - - <TuttiHelpBroker id='broker' - constructorParams='"tutti.createIndividualObservationBatch.help"'/> - - <Table id='configurationPanel' constraints='BorderLayout.NORTH' fill='both'> - - <!-- IndividualObservation species --> - <row> - <cell anchor='west'> - <JLabel id='individualObservationSpeciesLabel'/> - </cell> - <cell weightx='1.0'> - <BeanFilterableComboBox id='individualObservationSpeciesComboBox' - constructorParams='this' - genericType='Species'/> - </cell> - <cell> - <JButton id='addSpeciesButton'/> - </cell> - </row> - - <!-- Create from batch ? --> - <row> - <cell anchor='west' columns="3"> - <JCheckBox id='individualObservationCreateFromBatch' - onItemStateChanged='handler.setBoolean(event, "createFromBatch")'/> - </cell> - </row> - - <!-- IndividualObservation weight --> - <row> - <cell anchor='west'> - <JLabel id='individualObservationWeightLabel'/> - </cell> - <cell weightx='1.0' columns='2'> - <NumberEditor id='individualObservationWeightField' - constructorParams='this'/> - </cell> - </row> - - <!-- IndividualObservation size --> - <row> - <cell anchor='west'> - <JLabel id='individualObservationSizeLabel'/> - </cell> - <cell weightx='1.0' columns='2'> - <NumberEditor id='individualObservationSizeField' - constructorParams='this'/> - </cell> - </row> - - <!-- IndividualObservation LengthStepCaracteristic --> - <row> - <cell anchor='west'> - <JLabel id='individualObservationLengthStepCaracteristicLabel'/> - </cell> - <cell weightx='1.0' columns='2'> - <BeanFilterableComboBox - id='individualObservationLengthStepCaracteristicComboBox' - constructorParams='this' - genericType='Caracteristic'/> - </cell> - </row> - - </Table> - - <!-- Form Actions --> - <JPanel layout='{new GridLayout(1, 0)}' constraints='BorderLayout.SOUTH' styleClass="buttonPanel"> - <JButton id='cancelButton'/> - <JButton id='saveAndContinueButton'/> - <JButton id='saveAndCloseButton'/> - </JPanel> -</JPanel> diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUI.jcss b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUI.jcss deleted file mode 100644 index 1e9bb58..0000000 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUI.jcss +++ /dev/null @@ -1,137 +0,0 @@ -/* - * #%L - * Tutti :: UI - * %% - * Copyright (C) 2012 - 2014 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ -BeanFilterableComboBox { - showReset: true; - bean: {model}; -} - -NumberEditor { - autoPopup: {handler.getConfig().isAutoPopupNumberEditor()}; - showPopupButton: {handler.getConfig().isShowNumberEditorButton()}; - bean: {model}; - numberType: {Float.class}; - showReset: true; -} - -#createIndividualObservationBatchTopPanel { - _help: {"tutti.createIndividualObservationBatch.help"}; -} - -#individualObservationSpeciesLabel { - text: "tutti.createIndividualObservationBatch.field.individualObservationSpecies"; - toolTipText: "tutti.createIndividualObservationBatch.field.individualObservationSpecies.tip"; - labelFor: {individualObservationSpeciesComboBox}; - _help: {"tutti.createIndividualObservationBatch.field.individualObservationSpecies.help"}; -} - -#individualObservationSpeciesComboBox { - property: species; - selectedItem: {model.getSpecies()}; - data: {model.getAvailableSpecies()}; - _help: {"tutti.createIndividualObservationBatch.field.individualObservationSpecies.help"}; -} - -#individualObservationCreateFromBatch { - text: "tutti.createIndividualObservationBatch.field.createFromBatch"; - selected: {model.isCreateFromBatch()}; - enabled: {model.isSpeciesFromBatch()}; - toolTipText: "tutti.createIndividualObservationBatch.field.createFromBatch.tip"; - _help: {"tutti.createIndividualObservationBatch.field.createFromBatch.help"}; -} - -#individualObservationWeightLabel { - text: "tutti.createIndividualObservationBatch.field.individualObservationWeight"; - toolTipText: "tutti.createIndividualObservationBatch.field.individualObservationWeight.tip"; - labelFor: {individualObservationWeightField}; - _help: {"tutti.createIndividualObservationBatch.field.individualObservationWeight.help"}; - _addWeightUnit: {handler.getConfig().getIndividualObservationWeightUnit()}; -} - -#individualObservationWeightField { - property: weight; - numberValue: {model.getWeight()}; - _help: {"tutti.createIndividualObservationBatch.field.individualObservationWeight.help"}; -} - -#individualObservationSizeLabel { - text: "tutti.createIndividualObservationBatch.field.individualObservationSize"; - toolTipText: "tutti.createIndividualObservationBatch.field.individualObservationSize.tip"; - labelFor: {individualObservationSizeField}; - _help: {"tutti.createIndividualObservationBatch.field.individualObservationSize.help"}; -} - -#individualObservationSizeField { - property: size; - numberValue: {model.getSize()}; - _help: {"tutti.createIndividualObservationBatch.field.individualObservationSize.help"}; -} - -#individualObservationLengthStepCaracteristicLabel { - text: "tutti.createIndividualObservationBatch.field.individualObservationLengthStepCaracteristic"; - toolTipText: "tutti.createIndividualObservationBatch.field.individualObservationLengthStepCaracteristic.tip"; - labelFor: {individualObservationLengthStepCaracteristicComboBox}; - _help: {"tutti.createIndividualObservationBatch.field.individualObservationLengthStepCaracteristic.help"}; -} - -#individualObservationLengthStepCaracteristicComboBox { - property: lengthStepCaracteristic; - selectedItem: {model.getLengthStepCaracteristic()}; - _help: {"tutti.createIndividualObservationBatch.field.individualObservationLengthStepCaracteristic.help"}; -} - -#addSpeciesButton { - text: "tutti.createIndividualObservationBatch.action.addSpecies"; - toolTipText: "tutti.createIndividualObservationBatch.action.addSpecies.tip"; - i18nMnemonic: "tutti.createIndividualObservationBatch.action.addSpecies.mnemonic"; - focusable: false; - _applicationAction: {fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.actions.SelectSpeciesForIndividualObservationBatchAction.class}; - _help: {"tutti.createIndividualObservationBatch.action.addSpecies.help"}; -} - -#saveAndContinueButton { - actionIcon: save; - text: "tutti.createIndividualObservationBatch.action.saveAndContinue"; - toolTipText: "tutti.createIndividualObservationBatch.action.saveAndContinue.tip"; - i18nMnemonic: "tutti.createIndividualObservationBatch.action.saveAndContinue.mnemonic"; - enabled: {model.isValid()}; - _simpleAction: {fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.create.actions.CreateIndividualObservationBatchAndContinueAction.class}; - _help: {"tutti.createIndividualObservationBatch.action.saveAndContinue.help"}; -} - -#saveAndCloseButton { - actionIcon: save; - text: "tutti.createIndividualObservationBatch.action.saveAndClose"; - toolTipText: "tutti.createIndividualObservationBatch.action.saveAndClose.tip"; - i18nMnemonic: "tutti.createIndividualObservationBatch.action.saveAndClose.mnemonic"; - enabled: {model.isValid()}; - _simpleAction: {fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.create.actions.CreateIndividualObservationBatchAndCloseAction.class}; - _help: {"tutti.createIndividualObservationBatch.action.saveAndClose.help"}; -} - -#cancelButton { - actionIcon: cancel; - text: "tutti.createIndividualObservationBatch.action.cancel"; - toolTipText: "tutti.createIndividualObservationBatch.action.cancel.tip"; - i18nMnemonic: "tutti.createIndividualObservationBatch.action.cancel.mnemonic"; - _simpleAction: {fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.create.actions.CreateIndividualObservationBatchCancelAction.class}; - _help: {"tutti.createIndividualObservationBatch.action.cancel.help"}; -} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIHandler.java deleted file mode 100644 index 1716cc8..0000000 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIHandler.java +++ /dev/null @@ -1,438 +0,0 @@ -package fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.create; - -/* - * #%L - * Tutti :: UI - * %% - * Copyright (C) 2012 - 2014 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; -import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; -import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; -import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.persistence.entities.referential.TaxonCache; -import fr.ifremer.tutti.persistence.entities.referential.TaxonCaches; -import fr.ifremer.tutti.service.DecoratorService; -import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI; -import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchRowModel; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchUIModel; -import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUIModel; -import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; -import fr.ifremer.tutti.ui.swing.util.TuttiUI; -import jaxx.runtime.SwingUtil; -import jaxx.runtime.swing.Table; -import jaxx.runtime.swing.editor.bean.BeanFilterableComboBox; -import jaxx.runtime.validator.swing.SwingValidator; -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.decorator.Decorator; -import org.nuiton.jaxx.application.bean.JavaBeanObjectUtil; -import org.nuiton.jaxx.widgets.number.NumberEditor; - -import javax.swing.JComponent; -import javax.swing.JLabel; -import javax.swing.JTextField; -import java.awt.GridBagConstraints; -import java.awt.Insets; -import java.awt.event.KeyAdapter; -import java.awt.event.KeyEvent; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.List; -import java.util.Map; -import java.util.Set; - -/** - * @author Kevin Morin - kmorin@codelutin.com - * @since 1.4 - */ -public class CreateIndividualObservationBatchUIHandler extends AbstractTuttiUIHandler<CreateIndividualObservationBatchUIModel, CreateIndividualObservationBatchUI> { - - private static final Log log = - LogFactory.getLog(CreateIndividualObservationBatchUIHandler.class); - - //------------------------------------------------------------------------// - //-- AbstractTuttiUIHandler methods --// - //------------------------------------------------------------------------// - - @Override - public void beforeInit(CreateIndividualObservationBatchUI ui) { - - super.beforeInit(ui); - - // get the default caracteristics - List<Caracteristic> defaultCaracteristic = - getDataContext().getDefaultIndividualObservationCaracteristics(); - - CreateIndividualObservationBatchUIModel model = - new CreateIndividualObservationBatchUIModel(defaultCaracteristic); - ui.setContextValue(model); - listModelIsModify(model); - } - - - @Override - public void afterInit(CreateIndividualObservationBatchUI ui) { - - initUI(ui); - - initBeanFilterableComboBox(ui.getIndividualObservationSpeciesComboBox(), - Lists.newArrayList(getDataContext().getReferentSpeciesWithSurveyCode()), - null, - DecoratorService.FROM_PROTOCOL); - - List<Caracteristic> lengthStepCaracteristics = getDataContext().getLengthStepCaracteristics(); - initBeanFilterableComboBox(ui.getIndividualObservationLengthStepCaracteristicComboBox(), - Lists.newArrayList(lengthStepCaracteristics), - null); - - final Set<JComponent> editorComponents = Sets.newHashSet(); - - editorComponents.add(ui.getIndividualObservationWeightField()); - editorComponents.add(ui.getIndividualObservationSizeField()); - editorComponents.add(ui.getIndividualObservationLengthStepCaracteristicComboBox()); - - if (getDataContext().isProtocolFilled()) { - - final Map<String, Caracteristic> lengthStepCaracteristicMap = TuttiEntities.splitById(lengthStepCaracteristics); - - final TaxonCache taxonCache = TaxonCaches.createSpeciesCacheWithoutVernacularCode(getPersistenceService(), getDataContext().getProtocol()); - - getModel().addPropertyChangeListener(IndividualObservationBatch.PROPERTY_SPECIES, - new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - Species species = (Species) evt.getNewValue(); - if (species != null) { - - String lengthStepPmfmId = taxonCache.getLengthStepPmfmId(species); - if (lengthStepPmfmId != null) { - Caracteristic lengthStepCaracteristic = lengthStepCaracteristicMap.get(lengthStepPmfmId); - getModel().setLengthStepCaracteristic(lengthStepCaracteristic); - } - } - } - }); - - // add default caracteristic editors - List<Caracteristic> caracteristics = - getDataContext().getDefaultIndividualObservationCaracteristics(); - - Table configurationPanel = ui.getConfigurationPanel(); - - Decorator<Caracteristic> caracteristicDecorator = - getDecorator(Caracteristic.class, DecoratorService.CARACTERISTIC_PARAMETER_ONLY_WITH_UNIT); - - Decorator<Caracteristic> caracteristicTipDecorator = - getDecorator(Caracteristic.class, DecoratorService.CARACTERISTIC_WITH_UNIT); - - int index = 6; - for (Caracteristic caracteristic : caracteristics) { - - final CreateIndividualObservationBatchUIModel.CaracteristicMapPropertyEditor editorModel = - getModel().newCaracteristicEditor(caracteristic); - - JComponent editor = null; - - switch (caracteristic.getCaracteristicType()) { - - case NUMBER: { - final NumberEditor numberEditor = new NumberEditor(ui); - - String name = caracteristic.getId() + "CaracteristicField"; - numberEditor.setName(name); - numberEditor.setProperty(CreateIndividualObservationBatchUIModel.CaracteristicMapPropertyEditor.PROPERTY_PROPERTY); - numberEditor.setShowReset(true); - numberEditor.setBean(editorModel); - numberEditor.setAutoPopup(getConfig().isAutoPopupNumberEditor()); - numberEditor.setShowPopupButton(getConfig().isShowNumberEditorButton()); - numberEditor.setNumberType(Float.class); - numberEditor.setNumberPattern(TuttiUI.DECIMAL3_PATTERN); - - editorModel.addPropertyChangeListener(CreateIndividualObservationBatchUIModel.CaracteristicMapPropertyEditor.PROPERTY_PROPERTY, new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - numberEditor.setNumberValue((Number) evt.getNewValue()); - } - }); - - editor = numberEditor; - ui.get$objectMap().put(name, editor); - - initNumberEditor(numberEditor); - } - break; - case QUALITATIVE: - - { - final BeanFilterableComboBox<CaracteristicQualitativeValue> qualitativeValuesEditor = new BeanFilterableComboBox<CaracteristicQualitativeValue>(ui); - - String name = caracteristic.getId() + "CaracteristicComboBox"; - qualitativeValuesEditor.setName(name); - qualitativeValuesEditor.setI18nPrefix("tutti.property."); - qualitativeValuesEditor.setProperty(CreateIndividualObservationBatchUIModel.CaracteristicMapPropertyEditor.PROPERTY_PROPERTY); - qualitativeValuesEditor.setShowReset(true); - qualitativeValuesEditor.setBeanType(CaracteristicQualitativeValue.class); - - qualitativeValuesEditor.setBean(editorModel); - - editorModel.addPropertyChangeListener(CreateIndividualObservationBatchUIModel.CaracteristicMapPropertyEditor.PROPERTY_PROPERTY, new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - qualitativeValuesEditor.setSelectedItem(evt.getNewValue()); - } - }); - - editor = qualitativeValuesEditor; - ui.get$objectMap().put(name, editor); - - initBeanFilterableComboBox(qualitativeValuesEditor, - Lists.newArrayList(caracteristic.getQualitativeValue()), - null); - } - - break; - case TEXT: - final JTextField textField = new JTextField(); - String name = caracteristic.getId() + "TextField"; - editorModel.addPropertyChangeListener(CreateIndividualObservationBatchUIModel.CaracteristicMapPropertyEditor.PROPERTY_PROPERTY, new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - textField.setText((String) evt.getNewValue()); - } - }); - textField.addKeyListener(new KeyAdapter() { - - @Override - public void keyReleased(KeyEvent e) { - String value = textField.getText(); - JavaBeanObjectUtil.setProperty(editorModel, CreateIndividualObservationBatchUIModel.CaracteristicMapPropertyEditor.PROPERTY_PROPERTY, value); - } - }); - editor = textField; - ui.get$objectMap().put(name, editor); - initTextField(textField); - break; - } - - editorComponents.add(editor); - JLabel jLabel = new JLabel(); - jLabel.setText(caracteristicDecorator.toString(caracteristic)); - jLabel.setToolTipText(caracteristicTipDecorator.toString(caracteristic)); - jLabel.setLabelFor(editor); - jLabel.putClientProperty("help", "tutti.createIndividualObservationBatch.field.defaultCaracteristic.help"); - ui.registerHelpId(ui.getBroker(), jLabel, "tutti.createIndividualObservationBatch.field.defaultCaracteristic.help"); - - configurationPanel.add(jLabel, new GridBagConstraints(0, index, 1, 1, 0.0, 0.0, 17, 1, new Insets(3, 3, 3, 3), 0, 0)); - configurationPanel.add(SwingUtil.boxComponentWithJxLayer(editor), new GridBagConstraints(1, index, 2, 1, 1.0, 0.0, 10, 1, new Insets(3, 3, 3, 3), 0, 0)); - index++; - } - } - - getModel().addPropertyChangeListener(IndividualObservationBatch.PROPERTY_SPECIES, - new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - - CreateIndividualObservationBatchUIModel source = (CreateIndividualObservationBatchUIModel) evt.getSource(); - - Species species = (Species) evt.getNewValue(); - - source.setValueIsAdjusting(true); - - try { - if (species == null || - !source.isSpeciesFromBatch()) { - - // reset create from batch flag - source.setCreateFromBatch(false); - } - - // compute editors enable property - boolean enabled = species != null && - (!source.isCreateFromBatch() || - !source.isSpeciesFromBatch()); -// boolean enabled = species != null && -// (!source.isCreateFromBatch() || -// !source.isSpeciesFromBatch() || -// source.isSpeciesFromBatchWithOneCount()); - if (log.isInfoEnabled()) { - log.info("can edit? " + enabled + " (species changed: " + species + ")"); - } - for (JComponent editorComponent : editorComponents) { - editorComponent.setEnabled(enabled); - } - } finally { - source.setValueIsAdjusting(false); - } - } - }); - - getModel().addPropertyChangeListener(CreateIndividualObservationBatchUIModel.PROPERTY_CREATE_FROM_BATCH, - new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - - CreateIndividualObservationBatchUIModel source = (CreateIndividualObservationBatchUIModel) evt.getSource(); - Boolean newValue = (Boolean) evt.getNewValue(); - newValue = newValue != null && newValue; - - // compute editors enable property - boolean enabled = !newValue || !source.isSpeciesFromBatch(); -// boolean enabled = !newValue || -// !source.isSpeciesFromBatch() || -// source.isSpeciesFromBatchWithOneCount(); - if (log.isInfoEnabled()) { - log.info("can edit? " + enabled + " (createFromBatch changed: " + newValue + ")"); - } - for (JComponent editorComponent : editorComponents) { - editorComponent.setEnabled(enabled); - } - } - }); - - listenValidatorValid(getValidator(), getModel()); - } - - @Override - protected JComponent getComponentToFocus() { - return getUI().getIndividualObservationSpeciesComboBox(); - } - - @Override - public void onCloseUI() { - - if (log.isDebugEnabled()) { - log.debug("closing: " + ui); - } - - // evict model from validator - getValidator().setBean(null); - - // when canceling always invalid model - getModel().setValid(false); - - EditCatchesUI parent = getParentContainer(EditCatchesUI.class); - parent.getHandler().setIndividualObservationSelectedCard(EditCatchesUIHandler.MAIN_CARD); - } - - @Override - public SwingValidator<CreateIndividualObservationBatchUIModel> getValidator() { - return ui.getValidator(); - } - - //------------------------------------------------------------------------// - //-- Public methods --// - //------------------------------------------------------------------------// - - public void openUI(IndividualObservationBatchUIModel batchModel) { - - CreateIndividualObservationBatchUIModel model = getModel(); - - // connect model to validator - getValidator().setBean(model); - - model.reset(); - - // compute list of available species - - List<Species> speciesListWithSurveyCode = - getDataContext().getReferentSpeciesWithSurveyCode(); - - Map<Species, Integer> batchesSpeciesList; - - List<Species> speciesList; - - EditCatchesUI parent = getParentContainer(EditCatchesUI.class); - SpeciesBatchUIModel speciesBatchUIModel = parent.getSpeciesTabContent().getModel(); - - boolean withSpeciesBatch = - CollectionUtils.isNotEmpty(speciesBatchUIModel.getRows()); - if (withSpeciesBatch) { - - // use species from species batch - batchesSpeciesList = speciesBatchUIModel.getSpeciesCount(); - - Set<Species> speciesSet = Sets.newHashSet(batchesSpeciesList.keySet()); - - // plus readd the species filled here (individualObservations) - List<IndividualObservationBatchRowModel> rows = batchModel.getRows(); - - if (CollectionUtils.isNotEmpty(rows)) { - for (IndividualObservationBatchRowModel row : rows) { - Species species = row.getSpecies(); - speciesSet.add(species); - } - } - speciesList = Lists.newArrayList(speciesSet); - if (log.isInfoEnabled()) { - log.info("Use speciesBatch + individualObservation species : " + speciesList.size()); - } - } else { - - batchesSpeciesList = Maps.newHashMap(); - - if (getDataContext().isProtocolFilled()) { - - // using protocol species - speciesList = Lists.newArrayList(speciesListWithSurveyCode); - - // readd the species filled here (individualObservations) - List<IndividualObservationBatchRowModel> rows = batchModel.getRows(); - - if (CollectionUtils.isNotEmpty(rows)) { - for (IndividualObservationBatchRowModel row : rows) { - - Species species = row.getSpecies(); - if (!speciesList.contains(species)) { - speciesList.add(species); - } - } - } - - if (log.isInfoEnabled()) { - log.info("Use protocol + individualObservation species : " + speciesList.size()); - } - } else { - - // no species batch, no protocol use all possible species - speciesList = speciesListWithSurveyCode; - - if (log.isInfoEnabled()) { - log.info("Use all species : " + speciesList.size()); - } - } - } - - model.setBatchSpecies(batchesSpeciesList); - model.setAvailableSpecies(speciesList); - - // set last species filled here - Species lastSpeciesUsed = batchModel.getLastSpeciesUsed(); - model.setSpecies(lastSpeciesUsed); - model.setLengthStepCaracteristic(batchModel.getLastLengthStepCaracteristicUsed()); - } - -} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIModel.java deleted file mode 100644 index f3b160b..0000000 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIModel.java +++ /dev/null @@ -1,290 +0,0 @@ -package fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.create; - -/* - * #%L - * Tutti :: UI - * %% - * Copyright (C) 2012 - 2014 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import fr.ifremer.tutti.persistence.entities.CaracteristicMap; -import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatch; -import fr.ifremer.tutti.persistence.entities.data.IndividualObservationBatchs; -import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; -import org.apache.commons.collections4.MapUtils; -import org.apache.commons.lang3.ObjectUtils; -import org.jdesktop.beans.AbstractSerializableBean; - -import java.io.Serializable; -import java.util.List; -import java.util.Map; - -/** - * @author Kevin Morin - kmorin@codelutin.com - * @since 1.4 - */ -public class CreateIndividualObservationBatchUIModel extends AbstractTuttiBeanUIModel<IndividualObservationBatch, CreateIndividualObservationBatchUIModel> { - - private static final long serialVersionUID = 1L; - - public static final String PROPERTY_AVAILABLE_SPECIES = "availableSpecies"; - - public static final String PROPERTY_BATCH_SPECIES = "batchSpecies"; - - public static final String PROPERTY_SPECIES_FROM_BATCH = "speciesFromBatch"; - - public static final String PROPERTY_CREATE_FROM_BATCH = "createFromBatch"; - - public static final String PROPERTY_CARACTERISTICS = "caracteristics"; - - /** - * All available species (sets by protocol). - * - * @since 2.0 - */ - protected List<Species> availableSpecies; - - /** - * All species used in batches with their count. - * - * @since 2.7 - */ - protected Map<Species, Integer> batchSpecies; - - /** - * Does we want to create rows from batch? - * - * @since 2.7 - */ - protected boolean createFromBatch; - - /** - * Flag to stop fires when flag is on. - * - * @since 2.8 - */ - protected boolean valueIsAdjusting; - - /** - * Delegate edit object. - * - * @since 1.3 - */ - protected final IndividualObservationBatch editObject = - IndividualObservationBatchs.newIndividualObservationBatch(); - - /** - * Default caracteristics coming from protocol. - * - * @since 2.5 - */ - protected final List<Caracteristic> defaultCaracteristic; - - /** - * Default caracteristics editors. - * - * @since 2.5 - */ - protected final List<CaracteristicMapPropertyEditor> caracteristicEditors = - Lists.newArrayList(); - - public CreateIndividualObservationBatchUIModel(List<Caracteristic> defaultCaracteristic) { - super(null, null); - this.defaultCaracteristic = defaultCaracteristic; - editObject.setCaracteristics(new CaracteristicMap()); - } - - public boolean isValueIsAdjusting() { - return valueIsAdjusting; - } - - public void setValueIsAdjusting(boolean valueIsAdjusting) { - this.valueIsAdjusting = valueIsAdjusting; - } - - public Species getSpecies() { - return editObject.getSpecies(); - } - - public void setSpecies(Species species) { - Object oldValue = getSpecies(); - Object oldSpeciesFromBatch = isSpeciesFromBatch(); - editObject.setSpecies(species); - firePropertyChanged(IndividualObservationBatch.PROPERTY_SPECIES, oldValue, species); - firePropertyChanged(PROPERTY_SPECIES_FROM_BATCH, oldSpeciesFromBatch, isSpeciesFromBatch()); - } - - public Float getWeight() { - return editObject.getWeight(); - } - - public void setWeight(Float weight) { - Object oldValue = getWeight(); - editObject.setWeight(weight); - firePropertyChanged(IndividualObservationBatch.PROPERTY_WEIGHT, oldValue, weight); - } - - public Float getSize() { - return editObject.getSize(); - } - - public void setSize(Float size) { - Object oldValue = getSize(); - editObject.setSize(size); - firePropertyChanged(IndividualObservationBatch.PROPERTY_SIZE, oldValue, size); - } - - public Caracteristic getLengthStepCaracteristic() { - return editObject.getLengthStepCaracteristic(); - } - - public void setLengthStepCaracteristic(Caracteristic lengthStepCaracteristic) { - Object oldValue = getLengthStepCaracteristic(); - editObject.setLengthStepCaracteristic(lengthStepCaracteristic); - firePropertyChanged(IndividualObservationBatch.PROPERTY_LENGTH_STEP_CARACTERISTIC, oldValue, lengthStepCaracteristic); - } - - public CaracteristicMap getCaracteristics() { - return editObject.getCaracteristics(); - } - - public void setCaracteristics(CaracteristicMap caracteristics) { - - editObject.setCaracteristics(caracteristics); - firePropertyChanged(IndividualObservationBatch.PROPERTY_CARACTERISTICS, null, caracteristics); - } - - public List<Species> getAvailableSpecies() { - return availableSpecies; - } - - public void setAvailableSpecies(List<Species> availableSpecies) { - this.availableSpecies = availableSpecies; - firePropertyChanged(PROPERTY_AVAILABLE_SPECIES, null, availableSpecies); - } - - public Map<Species, Integer> getBatchSpecies() { - return batchSpecies; - } - - public boolean isSpeciesFromBatch() { - return MapUtils.isNotEmpty(batchSpecies) && - getSpecies() != null && - batchSpecies.containsKey(getSpecies()); - } - - public boolean isSpeciesFromBatchWithCount() { - return isSpeciesFromBatch() && batchSpecies.get(getSpecies()) > 0; - } - - public void setBatchSpecies(Map<Species, Integer> batchSpecies) { - this.batchSpecies = batchSpecies; - firePropertyChanged(PROPERTY_BATCH_SPECIES, null, batchSpecies); - firePropertyChanged(PROPERTY_SPECIES_FROM_BATCH, null, isSpeciesFromBatch()); - setCreateFromBatch(isCreateFromBatch()); - } - - public boolean isCreateFromBatch() { - return createFromBatch; - } - - public void setCreateFromBatch(boolean createFromBatch) { - Object oldValue = isCreateFromBatch(); - this.createFromBatch = createFromBatch; - firePropertyChanged(PROPERTY_CREATE_FROM_BATCH, oldValue, createFromBatch); - } - - public List<Caracteristic> getDefaultCaracteristic() { - return defaultCaracteristic; - } - - @Override - protected IndividualObservationBatch newEntity() { - return IndividualObservationBatchs.newIndividualObservationBatch(); - } - - public void reset() { - setAvailableSpecies(Lists.<Species>newArrayList()); - setBatchSpecies(Maps.<Species, Integer>newHashMap()); - setCreateFromBatch(false); - setSpecies(null); - setWeight(null); - setSize(null); - setLengthStepCaracteristic(null); - for (CaracteristicMapPropertyEditor editor : caracteristicEditors) { - editor.setProperty(null); - } - getCaracteristics().clear(); - } - - public CaracteristicMapPropertyEditor newCaracteristicEditor(Caracteristic caracteristic) { - CaracteristicMapPropertyEditor editor = new CaracteristicMapPropertyEditor(caracteristic); - caracteristicEditors.add(editor); - return editor; - } - - /** - * Model to edit a caracteristic and flush it in the caracteristc map of - * the global model. - * - * Acts as a bean for the given caracteristic. - * - * @since 2.5 - */ - public class CaracteristicMapPropertyEditor extends AbstractSerializableBean { - - private static final long serialVersionUID = 1L; - - public static final String PROPERTY_PROPERTY = "property"; - - private final Caracteristic caracteristic; - - protected Serializable property; - - public Serializable getProperty() { - return property; - } - - public void setProperty(Serializable property) { - Object oldValue = getProperty(); - this.property = property; - getCaracteristics().put(caracteristic, property); - if (ObjectUtils.notEqual(oldValue, property)) { - firePropertyChanged(PROPERTY_PROPERTY, oldValue, property); - CreateIndividualObservationBatchUIModel.this.firePropertyChanged(PROPERTY_CARACTERISTICS, null, getCaracteristics()); - } - } - - public CaracteristicMapPropertyEditor(Caracteristic caracteristic) { - this.caracteristic = caracteristic; - } - } - - @Override - public void firePropertyChanged(String propertyName, - Object oldValue, - Object newValue) { - if (!valueIsAdjusting) { - firePropertyChange(propertyName, oldValue, newValue); - } - } -} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/actions/CreateIndividualObservationBatchAndCloseAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/actions/CreateIndividualObservationBatchAndCloseAction.java deleted file mode 100644 index d4aabf0..0000000 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/actions/CreateIndividualObservationBatchAndCloseAction.java +++ /dev/null @@ -1,64 +0,0 @@ -package fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.create.actions; - -/* - * #%L - * Tutti :: UI - * $Id:$ - * $HeadURL:$ - * %% - * Copyright (C) 2012 - 2015 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.create.CreateIndividualObservationBatchUI; -import fr.ifremer.tutti.ui.swing.util.actions.SimpleActionSupport; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * Created on 3/7/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.15 - */ -public class CreateIndividualObservationBatchAndCloseAction extends SimpleActionSupport<CreateIndividualObservationBatchUI> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(CreateIndividualObservationBatchAndCloseAction.class); - - private static final long serialVersionUID = 1L; - - public CreateIndividualObservationBatchAndCloseAction(CreateIndividualObservationBatchUI ui) { - super(ui); - } - - @Override - protected void onActionPerformed(CreateIndividualObservationBatchUI ui) { - - if (log.isDebugEnabled()) { - log.debug("Save And Close UI " + ui); - } - - EditCatchesUI parent = ui.getParentContainer(EditCatchesUI.class); - parent.getIndividualObservationTabContent().getHandler().addBatch(ui.getModel()); - - // close dialog - ui.getHandler().onCloseUI(); - - } -} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/actions/CreateIndividualObservationBatchAndContinueAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/actions/CreateIndividualObservationBatchAndContinueAction.java deleted file mode 100644 index 5a05426..0000000 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/actions/CreateIndividualObservationBatchAndContinueAction.java +++ /dev/null @@ -1,73 +0,0 @@ -package fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.create.actions; - -/* - * #%L - * Tutti :: UI - * $Id:$ - * $HeadURL:$ - * %% - * Copyright (C) 2012 - 2015 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.IndividualObservationBatchUI; -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.create.CreateIndividualObservationBatchUI; -import fr.ifremer.tutti.ui.swing.util.actions.SimpleActionSupport; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * Created on 3/7/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.15 - */ -public class CreateIndividualObservationBatchAndContinueAction extends SimpleActionSupport<CreateIndividualObservationBatchUI> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(CreateIndividualObservationBatchAndContinueAction.class); - - private static final long serialVersionUID = 1L; - - public CreateIndividualObservationBatchAndContinueAction(CreateIndividualObservationBatchUI ui) { - super(ui); - } - - @Override - protected void onActionPerformed(CreateIndividualObservationBatchUI ui) { - - if (log.isDebugEnabled()) { - log.debug("Save And Close UI " + ui); - } - - if (log.isDebugEnabled()) { - log.debug("Save And Continue UI " + ui); - } - - EditCatchesUI parent = ui.getParentContainer(EditCatchesUI.class); - IndividualObservationBatchUI individualObservationTabContent = parent.getIndividualObservationTabContent(); - individualObservationTabContent.getHandler().addBatch(ui.getModel()); - - // re-open dialog - ui.getHandler().openUI(individualObservationTabContent.getModel()); - - // set focus to weight field - ui.getIndividualObservationWeightField().grabFocus(); - - } -} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/actions/CreateIndividualObservationBatchCancelAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/actions/CreateIndividualObservationBatchCancelAction.java deleted file mode 100644 index 0a36c62..0000000 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/actions/CreateIndividualObservationBatchCancelAction.java +++ /dev/null @@ -1,59 +0,0 @@ -package fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.create.actions; - -/* - * #%L - * Tutti :: UI - * $Id:$ - * $HeadURL:$ - * %% - * Copyright (C) 2012 - 2015 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.create.CreateIndividualObservationBatchUI; -import fr.ifremer.tutti.ui.swing.util.actions.SimpleActionSupport; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * Created on 3/7/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.15 - */ -public class CreateIndividualObservationBatchCancelAction extends SimpleActionSupport<CreateIndividualObservationBatchUI> { - - /** Logger. */ - private static final Log log = LogFactory.getLog(CreateIndividualObservationBatchCancelAction.class); - - private static final long serialVersionUID = 1L; - - public CreateIndividualObservationBatchCancelAction(CreateIndividualObservationBatchUI ui) { - super(ui); - } - - @Override - protected void onActionPerformed(CreateIndividualObservationBatchUI ui) { - - if (log.isDebugEnabled()) { - log.debug("Save And Close UI " + ui); - } - - ui.getHandler().onCloseUI(); - - } -} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIHandler.java index f0abfb2..d0ecdfe 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/create/CreateSpeciesBatchUIHandler.java @@ -493,7 +493,7 @@ public class CreateSpeciesBatchUIHandler extends AbstractTuttiTableUIHandler<Spl // remove all listener on tables we could add before uninstallTableSaveOnRowChangedSelectionListener(); - uninstallTableKeyListener(); + uninstallTableKeyListener(getTable()); if (log.isDebugEnabled()) { log.debug("Install new table model " + tableModel); 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 6e3dbb0..8eea8ef 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 @@ -23,6 +23,7 @@ package fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency; */ import fr.ifremer.tutti.type.WeightUnit; +import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.CopyIndividualObservationMode; import org.jdesktop.swingx.table.TableColumnModelExt; import org.jfree.data.xy.XYSeries; import org.nuiton.jaxx.application.swing.table.AbstractApplicationTableModel; 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 75a0913..10edbbf 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 @@ -27,6 +27,7 @@ fr.ifremer.tutti.ui.swing.TuttiHelpBroker fr.ifremer.tutti.ui.swing.content.operation.catches.FrequencyConfigurationMode + fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.CopyIndividualObservationMode fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.actions.AddSpeciesFrequencyLengthStepCaracteristicAction fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.actions.CancelEditSpeciesFrequencyAction fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.actions.GenerateSpeciesFrequencyLengthStepsAction 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 2e8efc8..b7d9a39 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 @@ -334,7 +334,13 @@ ComputableDataEditor { _help: {"tutti.editSpeciesFrequencies.field.copyToSizeTableMode.size.help"}; } -//obsTable +#obsTable { + selectionMode: {ListSelectionModel.SINGLE_SELECTION}; + selectionBackground: {null}; + selectionForeground: {Color.BLACK}; + sortable: false; + enabled: true; +} #simpleCountingNumberPanel { border: { BorderFactory.createTitledBorder(null, null) }; 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 1cb1707..51ef527 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 @@ -813,7 +813,12 @@ public class SpeciesFrequencyUIHandler extends AbstractTuttiTableUIHandler<Speci obsTable.setModel(tableModel); obsTable.setColumnModel(columnModel); -// initBatchTable(obsTable, columnModel, tableModel); + initTable(obsTable); + + installTableKeyListener(columnModel, obsTable); + + tableModel.setRows(new ArrayList<>()); + } // protected void addIdColumnToModel(TableColumnModel model, 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 4a15261..3a1d5da 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 @@ -28,6 +28,7 @@ import fr.ifremer.tutti.persistence.entities.data.SampleCategoryModel; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.type.WeightUnit; import fr.ifremer.tutti.ui.swing.content.operation.catches.FrequencyConfigurationMode; +import fr.ifremer.tutti.ui.swing.content.operation.catches.individualobservation.CopyIndividualObservationMode; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchRowModel; import fr.ifremer.tutti.ui.swing.util.computable.ComputableData; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIModel; diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java index 71a4c99..ed266da 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java @@ -455,7 +455,7 @@ public class SplitSpeciesBatchUIHandler extends AbstractTuttiTableUIHandler<Spli // remove all listener on tables we could add before uninstallTableSaveOnRowChangedSelectionListener(); - uninstallTableKeyListener(); + uninstallTableKeyListener(getTable()); if (log.isDebugEnabled()) { log.debug("Install new table model " + tableModel); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/actions/EditFishingOperationAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/actions/EditFishingOperationAction.java index 0d9fb66..d8fa26b 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/actions/EditFishingOperationAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/actions/EditFishingOperationAction.java @@ -786,9 +786,6 @@ public class EditFishingOperationAction extends LongActionSupport<FishingOperati progressionModel.increments("Chargement des captures accidentelles"); ui.getAccidentalTabContent().getHandler().selectFishingOperation(operationToLoad); - progressionModel.increments("Chargement des données individuelles"); - ui.getIndividualObservationTabContent().getHandler().selectFishingOperation(operationToLoad); - } else { // remove catch 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 11d4130..b6b3da9 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 @@ -209,7 +209,6 @@ public class EditFishingOperationInValidationUIAction extends LongActionSupport< catchesTabContent.getBenthosTabContent().getHandler().removeBatchSavedListener(batchSavedListener); catchesTabContent.getAccidentalTabContent().getHandler().removeBatchSavedListener(batchSavedListener); catchesTabContent.getMarineLitterTabContent().getHandler().removeBatchSavedListener(batchSavedListener); - catchesTabContent.getIndividualObservationTabContent().getHandler().removeBatchSavedListener(batchSavedListener); } @Override @@ -232,7 +231,6 @@ public class EditFishingOperationInValidationUIAction extends LongActionSupport< catchesTabContent.getBenthosTabContent().getHandler().addBatchSavedListener(batchSavedListener); catchesTabContent.getAccidentalTabContent().getHandler().addBatchSavedListener(batchSavedListener); catchesTabContent.getMarineLitterTabContent().getHandler().addBatchSavedListener(batchSavedListener); - catchesTabContent.getIndividualObservationTabContent().getHandler().addBatchSavedListener(batchSavedListener); } @Override diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java index c51b03f..41e8c8d 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java @@ -55,7 +55,9 @@ import java.awt.event.KeyEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.Enumeration; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Set; /** @@ -284,7 +286,7 @@ public abstract class AbstractTuttiTableUIHandler<R extends AbstractTuttiBeanUIM private ListSelectionListener tableSelectionListener; - private KeyAdapter keyAdapter; + private Map<JTable, KeyAdapter> keyAdapters = new HashMap<>(); protected void installTableSaveOnRowChangedSelectionListener() { @@ -372,11 +374,11 @@ public abstract class AbstractTuttiTableUIHandler<R extends AbstractTuttiBeanUIM final JTable table) { Preconditions.checkState( - keyAdapter == null, + keyAdapters.get(table) == null, "There is already a tableSelectionListener registred, " + "remove it before invoking this method."); - final AbstractApplicationTableModel<R> model = getTableModel(); + final AbstractApplicationTableModel model = (AbstractApplicationTableModel) table.getModel(); final MoveToNextEditableCellAction nextCellAction = MoveToNextEditableCellAction.newAction(model, table); final MoveToPreviousEditableCellAction previousCellAction = @@ -387,7 +389,7 @@ public abstract class AbstractTuttiTableUIHandler<R extends AbstractTuttiBeanUIM final MoveToPreviousEditableRowAction previousRowAction = MoveToPreviousEditableRowAction.newAction(model, table); - keyAdapter = new KeyAdapter() { + KeyAdapter keyAdapter = new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { @@ -428,6 +430,7 @@ public abstract class AbstractTuttiTableUIHandler<R extends AbstractTuttiBeanUIM } } }; + keyAdapters.put(table, keyAdapter); if (log.isDebugEnabled()) { log.debug("Intall " + keyAdapter); @@ -455,17 +458,18 @@ public abstract class AbstractTuttiTableUIHandler<R extends AbstractTuttiBeanUIM } } - protected void uninstallTableKeyListener() { + protected void uninstallTableKeyListener(JTable table) { + KeyAdapter keyAdapter = keyAdapters.get(table); if (keyAdapter != null) { if (log.isDebugEnabled()) { log.debug("Desintall " + keyAdapter); } - getTable().removeKeyListener(keyAdapter); + table.removeKeyListener(keyAdapter); - TableColumnModel columnModel = getTable().getColumnModel(); + TableColumnModel columnModel = table.getColumnModel(); Enumeration<TableColumn> columns = columnModel.getColumns(); while (columns.hasMoreElements()) { TableColumn tableColumn = columns.nextElement(); @@ -475,7 +479,7 @@ public abstract class AbstractTuttiTableUIHandler<R extends AbstractTuttiBeanUIM editor.getNumberEditor().getTextField().removeKeyListener(keyAdapter); } } - keyAdapter = null; + keyAdapters.remove(table); } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm