This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository tutti. See http://git.codelutin.com/tutti.git commit 22363b268ff97cd67095eb720b87a41cf49b51d7 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 | 35 +- .../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 | 758 --------------------- .../IndividualObservationBatchUIModel.java | 140 ---- ...ExportMultiPostIndividualObservationAction.java | 79 --- ...ImportMultiPostIndividualObservationAction.java | 81 --- ...enCreateIndividualObservationBatchUIAction.java | 57 -- .../RemoveAllIndividualObservationBatchAction.java | 156 ----- .../RemoveIndividualObservationBatchAction.java | 118 ---- ...SpeciesForIndividualObservationBatchAction.java | 103 --- .../create/CreateIndividualObservationBatchUI.jaxx | 135 ---- .../create/CreateIndividualObservationBatchUI.jcss | 137 ---- .../CreateIndividualObservationBatchUIHandler.java | 412 ----------- .../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, 53 insertions(+), 2999 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 b674111..a5315f9 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 @@ -76,8 +76,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(); @@ -160,22 +159,22 @@ public class FishingOperationsUIHandler extends AbstractTuttiTabContainerUIHandl } } - // done here instead of in the action in order to update the headers - // when the operation is saved - String fishingOperationText = getFishingOperationTitle(newValue); - - EditFishingOperationUI efoUI = getUI().getFishingOperationTabContent(); - efoUI.getTraitGeneralTabPane().setTitle(fishingOperationText); - efoUI.getVesselUseFeatureTabPane().setTitle(fishingOperationText); - efoUI.getGearUseFeatureTabPane().setTitle(fishingOperationText); - - EditCatchesUI ecUI = getUI().getCatchesTabContent(); - ecUI.getCatchesCaracteristicsTabPane().setTitle(fishingOperationText); - ecUI.getSpeciesTabFishingOperationReminderLabel().setTitle(fishingOperationText); - ecUI.getBenthosTabFishingOperationReminderLabel().setTitle(fishingOperationText); - ecUI.getMarineLitterTabFishingOperationReminderLabel().setTitle(fishingOperationText); - ecUI.getAccidentalTabFishingOperationReminderLabel().setTitle(fishingOperationText); - ecUI.getIndividualObservationTabFishingOperationReminderLabel().setTitle(fishingOperationText); + // done here instead of in the action in order to update the headers + // when the operation is saved + String fishingOperationText = getFishingOperationTitle(newValue); + + EditFishingOperationUI efoUI = getUI().getFishingOperationTabContent(); + efoUI.getTraitGeneralTabPane().setTitle(fishingOperationText); + efoUI.getVesselUseFeatureTabPane().setTitle(fishingOperationText); + efoUI.getGearUseFeatureTabPane().setTitle(fishingOperationText); + + EditCatchesUI ecUI = getUI().getCatchesTabContent(); + ecUI.getCatchesCaracteristicsTabPane().setTitle(fishingOperationText); + ecUI.getSpeciesTabFishingOperationReminderLabel().setTitle(fishingOperationText); + ecUI.getBenthosTabFishingOperationReminderLabel().setTitle(fishingOperationText); + ecUI.getMarineLitterTabFishingOperationReminderLabel().setTitle(fishingOperationText); + ecUI.getAccidentalTabFishingOperationReminderLabel().setTitle(fishingOperationText); + } }); model.addPropertyChangeListener(FishingOperationsUIModel.PROPERTY_FISHING_OPERATION, evt -> { 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 d4392bc..c32d8a9 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 @@ -192,8 +192,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 @@ -213,7 +212,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(); } @@ -248,7 +246,6 @@ public class EditCatchesUIHandler extends AbstractTuttiTabContainerUIHandler<Edi closeUI(ui.getBenthosTabFrequencyEditor()); closeUI(ui.getMarineLitterTabContent()); closeUI(ui.getAccidentalTabContent()); - closeUI(ui.getIndividualObservationTabContent()); } @Override @@ -685,47 +682,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 be9b8a2..412d712 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 4d63da0..9c09685 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 9b5d481..410da8c 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 @@ -446,7 +446,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 d36287e..0000000 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIHandler.java +++ /dev/null @@ -1,758 +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.getAllIndividualObservationBatchsForFishingOperation(bean.getIdAsInt()); - - 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); - return !validator.hasErrorMessagess(); - } - - @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 bac444e..0000000 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/IndividualObservationBatchUIModel.java +++ /dev/null @@ -1,140 +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 java.util.stream.Collectors; - -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(); - result.addAll(getRows().stream().map(IndividualObservationBatchRowModel::getSpecies).collect(Collectors.toList())); - 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 abc5d98..0000000 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/actions/OpenCreateIndividualObservationBatchUIAction.java +++ /dev/null @@ -1,57 +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; - -/** - * Created on 3/7/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.15 - */ -public class OpenCreateIndividualObservationBatchUIAction extends SimpleActionSupport<IndividualObservationBatchUI> { - - 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 1c46006..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 - - Integer id = selectedBatch.getIdAsInt(); - - 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 5a76be2..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 - - Integer id = selectedBatch.getIdAsInt(); - - 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 7a60a45..0000000 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/individualobservation/create/CreateIndividualObservationBatchUIHandler.java +++ /dev/null @@ -1,412 +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.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, - 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, 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<>(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, 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, 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, - 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, - 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 7781ff3..8e968c5 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 78a94a8..1a3056a 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 18e412c..f2f67cf 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 daa06ad..334444c 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 @@ -449,7 +449,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 88e8b3a..7eb659a 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 @@ -781,9 +781,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 2338b6e..24a15bb 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; /** @@ -279,7 +281,7 @@ public abstract class AbstractTuttiTableUIHandler<R extends AbstractTuttiBeanUIM private ListSelectionListener tableSelectionListener; - private KeyAdapter keyAdapter; + private Map<JTable, KeyAdapter> keyAdapters = new HashMap<>(); protected void installTableSaveOnRowChangedSelectionListener() { @@ -367,11 +369,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 = @@ -382,7 +384,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) { @@ -423,6 +425,7 @@ public abstract class AbstractTuttiTableUIHandler<R extends AbstractTuttiBeanUIM } } }; + keyAdapters.put(table, keyAdapter); if (log.isDebugEnabled()) { log.debug("Intall " + keyAdapter); @@ -450,17 +453,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(); @@ -470,7 +474,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>.