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 cb2c5986bb53108357b1ae0e78e34fa622af9757 Author: Kevin Morin <morin@codelutin.com> Date: Thu Oct 23 12:13:31 2014 +0200 refs #5997 [IMPORT] Améliorer la gestion des référentiels temporaires add export existing data buttons (and replace button rows by combobox) --- .../filtered-resources/tutti-help-fr.properties | 29 +----- .../action/ExportExistingTemporaryGearAction.java | 1 + .../ExportExistingTemporaryPersonAction.java | 1 + .../ExportExistingTemporarySpeciesAction.java | 1 + .../ExportExistingTemporaryVesselAction.java | 1 + .../ui/swing/action/ImportTemporaryGearAction.java | 1 + .../swing/action/ImportTemporaryPersonAction.java | 1 + .../swing/action/ImportTemporarySpeciesAction.java | 1 + .../swing/action/ImportTemporaryVesselAction.java | 1 + .../action/OpenReplaceTemporaryGearUIAction.java | 5 + .../action/OpenReplaceTemporaryPersonUIAction.java | 6 +- .../OpenReplaceTemporarySpeciesUIAction.java | 5 + .../action/OpenReplaceTemporaryVesselUIAction.java | 5 + .../swing/content/home/SelectCruiseUIHandler.java | 11 +-- .../referential/ManageTemporaryReferentialUI.css | 52 ++++++++++ .../referential/ManageTemporaryReferentialUI.jaxx | 54 +++++++---- .../ManageTemporaryReferentialUIHandler.java | 108 ++++++++++++++++++++- .../ifremer/tutti/ui/swing/util/TuttiUIUtil.java | 13 ++- .../resources/i18n/tutti-ui-swing_en_GB.properties | 13 +++ .../resources/i18n/tutti-ui-swing_fr_FR.properties | 14 ++- 20 files changed, 266 insertions(+), 57 deletions(-) diff --git a/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties b/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties index 27f7d63..960983d 100644 --- a/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties +++ b/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties @@ -1,28 +1,5 @@ -### -# #%L -# Tutti :: UI -# $Id:$ -# $HeadURL:$ -# %% -# 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% -### #Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo -#Tue Sep 02 15:54:43 CEST 2014 +#Thu Oct 23 12:12:24 CEST 2014 tutti.config.help=config.html tutti.createAccidentalBatch.action.cancel.help=editFishingOperation.html\#captureCapturesAccidentellesActions tutti.createAccidentalBatch.action.saveAndClose.help=editFishingOperation.html\#captureCapturesAccidentellesActions @@ -357,6 +334,10 @@ tutti.main.menu.action.updateReport.help=menu.html\#menu_fichier tutti.main.menu.action.validateCatches.help=menu.html\#menu_action tutti.main.status.ichtyometer.help=menu.html\#status tutti.main.status.validation.help=menu.html\#status +tutti.manageTemporaryReferential.action.exportExistingTemporaryGear.help= +tutti.manageTemporaryReferential.action.exportExistingTemporaryPerson.help= +tutti.manageTemporaryReferential.action.exportExistingTemporarySpecies.help= +tutti.manageTemporaryReferential.action.exportExistingTemporaryVessel.help= tutti.manageTemporaryReferential.action.exportTemporaryGearExample.help=menu.html\#menu_administration_referentiel tutti.manageTemporaryReferential.action.exportTemporaryPersonExample.help=menu.html\#menu_administration_referentiel tutti.manageTemporaryReferential.action.exportTemporarySpeciesExample.help=menu.html\#menu_administration_referentiel diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportExistingTemporaryGearAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportExistingTemporaryGearAction.java index 3f03f94..c29a55e 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportExistingTemporaryGearAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportExistingTemporaryGearAction.java @@ -89,6 +89,7 @@ public class ExportExistingTemporaryGearAction extends AbstractTuttiAction<Tutti ReferentialExportService service = getContext().getTuttiReferentialExportService(); service.exportExistingTemporaryGear(file); + getHandler().resetExportGearsAction(); } @Override diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportExistingTemporaryPersonAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportExistingTemporaryPersonAction.java index 40ff64f..c7b5419 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportExistingTemporaryPersonAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportExistingTemporaryPersonAction.java @@ -90,6 +90,7 @@ public class ExportExistingTemporaryPersonAction extends AbstractTuttiAction<Tut ReferentialExportService service = getContext().getTuttiReferentialExportService(); service.exportExistingTemporaryPerson(file); + getHandler().resetExportPersonAction(); } @Override diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportExistingTemporarySpeciesAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportExistingTemporarySpeciesAction.java index aed0f77..3a8fa82 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportExistingTemporarySpeciesAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportExistingTemporarySpeciesAction.java @@ -89,6 +89,7 @@ public class ExportExistingTemporarySpeciesAction extends AbstractTuttiAction<Tu ReferentialExportService service = getContext().getTuttiReferentialExportService(); service.exportExistingTemporarySpecies(file); + getHandler().resetExportSpeciesAction(); } @Override diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportExistingTemporaryVesselAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportExistingTemporaryVesselAction.java index 267d803..60acd90 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportExistingTemporaryVesselAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ExportExistingTemporaryVesselAction.java @@ -89,6 +89,7 @@ public class ExportExistingTemporaryVesselAction extends AbstractTuttiAction<Tut ReferentialExportService service = getContext().getTuttiReferentialExportService(); service.exportExistingTemporaryVessel(file); + getHandler().resetExportVesselsAction(); } @Override diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportTemporaryGearAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportTemporaryGearAction.java index 775c0ca..ffb2617 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportTemporaryGearAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportTemporaryGearAction.java @@ -90,6 +90,7 @@ public class ImportTemporaryGearAction extends AbstractTuttiAction<TuttiUIContex // reset ui cache getDataContext().resetGears(); + getHandler().resetExportGearsAction(); } @Override diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportTemporaryPersonAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportTemporaryPersonAction.java index 3ed7033..e04b90e 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportTemporaryPersonAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportTemporaryPersonAction.java @@ -92,6 +92,7 @@ public class ImportTemporaryPersonAction extends AbstractTuttiAction<TuttiUICont // reset ui cache getDataContext().resetPersons(); + getHandler().resetExportPersonAction(); } @Override diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportTemporarySpeciesAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportTemporarySpeciesAction.java index a3d9107..f46de21 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportTemporarySpeciesAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportTemporarySpeciesAction.java @@ -91,6 +91,7 @@ public class ImportTemporarySpeciesAction extends AbstractTuttiAction<TuttiUICon // reset ui cache getDataContext().resetSpecies(); + getHandler().resetExportSpeciesAction(); } @Override diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportTemporaryVesselAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportTemporaryVesselAction.java index 1c9aac0..1752611 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportTemporaryVesselAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/ImportTemporaryVesselAction.java @@ -91,6 +91,7 @@ public class ImportTemporaryVesselAction extends AbstractTuttiAction<TuttiUICont // reset ui cache getDataContext().resetVessels(); + getHandler().resetExportVesselsAction(); } @Override diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/OpenReplaceTemporaryGearUIAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/OpenReplaceTemporaryGearUIAction.java index 4a6f2d9..f55b66d 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/OpenReplaceTemporaryGearUIAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/OpenReplaceTemporaryGearUIAction.java @@ -70,4 +70,9 @@ public class OpenReplaceTemporaryGearUIAction extends AbstractOpenReplaceTempora return targetList; } + @Override + public void doAction() throws Exception { + super.doAction(); + getHandler().resetExportGearsAction(); + } } \ No newline at end of file diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/OpenReplaceTemporaryPersonUIAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/OpenReplaceTemporaryPersonUIAction.java index b2f0a20..f594ed4 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/OpenReplaceTemporaryPersonUIAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/OpenReplaceTemporaryPersonUIAction.java @@ -69,5 +69,9 @@ public class OpenReplaceTemporaryPersonUIAction extends AbstractOpenReplaceTempo return targetList; } - + @Override + public void doAction() throws Exception { + super.doAction(); + getHandler().resetExportPersonAction(); + } } \ No newline at end of file diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/OpenReplaceTemporarySpeciesUIAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/OpenReplaceTemporarySpeciesUIAction.java index 0215077..ee8aa6f 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/OpenReplaceTemporarySpeciesUIAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/OpenReplaceTemporarySpeciesUIAction.java @@ -69,4 +69,9 @@ public class OpenReplaceTemporarySpeciesUIAction extends AbstractOpenReplaceTemp return targetList; } + @Override + public void doAction() throws Exception { + super.doAction(); + getHandler().resetExportSpeciesAction(); + } } \ No newline at end of file diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/OpenReplaceTemporaryVesselUIAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/OpenReplaceTemporaryVesselUIAction.java index 8d87ba7..b6e75af 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/OpenReplaceTemporaryVesselUIAction.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/action/OpenReplaceTemporaryVesselUIAction.java @@ -70,4 +70,9 @@ public class OpenReplaceTemporaryVesselUIAction extends AbstractOpenReplaceTempo return targetList; } + @Override + public void doAction() throws Exception { + super.doAction(); + getHandler().resetExportVesselsAction(); + } } \ No newline at end of file diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java index 1545c9d..65c8bcc 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java @@ -28,6 +28,7 @@ import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; +import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; import jaxx.runtime.swing.editor.bean.BeanFilterableComboBox; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.collections4.CollectionUtils; @@ -58,14 +59,6 @@ public class SelectCruiseUIHandler extends AbstractTuttiUIHandler<SelectCruiseUI private static final Log log = LogFactory.getLog(SelectCruiseUIHandler.class); - public static final MouseListener GRAB_FOCUS_ON_ENTER_LISTENER = new MouseAdapter() { - @Override - public void mouseEntered(MouseEvent e) { - JComponent source = (JComponent) e.getSource(); - source.grabFocus(); - } - }; - @Override public SwingValidator<SelectCruiseUIModel> getValidator() { return ui.getValidator(); @@ -350,6 +343,6 @@ public class SelectCruiseUIHandler extends AbstractTuttiUIHandler<SelectCruiseUI protected void initActionComboBox(JComboBox combo) { combo.putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE); - combo.addMouseListener(GRAB_FOCUS_ON_ENTER_LISTENER); + combo.addMouseListener(TuttiUIUtil.GRAB_FOCUS_ON_ENTER_LISTENER); } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUI.css b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUI.css index 02691e9..e340a55 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUI.css +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUI.css @@ -35,6 +35,11 @@ icon: {SwingUtil.createImageIcon("action-species.gif")}; } +#speciesActionComboBox { + model: {SwingUtil.newComboModel(exportSpeciesExampleButton, exportExistingSpeciesButton, importSpeciesButton, replaceSpeciesButton)}; + renderer: {new ActionListCellRenderer()}; +} + #exportSpeciesExampleButton { actionIcon: export; text: "tutti.manageTemporaryReferential.action.exportTemporarySpeciesExample"; @@ -43,6 +48,14 @@ _help: {"tutti.manageTemporaryReferential.action.exportTemporarySpeciesExample.help"}; } +#exportExistingSpeciesButton { + actionIcon: export; + text: "tutti.manageTemporaryReferential.action.exportExistingTemporarySpecies"; + _applicationAction: {fr.ifremer.tutti.ui.swing.action.ExportExistingTemporarySpeciesAction.class}; + toolTipText: "tutti.manageTemporaryReferential.action.exportExistingTemporarySpecies.tip"; + _help: {"tutti.manageTemporaryReferential.action.exportExistingTemporarySpecies.help"}; +} + #importSpeciesButton { actionIcon: import; text: "tutti.manageTemporaryReferential.action.importTemporarySpecies"; @@ -65,6 +78,11 @@ actionIcon: vessel; } +#vesselActionComboBox { + model: {SwingUtil.newComboModel(exportVesselExampleButton, exportExistingVesselButton, importVesselButton, replaceVesselButton)}; + renderer: {new ActionListCellRenderer()}; +} + #exportVesselExampleButton { actionIcon: export; text: "tutti.manageTemporaryReferential.action.exportTemporaryVesselExample"; @@ -73,6 +91,14 @@ _help: {"tutti.manageTemporaryReferential.action.exportTemporaryVesselExample.help"}; } +#exportExistingVesselButton { + actionIcon: export; + text: "tutti.manageTemporaryReferential.action.exportExistingTemporaryVessel"; + _applicationAction: {fr.ifremer.tutti.ui.swing.action.ExportExistingTemporaryVesselAction.class}; + toolTipText: "tutti.manageTemporaryReferential.action.exportExistingTemporaryVessel.tip"; + _help: {"tutti.manageTemporaryReferential.action.exportExistingTemporaryVessel.help"}; +} + #importVesselButton { actionIcon: import; text: "tutti.manageTemporaryReferential.action.importTemporaryVessel"; @@ -95,6 +121,11 @@ actionIcon: gear; } +#gearActionComboBox { + model: {SwingUtil.newComboModel(exportGearExampleButton, exportExistingGearButton, importGearButton, replaceGearButton)}; + renderer: {new ActionListCellRenderer()}; +} + #exportGearExampleButton { actionIcon: export; text: "tutti.manageTemporaryReferential.action.exportTemporaryGearExample"; @@ -103,6 +134,14 @@ _help: {"tutti.manageTemporaryReferential.action.exportTemporaryGearExample.help"}; } +#exportExistingGearButton { + actionIcon: export; + text: "tutti.manageTemporaryReferential.action.exportExistingTemporaryGear"; + _applicationAction: {fr.ifremer.tutti.ui.swing.action.ExportExistingTemporaryGearAction.class}; + toolTipText: "tutti.manageTemporaryReferential.action.exportExistingTemporaryGear.tip"; + _help: {"tutti.manageTemporaryReferential.action.exportExistingTemporaryGear.help"}; +} + #importGearButton { actionIcon: import; text: "tutti.manageTemporaryReferential.action.importTemporaryGear"; @@ -125,6 +164,19 @@ actionIcon: person; } +#personActionComboBox { + model: {SwingUtil.newComboModel(exportPersonExampleButton, exportExistingPersonButton, importPersonButton, replacePersonButton)}; + renderer: {new ActionListCellRenderer()}; +} + +#exportExistingPersonButton { + actionIcon: export; + text: "tutti.manageTemporaryReferential.action.exportExistingTemporaryPerson"; + _applicationAction: {fr.ifremer.tutti.ui.swing.action.ExportExistingTemporaryPersonAction.class}; + toolTipText: "tutti.manageTemporaryReferential.action.exportExistingTemporaryPerson.tip"; + _help: {"tutti.manageTemporaryReferential.action.exportExistingTemporaryPerson.help"}; +} + #exportPersonExampleButton { actionIcon: export; text: "tutti.manageTemporaryReferential.action.exportTemporaryPersonExample"; diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUI.jaxx b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUI.jaxx index 4b1bfbb..d4a1164 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUI.jaxx +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUI.jaxx @@ -29,6 +29,7 @@ fr.ifremer.tutti.ui.swing.TuttiUIContext fr.ifremer.tutti.ui.swing.util.TuttiUI fr.ifremer.tutti.ui.swing.util.TuttiUIUtil + org.nuiton.jaxx.application.swing.util.ActionListCellRenderer static org.nuiton.i18n.I18n.t </import> @@ -46,17 +47,33 @@ <TuttiHelpBroker id='broker' constructorParams='"tutti.manageTemporaryReferential.help"'/> + <JButton id='exportSpeciesExampleButton'/> + <JButton id='exportExistingSpeciesButton'/> + <JButton id='importSpeciesButton'/> + <JButton id='replaceSpeciesButton'/> + <JButton id='exportVesselExampleButton'/> + <JButton id='exportExistingVesselButton'/> + <JButton id='importVesselButton'/> + <JButton id='replaceVesselButton'/> + <JButton id='exportGearExampleButton'/> + <JButton id='exportExistingGearButton'/> + <JButton id='importGearButton'/> + <JButton id='replaceGearButton'/> + <JButton id='exportPersonExampleButton'/> + <JButton id='exportExistingPersonButton'/> + <JButton id='importPersonButton'/> + <JButton id='replacePersonButton'/> + <Table constraints='BorderLayout.CENTER'> <row> <cell> <JLabel id='speciesLabel'/> </cell> <cell> - <JPanel layout='{new GridLayout(1,0)}'> - <JButton id='exportSpeciesExampleButton'/> - <JButton id='importSpeciesButton'/> - <JButton id='replaceSpeciesButton'/> - </JPanel> + <JComboBox id='speciesActionComboBox' + onMouseEntered='speciesActionComboBox.showPopup()' + onMouseClicked='handler.startExportSpeciesAction(event)' + onActionPerformed='handler.startExportSpeciesAction(event)'/> </cell> </row> @@ -71,11 +88,10 @@ <JLabel id='vesselLabel'/> </cell> <cell> - <JPanel layout='{new GridLayout(1,0)}'> - <JButton id='exportVesselExampleButton'/> - <JButton id='importVesselButton'/> - <JButton id='replaceVesselButton'/> - </JPanel> + <JComboBox id='vesselActionComboBox' + onMouseEntered='vesselActionComboBox.showPopup()' + onMouseClicked='handler.startExportVesselsAction(event)' + onActionPerformed='handler.startExportVesselsAction(event)'/> </cell> </row> @@ -90,11 +106,10 @@ <JLabel id='gearLabel'/> </cell> <cell> - <JPanel layout='{new GridLayout(1,0)}'> - <JButton id='exportGearExampleButton'/> - <JButton id='importGearButton'/> - <JButton id='replaceGearButton'/> - </JPanel> + <JComboBox id='gearActionComboBox' + onMouseEntered='gearActionComboBox.showPopup()' + onMouseClicked='handler.startExportGearsAction(event)' + onActionPerformed='handler.startExportGearsAction(event)'/> </cell> </row> @@ -109,11 +124,10 @@ <JLabel id='personLabel'/> </cell> <cell> - <JPanel layout='{new GridLayout(1,0)}'> - <JButton id='exportPersonExampleButton'/> - <JButton id='importPersonButton'/> - <JButton id='replacePersonButton'/> - </JPanel> + <JComboBox id='personActionComboBox' + onMouseEntered='personActionComboBox.showPopup()' + onMouseClicked='handler.startExportPersonsAction(event)' + onActionPerformed='handler.startExportPersonsAction(event)'/> </cell> </row> diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUIHandler.java index db7edb9..d25f10c 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUIHandler.java @@ -24,11 +24,14 @@ package fr.ifremer.tutti.ui.swing.content.referential; import fr.ifremer.tutti.ui.swing.TuttiUIContext; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; +import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import javax.swing.JComponent; +import javax.swing.*; +import java.awt.event.ActionEvent; +import java.awt.event.MouseEvent; /** * @author tchemit <chemit@codelutin.com> @@ -55,6 +58,11 @@ public class ManageTemporaryReferentialUIHandler extends AbstractTuttiUIHandler< public void afterInit(ManageTemporaryReferentialUI ui) { initUI(ui); + + initActionComboBox(ui.getSpeciesActionComboBox()); + initActionComboBox(ui.getVesselActionComboBox()); + initActionComboBox(ui.getGearActionComboBox()); + initActionComboBox(ui.getPersonActionComboBox()); } @Override @@ -73,4 +81,102 @@ public class ManageTemporaryReferentialUIHandler extends AbstractTuttiUIHandler< public SwingValidator<TuttiUIContext> getValidator() { return null; } + + + protected boolean resetExportSpeciesAction; + protected boolean resetExportVesselsAction; + protected boolean resetExportGearsAction; + protected boolean resetExportPersonsAction; + + public void resetExportSpeciesAction() { + resetExportSpeciesAction = true; + try { + ui.getSpeciesActionComboBox().setSelectedIndex(0); + } finally { + resetExportSpeciesAction = false; + } + } + + public void resetExportVesselsAction() { + resetExportVesselsAction = true; + try { + ui.getVesselActionComboBox().setSelectedIndex(0); + } finally { + resetExportVesselsAction = false; + } + } + + public void resetExportGearsAction() { + resetExportGearsAction = true; + try { + ui.getGearActionComboBox().setSelectedIndex(0); + } finally { + resetExportGearsAction = false; + } + } + + public void resetExportPersonAction() { + resetExportSpeciesAction = true; + try { + ui.getPersonActionComboBox().setSelectedIndex(0); + } finally { + resetExportPersonsAction = false; + } + } + + public void startExportSpeciesAction(MouseEvent event) { + startComboFirstAction(event); + } + + public void startExportSpeciesAction(ActionEvent event) { + startEditAction(!resetExportSpeciesAction, event); + } + + public void startExportVesselsAction(MouseEvent event) { + startComboFirstAction(event); + } + + public void startExportVesselsAction(ActionEvent event) { + startEditAction(!resetExportVesselsAction, event); + } + + public void startExportGearsAction(MouseEvent event) { + startComboFirstAction(event); + } + + public void startExportGearsAction(ActionEvent event) { + startEditAction(!resetExportGearsAction, event); + } + + public void startExportPersonsAction(MouseEvent event) { + startComboFirstAction(event); + } + + public void startExportPersonsAction(ActionEvent event) { + startEditAction(!resetExportPersonsAction, event); + } + + protected void startComboFirstAction(MouseEvent event) { + JComboBox combo = (JComboBox) event.getSource(); + getContext().getActionEngine().runAction((AbstractButton) combo.getItemAt(0)); + } + + protected void startEditAction(boolean canEdit, ActionEvent event) { + if (canEdit) { + JComboBox existingCombo = (JComboBox) event.getSource(); + JButton selectedAction = (JButton) existingCombo.getSelectedItem(); + // hide popup before performing the action, otherwise, if the action + // opens a popup, the user must click a first time to hide the combobox + // popup to then interact with the popup opened by the action + // (see http://forge.codelutin.com/issues/2032) + existingCombo.setSelectedIndex(0); + existingCombo.hidePopup(); + getContext().getActionEngine().runAction(selectedAction); + } + } + + protected void initActionComboBox(JComboBox combo) { + combo.putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE); + combo.addMouseListener(TuttiUIUtil.GRAB_FOCUS_ON_ENTER_LISTENER); + } } diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java index 503f2c8..4f2b2b5 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java @@ -34,7 +34,10 @@ import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import javax.swing.ImageIcon; +import javax.swing.*; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; @@ -57,6 +60,14 @@ public final class TuttiUIUtil extends ApplicationUIUtil { // never instanciate util class } + public static final MouseListener GRAB_FOCUS_ON_ENTER_LISTENER = new MouseAdapter() { + @Override + public void mouseEntered(MouseEvent e) { + JComponent source = (JComponent) e.getSource(); + source.grabFocus(); + } + }; + public static TuttiUIContext getApplicationContext(JAXXObject ui) { return (TuttiUIContext) ApplicationUIUtil.getApplicationContext(ui); } diff --git a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties index 2133567..9bb9f24 100644 --- a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties +++ b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties @@ -1430,6 +1430,14 @@ tutti.manageTemporaryReferential.action.chooseReferentialVesselFile.export= tutti.manageTemporaryReferential.action.chooseReferentialVesselFile.export.success= tutti.manageTemporaryReferential.action.chooseReferentialVesselFile.import= tutti.manageTemporaryReferential.action.chooseReferentialVesselFile.import.success= +tutti.manageTemporaryReferential.action.exportExistingTemporaryGear= +tutti.manageTemporaryReferential.action.exportExistingTemporaryGear.tip= +tutti.manageTemporaryReferential.action.exportExistingTemporaryPerson= +tutti.manageTemporaryReferential.action.exportExistingTemporaryPerson.tip= +tutti.manageTemporaryReferential.action.exportExistingTemporarySpecies= +tutti.manageTemporaryReferential.action.exportExistingTemporarySpecies.tip= +tutti.manageTemporaryReferential.action.exportExistingTemporaryVessel= +tutti.manageTemporaryReferential.action.exportExistingTemporaryVessel.tip= tutti.manageTemporaryReferential.action.exportTemporaryGearExample= tutti.manageTemporaryReferential.action.exportTemporaryGearExample.tip= tutti.manageTemporaryReferential.action.exportTemporaryPersonExample= @@ -1467,6 +1475,10 @@ tutti.manageTemporaryReferential.passwordDialog.error.title= tutti.manageTemporaryReferential.passwordDialog.message= tutti.manageTemporaryReferential.passwordDialog.title= tutti.manageTemporaryReferential.title= +tutti.manageTemporaryReferential.title.choose.exportExistingTemporaryGearFile= +tutti.manageTemporaryReferential.title.choose.exportExistingTemporaryPersonFile= +tutti.manageTemporaryReferential.title.choose.exportExistingTemporarySpeciesFile= +tutti.manageTemporaryReferential.title.choose.exportExistingTemporaryVesselFile= tutti.manageTemporaryReferential.title.choose.exportTemporaryGearExampleFile= tutti.manageTemporaryReferential.title.choose.exportTemporaryPersonExampleFile= tutti.manageTemporaryReferential.title.choose.exportTemporarySpeciesExampleFile= @@ -1530,6 +1542,7 @@ tutti.reinstallDb.step.backupDb= tutti.reinstallDb.step.closeDb= tutti.reinstallDb.step.reloadApplication= tutti.replaceTemporary.done= +tutti.replaceTemporaryAndDelete.done= tutti.replaceTemporaryGear.done= tutti.replaceTemporaryGear.title= tutti.replaceTemporaryPerson.done= diff --git a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties index fb8f70d..ae28f8f 100644 --- a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties +++ b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties @@ -1382,6 +1382,14 @@ tutti.manageTemporaryReferential.action.chooseReferentialVesselFile.export=Expor tutti.manageTemporaryReferential.action.chooseReferentialVesselFile.export.success=Exemple de référentiel temporaire de navires exporté dans le fichier %s tutti.manageTemporaryReferential.action.chooseReferentialVesselFile.import=Importer tutti.manageTemporaryReferential.action.chooseReferentialVesselFile.import.success=Référentiel temporaire de navires importé depuis le fichier %s +tutti.manageTemporaryReferential.action.exportExistingTemporaryGear= +tutti.manageTemporaryReferential.action.exportExistingTemporaryGear.tip= +tutti.manageTemporaryReferential.action.exportExistingTemporaryPerson= +tutti.manageTemporaryReferential.action.exportExistingTemporaryPerson.tip= +tutti.manageTemporaryReferential.action.exportExistingTemporarySpecies= +tutti.manageTemporaryReferential.action.exportExistingTemporarySpecies.tip= +tutti.manageTemporaryReferential.action.exportExistingTemporaryVessel= +tutti.manageTemporaryReferential.action.exportExistingTemporaryVessel.tip= tutti.manageTemporaryReferential.action.exportTemporaryGearExample=Exporter tutti.manageTemporaryReferential.action.exportTemporaryGearExample.tip=Exporter un exemple de référentiel Engin tutti.manageTemporaryReferential.action.exportTemporaryPersonExample=Exporter @@ -1419,6 +1427,10 @@ tutti.manageTemporaryReferential.passwordDialog.error.title=Mot de passe incorre tutti.manageTemporaryReferential.passwordDialog.message=Vous souhaitez entrer dans une partie sensible de l'application tutti.manageTemporaryReferential.passwordDialog.title=Zone sensible tutti.manageTemporaryReferential.title=importer des référentiels temporaires +tutti.manageTemporaryReferential.title.choose.exportExistingTemporaryGearFile= +tutti.manageTemporaryReferential.title.choose.exportExistingTemporaryPersonFile= +tutti.manageTemporaryReferential.title.choose.exportExistingTemporarySpeciesFile= +tutti.manageTemporaryReferential.title.choose.exportExistingTemporaryVesselFile= tutti.manageTemporaryReferential.title.choose.exportTemporaryGearExampleFile=Exporter un exemple de référentiel Engin tutti.manageTemporaryReferential.title.choose.exportTemporaryPersonExampleFile=Exporter un exemple de référentiel Personne tutti.manageTemporaryReferential.title.choose.exportTemporarySpeciesExampleFile=Exporter un exemple de référentiel Espèce @@ -1461,8 +1473,8 @@ tutti.reimport.step.reloadApplication=Redémarrage de l'application... tutti.reinstallDb.step.backupDb=Sauvegarde de la base dans l'archive %s tutti.reinstallDb.step.closeDb=Fermeture de la base <strong>%s</strong> tutti.reinstallDb.step.reloadApplication=Redémarrage de l'application... -tutti.replaceTemporaryAndDelete.done=<html><body>Le référentiel temporaire de type %s <strong>%s</strong> a été remplacée par <strong>%s</strong> puis supprimé. tutti.replaceTemporary.done=<html><body>Le référentiel temporaire de type %s <strong>%s</strong> a été remplacée par <strong>%s</strong> +tutti.replaceTemporaryAndDelete.done=<html><body>Le référentiel temporaire de type %s <strong>%s</strong> a été remplacée par <strong>%s</strong> puis supprimé. tutti.replaceTemporaryGear.title=Remplacer un engin temporaire tutti.replaceTemporaryPerson.title=Remplacer un utilisateur temporaire tutti.replaceTemporaryReferential.action.cancel=Annuler -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.