r556 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing/config java/fr/ifremer/tutti/ui/swing/content java/fr/ifremer/tutti/ui/swing/content/cruise java/fr/ifremer/tutti/ui/swing/content/db java/fr/ifremer/tutti/ui/swing/content/home java/fr/ifremer/tutti/ui/swing/content/operation/catches java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split java/fr/ifremer/tutti/ui/swing/content/program java/fr/ifremer/tutti/ui/swing/content/protocol java/fr/ifremer/tutti/u
Author: tchemit Date: 2013-03-06 23:07:26 +0100 (Wed, 06 Mar 2013) New Revision: 556 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/556 Log: fixes #2090: [TECH] Ajout d'une action longue pour la fermeture de l'application refs #2075: [TECH] Action longue (probl?\195?\168me de cin?\195?\169matique) (erreurs r?\195?\169affich?\195?\169es) placement des pi?\195?\168ces-jointes dans la barre du haut (cruise) am?\195?\169lioration des messages de confirmations Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/CloseApplicationAction.java Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigUI.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/AbstractChangeScreenAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/CancelEditCruiseAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ExportDbAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ComputeWeightsAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/AddSpeciesAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/CancelEditProgramAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CancelEditProtocolAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportAllCaracteristicAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportProtocolCaracteristicAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportProtocolSpeciesAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolCaracteristicAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolSpeciesAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryGearExampleAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryPersonExampleAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporarySpeciesExampleAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryVesselExampleAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryGearAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryPersonAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporarySpeciesAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryVesselAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/CloseableUI.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/AbstractTuttiAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiUIAction.java trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigUI.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigUI.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/config/TuttiConfigUI.java 2013-03-06 22:07:26 UTC (rev 556) @@ -66,6 +66,8 @@ @Override public void run() { + + //FIXME Should be a long action? reloadUI(); } } @@ -76,6 +78,8 @@ @Override public void run() { + + //FIXME Should be a long action? reloadApplication(); } } @@ -87,6 +91,7 @@ @Override public void run() { + //FIXME Should be a long action? reloadShortcuts(); } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/AbstractChangeScreenAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/AbstractChangeScreenAction.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/AbstractChangeScreenAction.java 2013-03-06 22:07:26 UTC (rev 556) @@ -39,8 +39,20 @@ */ public abstract class AbstractChangeScreenAction extends AbstractMainUITuttiAction { + /** + * Screen where to go. + * + * @since 1.0 + */ protected final TuttiScreen screen; + /** + * Flag to skip the check of current screen. + * + * @since 1.1 + */ + protected boolean skipCheckCurrentScreen; + protected AbstractChangeScreenAction(MainUIHandler handler, String icon, String text, @@ -51,10 +63,14 @@ this.screen = screen; } + public void setSkipCheckCurrentScreen(boolean skipCheckCurrentScreen) { + this.skipCheckCurrentScreen = skipCheckCurrentScreen; + } + @Override protected boolean prepareAction() { boolean result = super.prepareAction(); - result &= getHandler().quitCurrentScreen(); + result &= skipCheckCurrentScreen || getHandler().quitCurrentScreen(); return result; } Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/CloseApplicationAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/CloseApplicationAction.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/CloseApplicationAction.java 2013-03-06 22:07:26 UTC (rev 556) @@ -0,0 +1,54 @@ +package fr.ifremer.tutti.ui.swing.content; + +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 - 2013 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.RunTutti; + +import static org.nuiton.i18n.I18n._; + +/** + * To close Tutti Application. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.1 + */ +public class CloseApplicationAction extends AbstractChangeScreenAction { + + public CloseApplicationAction(MainUIHandler handler) { + super(handler, + "exit", + _("tutti.action.exit"), + _("tutti.action.exit.tip"), + false, + null); + setSkipCheckCurrentScreen(true); + } + + @Override + protected void doAction() { + + RunTutti.closeTutti(getUI(), true); + } +} Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/CloseApplicationAction.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUI.css 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUI.css 2013-03-06 22:07:26 UTC (rev 556) @@ -45,9 +45,7 @@ } #menuFileExit { - text: "tutti.action.exit"; - toolTipText: "tutti.action.exit.tip"; - actionIcon: exit; + _tuttiAction: {CloseApplicationAction.class}; } #menuActionUpdate { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUI.jaxx 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUI.jaxx 2013-03-06 22:07:26 UTC (rev 556) @@ -21,7 +21,7 @@ <http://www.gnu.org/licenses/gpl-3.0.html>. #L% --> -<JFrame id='mainFrame' onWindowClosing='getHandler().closeTutti()' +<JFrame id='mainFrame' onWindowClosing='menuFileExit.getAction().actionPerformed(null)' implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<TuttiUIContext, MainUIHandler>' width='800' height='600'> @@ -63,8 +63,7 @@ <JSeparator/> <JMenuItem id='menuActionManageDb'/> <JSeparator/> - <JMenuItem id='menuFileExit' - onActionPerformed='getHandler().closeTutti()'/> + <JMenuItem id='menuFileExit'/> </JMenu> <JMenu id='menuActions'> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/MainUIHandler.java 2013-03-06 22:07:26 UTC (rev 556) @@ -160,10 +160,6 @@ //-- Public methods --// //------------------------------------------------------------------------// - public void closeTutti() { - RunTutti.closeTutti(ui, true); - } - public void reloadTutti() { // Close the application @@ -186,24 +182,6 @@ configUI.createUI(); } - public void showManageProtocol() { - context.setScreen(TuttiScreen.EDIT_PROTOCOL); - } - - public void showSelectCampaign() { - context.setScreen(TuttiScreen.SELECT_CRUISE); - } - - public void showFillCatches() { - context.setValidationContext(TuttiUIContext.VALIDATION_CONTEXT_EDIT); - context.setScreen(TuttiScreen.EDIT_FISHING_OPERATION); - } - - public void showValidateCatches() { - context.setValidationContext(TuttiUIContext.VALIDATION_CONTEXT_VALIDATE); - context.setScreen(TuttiScreen.EDIT_FISHING_OPERATION); - } - public void showAbout() { ApplicationConfig applicationConfig = @@ -339,11 +317,8 @@ if (screen != null) { - String programId = context.getProgramId(); - String cruiseId = context.getCruiseId(); - String protocolId = context.getProtocolId(); - JComponent screenUI; + JComponent rightDecoration=null; String screenTitle; Icon icon; @@ -365,10 +340,10 @@ case EDIT_PROGRAM: - if (programId == null) { - screenTitle = _("tutti.title.create.program"); - } else { + if (context.isProgramFilled()) { screenTitle = _("tutti.title.edit.program"); + } else { + screenTitle = _("tutti.title.create.program"); } screenUI = new EditProgramUI(ui); @@ -377,22 +352,23 @@ case EDIT_CRUISE: - if (cruiseId == null) { - screenTitle = _("tutti.title.create.cruise"); - } else { + if (context.isCruiseFilled()) { screenTitle = _("tutti.title.edit.cruise"); + } else { + screenTitle = _("tutti.title.create.cruise"); } screenUI = new EditCruiseUI(ui); + rightDecoration = ((EditCruiseUI)screenUI).getTopToolBar(); icon = ui.getMenuActionEditCruise().getIcon(); break; case EDIT_PROTOCOL: - if (protocolId == null) { - screenTitle = _("tutti.title.create.protocol"); - } else { + if (context.isProgramFilled()) { screenTitle = _("tutti.title.edit.protocol"); + } else { + screenTitle = _("tutti.title.create.protocol"); } screenUI = new EditProtocolUI(ui); @@ -430,6 +406,7 @@ ui.getBody().setTitle(screenTitle); ui.getBody().add(currentBody); ui.getBody().setLeftDecoration(new JLabel(icon)); + ui.getBody().setRightDecoration(rightDecoration); } } catch (Exception e) { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/CancelEditCruiseAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/CancelEditCruiseAction.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/CancelEditCruiseAction.java 2013-03-06 22:07:26 UTC (rev 556) @@ -46,6 +46,7 @@ true, TuttiScreen.SELECT_CRUISE ); + setSkipCheckCurrentScreen(true); } } \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css 2013-03-06 22:07:26 UTC (rev 556) @@ -22,10 +22,6 @@ * #L% */ -JToolBar { - floatable: false; -} - BeanComboBox { showReset: true; i18nPrefix: "tutti.property."; @@ -211,6 +207,12 @@ enabled: {model.isCanGenerateName()}; } +#topToolBar { + floatable: false; + opaque: true; + borderPainted: true; +} + #attachmentsButton { enabled: {model.getId() != null}; } \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx 2013-03-06 22:07:26 UTC (rev 556) @@ -95,8 +95,12 @@ <field name='comment' component='commentPane'/> </BeanValidator> - <Table fill='both'> + <JToolBar id='topToolBar'> + <JButton id='attachmentsButton'/> + </JToolBar> + <Table fill='both' constraints='BorderLayout.CENTER'> + <!-- cruise program / year / program part / name --> <row> <cell anchor='west'> @@ -219,12 +223,9 @@ <!-- Form Actions --> <row> <cell columns='6'> - <JPanel layout='{new GridLayout(0,1)}'> - <JButton id='attachmentsButton'/> - <JPanel layout='{new GridLayout(1, 0)}'> - <JButton id='cancelButton'/> - <JButton id='saveButton'/> - </JPanel> + <JPanel layout='{new GridLayout(1, 0)}'> + <JButton id='cancelButton'/> + <JButton id='saveButton'/> </JPanel> </cell> </row> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-03-06 22:07:26 UTC (rev 556) @@ -230,7 +230,7 @@ boolean result = quitScreen( getModel().isValid(), getModel().isModify(), - _("tutti.dialog.askCancelEditBeforeLeaving.saveCruise"), + _("tutti.dialog.askCancelEditBeforeLeaving.cancelSaveCruise"), _("tutti.dialog.askSaveBeforeLeaving.saveCruise"), ui.getSaveButton().getAction() ); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ExportDbAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ExportDbAction.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ExportDbAction.java 2013-03-06 22:07:26 UTC (rev 556) @@ -70,7 +70,6 @@ getContext().getMainUI(), _("tutti.title.choose.dbExportFile"), _("tutti.action.chooseDbExportFile"), - null, "^.*\\.zip", _("tutti.file.zip") ); if (file == null) { @@ -82,9 +81,8 @@ // add extension if missing file = TuttiIOUtil.addExtensionIfMissing(file, ".zip"); - // ask user to confirm overwrite. - doAction = TuttiUIUtil.askOverwriteFile(getUI(), file); + doAction = getHandler().askOverwriteFile(file); } } return doAction; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java 2013-03-06 22:07:26 UTC (rev 556) @@ -72,12 +72,14 @@ getContext().getMainUI(), _("tutti.title.choose.protocolExportFile"), _("tutti.action.chooseProtocolFile"), - null, "^.+\\.tuttiProtocol$", _("tutti.file.protocol") ); doAction = file != null; if (doAction) { file = TuttiIOUtil.addExtensionIfMissing(file, ".tuttiProtocol"); + + // ask user to confirm overwrite. + doAction = getHandler().askOverwriteFile(file); } } return doAction; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java 2013-03-06 22:07:26 UTC (rev 556) @@ -76,7 +76,6 @@ getContext().getMainUI(), _("tutti.title.choose.protocolImportFile"), _("tutti.action.chooseProtocolFile"), - null, "^.+\\.tuttiProtocol$", _("tutti.file.protocol") ); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx 2013-03-06 22:07:26 UTC (rev 556) @@ -85,9 +85,7 @@ <cell> <JPanel layout='{new GridLayout(1,0)}'> <JButton id='editProgramButton'/> - <!--onActionPerformed='handler.showSelectedProgram()'/>--> <JButton id='newProgramButton'/> - <!--onActionPerformed='handler.showNewProgram()'/>--> </JPanel> </cell> </row> @@ -102,9 +100,7 @@ <cell> <JPanel layout='{new GridLayout(1,0)}'> <JButton id='editCruiseButton'/> - <!--onActionPerformed='handler.showSelectedCruise()'/>--> <JButton id='newCruiseButton'/> - <!--onActionPerformed='handler.showNewCruise()'/>--> </JPanel> </cell> </row> @@ -133,9 +129,7 @@ <cell columns='3'> <JPanel layout='{new GridLayout(1,0)}'> <JButton id='editCatchesButton'/> - <!--onActionPerformed='handler.showFillCatches()'/>--> <JButton id='validateCatchesButton'/> - <!--onActionPerformed='handler.showValidateCatches()'/>--> </JPanel> </cell> </row> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-03-06 22:07:26 UTC (rev 556) @@ -109,7 +109,8 @@ } } - List<TuttiProtocol> protocols = persistenceService.getAllProtocol(); + List<TuttiProtocol> protocols = + Lists.newArrayList(persistenceService.getAllProtocol()); model.setProtocols(protocols); if (protocols.isEmpty()) { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ComputeWeightsAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ComputeWeightsAction.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ComputeWeightsAction.java 2013-03-06 22:07:26 UTC (rev 556) @@ -11,15 +11,15 @@ * %% * 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 + * 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 + * + * 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% Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/AddSpeciesAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/AddSpeciesAction.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/AddSpeciesAction.java 2013-03-06 22:07:26 UTC (rev 556) @@ -11,15 +11,15 @@ * %% * 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 + * 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 + * + * 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% Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIHandler.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIHandler.java 2013-03-06 22:07:26 UTC (rev 556) @@ -10,15 +10,15 @@ * %% * 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 + * 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 + * + * 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% Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/CancelEditProgramAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/CancelEditProgramAction.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/CancelEditProgramAction.java 2013-03-06 22:07:26 UTC (rev 556) @@ -46,6 +46,7 @@ true, TuttiScreen.SELECT_CRUISE ); + setSkipCheckCurrentScreen(true); } } \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java 2013-03-06 22:07:26 UTC (rev 556) @@ -129,7 +129,7 @@ boolean result = quitScreen( getModel().isValid(), getModel().isModify(), - _("tutti.dialog.askCancelEditBeforeLeaving.saveProgram"), + _("tutti.dialog.askCancelEditBeforeLeaving.cancelSaveProgram"), _("tutti.dialog.askSaveBeforeLeaving.saveProgram"), ui.getSaveButton().getAction() ); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CancelEditProtocolAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CancelEditProtocolAction.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CancelEditProtocolAction.java 2013-03-06 22:07:26 UTC (rev 556) @@ -45,6 +45,7 @@ _("tutti.action.cancel.editProtocol.tip"), true, TuttiScreen.SELECT_CRUISE); + setSkipCheckCurrentScreen(true); } } \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-03-06 22:07:26 UTC (rev 556) @@ -153,18 +153,19 @@ List<Species> allSpecies = Lists.newArrayList(getDataContext().getSpecies()); model.setAllSpecies(allSpecies); + Multimap<String, Species> allSpeciesByTaxonId = TuttiEntities.splitByReferenceTaxonId(allSpecies); + model.setAllSpeciesByTaxonId(allSpeciesByTaxonId); - model.setAllSpeciesByTaxonId(allSpeciesByTaxonId); Map<String, Species> allReferentSpeciesByTaxonId = TuttiEntities.splitByTaxonId( getDataContext().getReferentSpecies()); + model.setAllReferentSpeciesByTaxonId(allReferentSpeciesByTaxonId); - model.setAllReferentSpeciesByTaxonId(allReferentSpeciesByTaxonId); - List<TuttiProtocol> protocols = persistenceService.getAllProtocol(); + List<TuttiProtocol> protocols = Lists.newArrayList(persistenceService.getAllProtocol()); model.setExistingProtocols(protocols); - List<Caracteristic> caracteristics = getDataContext().getCaracteristics(); + List<Caracteristic> caracteristics = Lists.newArrayList(getDataContext().getCaracteristics()); model.setCaracteristics(caracteristics); Map<String, Caracteristic> allCaracteristic = TuttiEntities.splitById(caracteristics); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportAllCaracteristicAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportAllCaracteristicAction.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportAllCaracteristicAction.java 2013-03-06 22:07:26 UTC (rev 556) @@ -71,7 +71,6 @@ getContext().getMainUI(), _("tutti.title.choose.protocolCaracteristicExportFile"), _("tutti.action.chooseProtocolCaracteristicFile"), - null, "^.*\\.csv", _("tutti.file.csv") ); if (file == null) { @@ -82,6 +81,9 @@ // add extension if missing file = TuttiIOUtil.addExtensionIfMissing(file, ".csv"); + + // ask user to confirm overwrite. + doAction = getHandler().askOverwriteFile(file); } } return doAction; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportProtocolCaracteristicAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportProtocolCaracteristicAction.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportProtocolCaracteristicAction.java 2013-03-06 22:07:26 UTC (rev 556) @@ -72,7 +72,6 @@ getContext().getMainUI(), _("tutti.title.choose.protocolCaracteristicExportFile"), _("tutti.action.chooseProtocolCaracteristicFile"), - null, "^.*\\.csv", _("tutti.file.csv") ); if (file == null) { @@ -83,6 +82,9 @@ // add extension if missing file = TuttiIOUtil.addExtensionIfMissing(file, ".csv"); + + // ask user to confirm overwrite. + doAction = getHandler().askOverwriteFile(file); } } return doAction; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportProtocolSpeciesAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportProtocolSpeciesAction.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportProtocolSpeciesAction.java 2013-03-06 22:07:26 UTC (rev 556) @@ -74,7 +74,6 @@ getContext().getMainUI(), _("tutti.title.choose.protocolSpeciesExportFile"), _("tutti.action.chooseProtocolSpeciesFile"), - null, "^.*\\.csv", _("tutti.file.csv") ); if (file == null) { @@ -85,6 +84,9 @@ // add extension if missing file = TuttiIOUtil.addExtensionIfMissing(file, ".csv"); + + // ask user to confirm overwrite. + doAction = getHandler().askOverwriteFile(file); } } return doAction; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolCaracteristicAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolCaracteristicAction.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolCaracteristicAction.java 2013-03-06 22:07:26 UTC (rev 556) @@ -71,7 +71,6 @@ getContext().getMainUI(), _("tutti.title.choose.protocolCaracteristicImportFile"), _("tutti.action.chooseProtocolCaracteristicFile"), - null, "^.*\\.csv", _("tutti.file.csv") ); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolSpeciesAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolSpeciesAction.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolSpeciesAction.java 2013-03-06 22:07:26 UTC (rev 556) @@ -74,7 +74,6 @@ getContext().getMainUI(), _("tutti.title.choose.protocolSpeciesImportFile"), _("tutti.action.chooseProtocolSpeciesFile"), - null, "^.*\\.csv", _("tutti.file.csv") ); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryGearExampleAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryGearExampleAction.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryGearExampleAction.java 2013-03-06 22:07:26 UTC (rev 556) @@ -72,7 +72,6 @@ getContext().getMainUI(), _("tutti.title.choose.exportTemporaryGearExampleFile"), _("tutti.action.chooseReferentialGearFile"), - null, "^.*\\.csv", _("tutti.file.csv") ); if (file == null) { @@ -83,6 +82,9 @@ // add extension if missing file = TuttiIOUtil.addExtensionIfMissing(file, ".csv"); + + // ask user to confirm overwrite. + doAction = getHandler().askOverwriteFile(file); } } return doAction; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryPersonExampleAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryPersonExampleAction.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryPersonExampleAction.java 2013-03-06 22:07:26 UTC (rev 556) @@ -73,7 +73,6 @@ getContext().getMainUI(), _("tutti.title.choose.exportTemporaryPersonExampleFile"), _("tutti.action.chooseReferentialPersonFile"), - null, "^.*\\.csv", _("tutti.file.csv") ); if (file == null) { @@ -84,6 +83,9 @@ // add extension if missing file = TuttiIOUtil.addExtensionIfMissing(file, ".csv"); + + // ask user to confirm overwrite. + doAction = getHandler().askOverwriteFile(file); } } return doAction; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporarySpeciesExampleAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporarySpeciesExampleAction.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporarySpeciesExampleAction.java 2013-03-06 22:07:26 UTC (rev 556) @@ -72,7 +72,6 @@ getContext().getMainUI(), _("tutti.title.choose.exportTemporarySpeciesExampleFile"), _("tutti.action.chooseReferentialSpeciesFile"), - null, "^.*\\.csv", _("tutti.file.csv") ); if (file == null) { @@ -83,6 +82,9 @@ // add extension if missing file = TuttiIOUtil.addExtensionIfMissing(file, ".csv"); + + // ask user to confirm overwrite. + doAction = getHandler().askOverwriteFile(file); } } return doAction; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryVesselExampleAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryVesselExampleAction.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryVesselExampleAction.java 2013-03-06 22:07:26 UTC (rev 556) @@ -72,7 +72,6 @@ getContext().getMainUI(), _("tutti.title.choose.exportTemporaryVesselExampleFile"), _("tutti.action.chooseReferentialVesselFile"), - null, "^.*\\.csv", _("tutti.file.csv") ); if (file == null) { @@ -83,6 +82,9 @@ // add extension if missing file = TuttiIOUtil.addExtensionIfMissing(file, ".csv"); + + // ask user to confirm overwrite. + doAction = getHandler().askOverwriteFile(file); } } return doAction; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryGearAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryGearAction.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryGearAction.java 2013-03-06 22:07:26 UTC (rev 556) @@ -71,7 +71,6 @@ getContext().getMainUI(), _("tutti.title.choose.importTemporaryGearFile"), _("tutti.action.chooseReferentialGearFile"), - null, "^.*\\.csv", _("tutti.file.csv")); doAction = file != null; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryPersonAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryPersonAction.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryPersonAction.java 2013-03-06 22:07:26 UTC (rev 556) @@ -71,7 +71,6 @@ getContext().getMainUI(), _("tutti.title.choose.importTemporaryPersonFile"), _("tutti.action.chooseReferentialPersonFile"), - null, "^.*\\.csv", _("tutti.file.csv")); doAction = file != null; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporarySpeciesAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporarySpeciesAction.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporarySpeciesAction.java 2013-03-06 22:07:26 UTC (rev 556) @@ -70,7 +70,6 @@ getContext().getMainUI(), _("tutti.title.choose.importTemporarySpeciesFile"), _("tutti.action.chooseReferentialSpeciesFile"), - null, "^.*\\.csv", _("tutti.file.csv")); doAction = file != null; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryVesselAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryVesselAction.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryVesselAction.java 2013-03-06 22:07:26 UTC (rev 556) @@ -70,7 +70,6 @@ getContext().getMainUI(), _("tutti.title.choose.importTemporaryVesselFile"), _("tutti.action.chooseReferentialVesselFile"), - null, "^.*\\.csv", _("tutti.file.csv")); doAction = file != null; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java 2013-03-06 22:07:26 UTC (rev 556) @@ -10,15 +10,15 @@ * %% * 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 + * 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 + * + * 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% @@ -84,16 +84,15 @@ import java.awt.event.KeyEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; -import java.awt.event.WindowListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; +import java.io.File; import java.io.Serializable; import java.text.ParseException; import java.util.Date; import java.util.List; import java.util.Map; import java.util.Set; -import javax.swing.SwingUtilities; import static org.nuiton.i18n.I18n._; @@ -226,9 +225,9 @@ } JDialog result; if (window instanceof Frame) { - result = new JDialog((Frame)window, title, true); + result = new JDialog((Frame) window, title, true); } else { - result = new JDialog((Dialog)window, title, true); + result = new JDialog((Dialog) window, title, true); } result.add((Component) dialogContent); @@ -276,22 +275,61 @@ SwingUtil.getParentContainer(ui, JDialog.class).setVisible(false); } + public static final String CONFIRMATION_FORMAT = "<html>%s<hr/><br/>%s</html>"; + public int askSaveBeforeLeaving(String message) { + String htmlMessage = String.format( + CONFIRMATION_FORMAT, + message, + _("tutti.dialog.askSaveBeforeLeaving.help")); int result = JOptionPane.showConfirmDialog( getContext().getMainUI(), - message, + htmlMessage, _("tutti.dialog.askSaveBeforeLeaving.title"), JOptionPane.YES_NO_CANCEL_OPTION); return result; } public boolean askCancelEditBeforeLeaving(String message) { - boolean result = TuttiUIUtil.askQuestion( + String htmlMessage = String.format( + CONFIRMATION_FORMAT, + message, + _("tutti.dialog.askCancelEditBeforeLeaving.help")); + int i = JOptionPane.showConfirmDialog( getContext().getMainUI(), - message, - _("tutti.dialog.askCancelEditBeforeLeaving.title")); + htmlMessage, + _("tutti.dialog.askCancelEditBeforeLeaving.title"), + JOptionPane.OK_CANCEL_OPTION, + JOptionPane.WARNING_MESSAGE); + + boolean result = i == JOptionPane.OK_OPTION; return result; } + + public boolean askOverwriteFile(File file) { + boolean result; + if (file.exists()) { + + // file exists ask user to overwrite + String htmlMessage = String.format( + CONFIRMATION_FORMAT, + _("tutti.dialog.askOverwriteFile.message", file), + _("tutti.dialog.askOverwriteFile.help")); + + result = JOptionPane.showConfirmDialog( + getContext().getMainUI(), + htmlMessage, + _("tutti.dialog.askOverwriteFile.title"), + JOptionPane.OK_CANCEL_OPTION, + JOptionPane.INFORMATION_MESSAGE) == JOptionPane.OK_OPTION; + } else { + + // file does not exist + result = true; + } + + return result; + } //------------------------------------------------------------------------// //-- Internal methods --// //------------------------------------------------------------------------// Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/CloseableUI.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/CloseableUI.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/CloseableUI.java 2013-03-06 22:07:26 UTC (rev 556) @@ -1,5 +1,29 @@ package fr.ifremer.tutti.ui.swing.util; +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 - 2013 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% + */ + /** * Contract to close an ui. * Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/CloseableUI.java ___________________________________________________________________ Modified: svn:keywords - Author Date Id Revision + Author Date Id Revision HeadURL Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java 2013-03-06 22:07:26 UTC (rev 556) @@ -26,7 +26,6 @@ import com.google.common.base.Preconditions; import fr.ifremer.tutti.TuttiTechnicalException; -import fr.ifremer.tutti.ui.swing.content.MainUI; import jaxx.runtime.JAXXUtil; import org.apache.commons.beanutils.PropertyUtils; import org.apache.commons.lang3.time.DurationFormatUtils; @@ -66,7 +65,6 @@ * @param parent le component swing appelant le controle * @param title le titre du dialogue de sélection * @param buttonLabel le label du boutton d'acceptation - * @param incoming le fichier de base à utilier * @param filters les filtres + descriptions sur le sélecteur de * fichiers * @return le fichier choisi ou le fichier incoming si l'opération a été @@ -75,27 +73,17 @@ public static File chooseFile(Component parent, String title, String buttonLabel, - File incoming, String... filters) { - File oldBasedir = FileUtil.getCurrentDirectory(); - if (incoming != null) { - File basedir; - if (incoming.isFile()) { - basedir = incoming.getParentFile(); - } else { - basedir = incoming; - } - if (basedir.exists()) { - FileUtil.setCurrentDirectory(basedir); - } - } + File file = FileUtil.getFile(title, buttonLabel, parent, filters); if (log.isDebugEnabled()) { log.debug(title + " : " + file); } - FileUtil.setCurrentDirectory(oldBasedir); - File result = file == null ? incoming : file; - return result; + if (file != null) { + File newDir = file.isDirectory() ? file : file.getParentFile(); + FileUtil.setCurrentDirectory(newDir); + } + return file; } /** @@ -104,35 +92,28 @@ * @param parent le component swing appelant le controle * @param title le titre de la boite de dialogue de sléection * @param buttonLabel le label de l'action d'acceptation - * @param incoming le fichier de base à utiliser * @return le répertoire choisi ou le répertoire incoming si l'opération a * été annulée */ public static File chooseDirectory(Component parent, String title, - String buttonLabel, - File incoming) { - File oldBasedir = FileUtil.getCurrentDirectory(); - if (incoming != null) { - File basedir; - if (incoming.isFile()) { - basedir = incoming.getParentFile(); - } else { - basedir = incoming; - } - if (basedir.exists()) { - FileUtil.setCurrentDirectory(basedir); - } - } + String buttonLabel) { + String file = FileUtil.getDirectory(parent, title, buttonLabel); if (log.isDebugEnabled()) { log.debug(title + " : " + file); } - FileUtil.setCurrentDirectory(oldBasedir); - return file == null ? incoming : new File(file); + if (file != null) { + File newDir = new File(file); + if (!newDir.isDirectory()) { + newDir = newDir.getParentFile(); + } + FileUtil.setCurrentDirectory(newDir); + } + return file == null ? null : new File(file); } - public static void showSuccessMessage(Component ui,String title, String message) { + public static void showSuccessMessage(Component ui, String title, String message) { JOptionPane.showMessageDialog( ui, message, @@ -142,25 +123,6 @@ ); } - public static void showErrorMessage(Component ui, String message) { - JOptionPane.showMessageDialog( - ui, - message, - "Error", - JOptionPane.ERROR_MESSAGE, - UIManager.getIcon("error") - ); - } - - public static boolean askQuestion(Component ui, String title, String message) { - int i = JOptionPane.showConfirmDialog( - ui, - message, - title, - JOptionPane.YES_NO_OPTION); - return i == JOptionPane.YES_OPTION; - } - public static void setProperty(Object bean, String property, Object value) { Preconditions.checkNotNull(bean); Preconditions.checkNotNull(property); @@ -239,12 +201,4 @@ return textValue; } - public static boolean askOverwriteFile(MainUI ui, File file) { - boolean result = - !file.exists() || - askQuestion(ui, - _("tutti.dialog.askOverwriteFile.title"), - _("tutti.dialog.askOverwriteFile.message", file)); - return result; - } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/AbstractTuttiAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/AbstractTuttiAction.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/AbstractTuttiAction.java 2013-03-06 22:07:26 UTC (rev 556) @@ -10,15 +10,15 @@ * %% * 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 + * 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 + * + * 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% @@ -29,14 +29,14 @@ import fr.ifremer.tutti.ui.swing.TuttiUIContext; import fr.ifremer.tutti.ui.swing.config.TuttiApplicationConfig; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; -import fr.ifremer.tutti.ui.swing.util.TuttiExceptionHandler; import fr.ifremer.tutti.ui.swing.util.TuttiUI; -import javax.swing.SwingUtilities; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.beans.AbstractBean; import org.nuiton.util.decorator.Decorator; +import javax.swing.SwingUtilities; + /** * Tutti base action. * @@ -44,7 +44,7 @@ * @since 1.0 */ public abstract class AbstractTuttiAction<M extends AbstractBean, UI extends TuttiUI<M, ?>, H extends AbstractTuttiUIHandler<M, UI>> - extends AbstractBean { + extends AbstractBean { private static final Log log = LogFactory.getLog(AbstractTuttiAction.class); @@ -82,11 +82,10 @@ } protected void releaseAction() { - error = null; + // by default nothing to clean } public final void performAndReleaseAction() { - try { performAction(); } finally { @@ -95,11 +94,11 @@ } protected void performAction() { + error = null; try { doAction(); } catch (Throwable e) { this.error = e; - throw new TuttiExceptionHandler.TuttiActionException(this, e); } } @@ -180,30 +179,30 @@ } }); - log.info("Block ?"); - System.out.println("Block ?"); + log.info("Block ?"); + System.out.println("Block ?"); block(); - System.out.println("Block !"); - log.info("Block !"); + System.out.println("Block !"); + log.info("Block !"); } protected void block() { try { - synchronized(lock) { + synchronized (lock) { lock.wait(); } - } catch(Exception e) { + } catch (Exception e) { e.printStackTrace(); } } protected void unblock() { try { - synchronized(lock) { + synchronized (lock) { lock.notify(); } - } catch(Exception e) { + } catch (Exception e) { e.printStackTrace(); } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiUIAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiUIAction.java 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiUIAction.java 2013-03-06 22:07:26 UTC (rev 556) @@ -181,7 +181,6 @@ action.performAction(); - } finally { if (log.isInfoEnabled()) { log.info("Task [" + this + "] done"); Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties =================================================================== --- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-03-06 17:39:37 UTC (rev 555) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-03-06 22:07:26 UTC (rev 556) @@ -179,20 +179,23 @@ tutti.config.category.shortcuts.description=Liste des raccourcis clavier tutti.config.category.ui=Interface utilisateur tutti.config.category.ui.description=Options de l'interface utilisateur -tutti.dialog.askCancelEditBeforeLeaving.cancelEditCatchBatch=La capture modifiée n'est pas valide. Voulez-vous annuler les modifications ? -tutti.dialog.askCancelEditBeforeLeaving.cancelEditFishingOperation=Le trait modifié n'est pas valide. Voulez-vous annuler les modifications ? -tutti.dialog.askCancelEditBeforeLeaving.cancelSaveProtocol= -tutti.dialog.askCancelEditBeforeLeaving.saveCruise= -tutti.dialog.askCancelEditBeforeLeaving.saveProgram= +tutti.dialog.askCancelEditBeforeLeaving.cancelEditCatchBatch=La capture n'est pas valide et ne peut pas être enregistrée. +tutti.dialog.askCancelEditBeforeLeaving.cancelEditFishingOperation=Le trait modifié n'est pas valide et ne peut pas être enregistré. +tutti.dialog.askCancelEditBeforeLeaving.cancelSaveCruise=La campagne n'est pas valide et ne peut pas être enregistrée. +tutti.dialog.askCancelEditBeforeLeaving.cancelSaveProgram=La série de campagne n'est pas valide et ne peut pas être enregistrée. +tutti.dialog.askCancelEditBeforeLeaving.cancelSaveProtocol=Le protocole n'est pas valide et ne peut pas être enregistré. +tutti.dialog.askCancelEditBeforeLeaving.help=Que voulez-vous faire ?<ul><li><strong>Annuler</strong> pour rester sur cet écran<li><strong>OK</strong> pour quitter l'écran en abandonnant les modifications</ul> tutti.dialog.askCancelEditBeforeLeaving.title=Modifications non enregistrées mais invalides +tutti.dialog.askOverwriteFile.help=Que voulez-vous faire ?<ul><li><strong>Annuler</strong> pour ne pas écraser le fichier et annuler l'opération<li><strong>Oui</strong> pour écraser le fichier et continuer l'opération</ul> tutti.dialog.askOverwriteFile.message=Le fichier %s existe déjà, confirmer pour l'écraser. tutti.dialog.askOverwriteFile.title=Confirmer l'écrasement d'un fichier... -tutti.dialog.askSaveBeforeLeaving.createFishingOperation=Le trait n'a pas été créé. Voulez-vous l'enregistrer ? -tutti.dialog.askSaveBeforeLeaving.saveCatchBatch=La capture a été modifiée. Voulez-vous enregistrer les modifications ? -tutti.dialog.askSaveBeforeLeaving.saveCruise=La campagne a été modifiée. Voulez-vous enregistrer les modifications ? -tutti.dialog.askSaveBeforeLeaving.saveFishingOperation=Le trait a été modifié. Voulez-vous enregistrer les modifications ? -tutti.dialog.askSaveBeforeLeaving.saveProgram=La série de campagne a été modifiée. Voulez-vous enregistrer les modifications ? -tutti.dialog.askSaveBeforeLeaving.saveProtocol=Le protocol a été modifié. Voulez-vous enregistrer les modifications ? +tutti.dialog.askSaveBeforeLeaving.createFishingOperation=Le trait n'a pas été créé. +tutti.dialog.askSaveBeforeLeaving.help=Que voulez-vous faire?<ul><li><strong>Annuler</strong> pour rester sur cet écran<li><strong>Non</strong> pour quitter l'écran en abandonnant les modifications en cours<li><strong>Oui</strong> pour quitter l'écran après enregistrement des modifications</ul> +tutti.dialog.askSaveBeforeLeaving.saveCatchBatch=Des modifications sur la capture n'ont pas été enregistrées. +tutti.dialog.askSaveBeforeLeaving.saveCruise=Des modifications sur la campagne n'ont pas été enregistrées. +tutti.dialog.askSaveBeforeLeaving.saveFishingOperation=Des modifications sur le trait n'ont pas été enregistrées. +tutti.dialog.askSaveBeforeLeaving.saveProgram=Des modifications sur la série de campagne n'ont pas été enregistrées. +tutti.dialog.askSaveBeforeLeaving.saveProtocol=Des modifications sur le protocole n'ont pas été enregistrées. tutti.dialog.askSaveBeforeLeaving.title=Modifications non enregistrées tutti.dialog.catches.species.computeWeight.error.message=Erreur lors de l'élévation des poids tutti.dialog.catches.species.computeWeight.error.title=Erreur
participants (1)
-
tchemit@users.forge.codelutin.com