Author: tchemit Date: 2013-02-15 00:59:54 +0100 (Fri, 15 Feb 2013) New Revision: 418 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/418 Log: - fix new fishing operation (when need to save previous fishing operation) - begin to integrate synchro db - improve update ui - add missing svn properties and license headers - continue action api - fix exceptionHandler when action is running Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiApplicationUpdaterCallBack.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiExceptionHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/UpdateApplicationAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/UpdateReferentialAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/NewFishingOperationAction.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/util/editor/TuttiComputedOrNotDataEditor.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/AbstractTuttiAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java 2013-02-14 23:55:47 UTC (rev 417) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java 2013-02-14 23:59:54 UTC (rev 418) @@ -29,20 +29,16 @@ import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.TuttiService; import fr.ifremer.tutti.ui.swing.config.TuttiApplicationConfig; +import fr.ifremer.tutti.ui.swing.util.action.TuttiActionUI; +import fr.ifremer.tutti.ui.swing.util.action.TuttiActionUIModel; import jaxx.runtime.SwingUtil; +import org.apache.commons.lang.ObjectUtils; 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.AbstractAction; -import javax.swing.JDialog; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JProgressBar; -import javax.swing.border.EmptyBorder; -import javax.swing.border.TitledBorder; -import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.util.Set; import java.util.Timer; @@ -50,8 +46,6 @@ import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; -import static org.nuiton.i18n.I18n._; - /** * TODO * @@ -72,6 +66,8 @@ private final H handler; + private boolean failed; + private final boolean hideBody; private final static Object lock = new Object(); @@ -84,6 +80,7 @@ String text, String tip, boolean hideBody) { + this.handler = handler; this.hideBody = hideBody; putValue(SMALL_ICON, SwingUtil.createActionIcon(icon)); @@ -101,7 +98,7 @@ return (String) getValue("actionName"); } - protected String getActionDescription() { + public String getActionDescription() { return (String) getValue("actionDescription"); } @@ -116,6 +113,14 @@ putValue("actionDescription", null); } + public boolean isFailed() { + return failed; + } + + public void setFailed(boolean failed) { + this.failed = failed; + } + @Override public final void actionPerformed(final ActionEvent event) { @@ -123,6 +128,8 @@ log.info("Task [" + this + "] starting"); } + setFailed(false); + boolean doAction = prepareAction(event); if (doAction) { @@ -132,6 +139,7 @@ synchronized (lock) { useTimer = actions.isEmpty(); + mainAction = AbstractTuttiAction.this; actions.add(AbstractTuttiAction.this); } @@ -165,17 +173,19 @@ timer = new ActionTimerTask(this); - t.schedule(timer, 500); + t.schedule(timer, 1000); } try { this.doAction(event); } catch (Throwable e) { + setFailed(true); + if (log.isErrorEnabled()) { log.error("Task [" + this + "] error: " + e.getMessage(), e); } - throw new TuttiExceptionHandler.TuttiActionException(e); + throw new TuttiExceptionHandler.TuttiActionException(this, e); } finally { if (log.isInfoEnabled()) { log.info("Task [" + this + "] done"); @@ -190,7 +200,21 @@ } finally { synchronized (lock) { + + TuttiActionUI actionUI = AbstractTuttiAction.this.getContext().getActionUI(); + + TuttiActionUIModel actionUIModel = actionUI.getModel(); + + if (ObjectUtils.equals(AbstractTuttiAction.this, actionUIModel.getAction())) { + + // same action, then remove it (will close dialog as a side effect) + actionUIModel.clear(); + } actions.remove(AbstractTuttiAction.this); + + if (AbstractTuttiAction.this.equals(getMainAction())) { + mainAction = null; + } } } } @@ -226,21 +250,25 @@ private final static Set<Object> actions = Sets.newHashSet(); + private static AbstractTuttiAction mainAction; + + public static AbstractTuttiAction getMainAction() { + return mainAction; + } + protected static class ActionTimerTask<A extends AbstractTuttiAction> extends TimerTask { private final Object lock = new Object(); protected boolean canceled; - private final String actionDescription; + private final A action; - private JDialog d; + protected TuttiActionUI actionUI; - private final A action; - public ActionTimerTask(A action) { this.action = action; - this.actionDescription = action.getActionDescription(); + this.actionUI = action.getContext().getActionUI(); } @Override @@ -253,41 +281,18 @@ } } else { - MainUI ui = action.getContext().getMainUI(); - - if (log.isDebugEnabled()) { log.debug("Task [" + action + "] is started, show waiting dialog"); } - JPanel panel = new JPanel(new BorderLayout()); - panel.setBorder(new TitledBorder((String) null)); - JLabel label = new JLabel(); - EmptyBorder border = new EmptyBorder(5, 5, 5, 5); - label.setBorder(border); - label.setText(_("tutti.message.action.running", actionDescription)); - panel.add(label, BorderLayout.CENTER); - JProgressBar progressBar = new JProgressBar(); - progressBar.setBorder(border); - progressBar.setIndeterminate(true); - panel.add(progressBar, BorderLayout.SOUTH); - - - d = new JDialog(ui, true); - d.setUndecorated(true); -// d.setSize(300, 200); - d.add(panel); - d.pack(); - SwingUtil.center(ui, d); - if (log.isDebugEnabled()) { log.debug("Try to open dialog (was canceled ? " + canceled + ")"); } - if (!canceled) { + if (!canceled || !action.isFailed()) { - updateBusyState(ui, true); + updateBusyState(true); - d.setVisible(true); + actionUI.getModel().setAction(action); } } } @@ -302,17 +307,20 @@ } boolean cancel = super.cancel(); - updateBusyState(action.getContext().getMainUI(), false); + updateBusyState(false); - if (d != null) { - d.setVisible(false); + if (ObjectUtils.equals(action, actionUI.getModel().getAction())) { + + // same action, then remove it (will close dialog as a side effect) + actionUI.getModel().clear(); } return cancel; } } - protected void updateBusyState(MainUI ui, boolean busy) { + protected void updateBusyState(boolean busy) { + MainUI ui = action.getContext().getMainUI(); if (busy) { // ui bloquee if (action.isHideBody()) { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java 2013-02-14 23:55:47 UTC (rev 417) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java 2013-02-14 23:59:54 UTC (rev 418) @@ -36,6 +36,7 @@ import fr.ifremer.tutti.ui.swing.content.program.EditProgramUI; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUI; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUI; +import fr.ifremer.tutti.ui.swing.util.action.TuttiActionUI; import jaxx.runtime.swing.AboutPanel; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.logging.Log; @@ -74,6 +75,7 @@ super(context, ui); this.persistenceService = context.getService(PersistenceService.class); context.setMainUI(ui); + context.setActionUI(new TuttiActionUI(ui, context)); } protected MainUIHandler(TuttiUIContext context) { @@ -393,6 +395,11 @@ } } catch (Exception e) { + AbstractTuttiAction mainAction = AbstractTuttiAction.getMainAction(); + if (mainAction != null) { + mainAction.setFailed(true); + } + TuttiUIContext.getErrorHelper().showErrorDialog( "Could not change to screen " + screen, e); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiApplicationUpdaterCallBack.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiApplicationUpdaterCallBack.java 2013-02-14 23:55:47 UTC (rev 417) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiApplicationUpdaterCallBack.java 2013-02-14 23:59:54 UTC (rev 418) @@ -25,7 +25,12 @@ */ import com.google.common.base.Preconditions; +import com.google.common.collect.Lists; import com.google.common.collect.Maps; +import fr.ifremer.tutti.persistence.ProgressionModel; +import fr.ifremer.tutti.persistence.service.synchro.ReferentialSynchronizeResult; +import fr.ifremer.tutti.service.referential.TuttiReferentialSynchronizeService; +import fr.ifremer.tutti.ui.swing.util.action.TuttiActionUI; import org.apache.commons.io.FileUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -34,6 +39,7 @@ import java.io.File; import java.io.IOException; +import java.util.List; import java.util.Map; /** @@ -57,14 +63,17 @@ protected final TuttiUIContext context; - protected UpdateType[] types; + protected List<UpdateType> types; - public TuttiApplicationUpdaterCallBack(TuttiUIContext context) { + protected ProgressionModel progressionModel; + + public TuttiApplicationUpdaterCallBack(TuttiUIContext context, ProgressionModel progressionModel) { this.context = context; + this.progressionModel = progressionModel; } public void setTypes(UpdateType... types) { - this.types = types; + this.types = Lists.newArrayList(types); } @Override @@ -84,10 +93,43 @@ } } } + if (types.contains(UpdateType.DB)) { + + ApplicationUpdater.ApplicationInfo info = getInfo(UpdateType.DB, result); + if (info == null) { + String message = "Aucune mise à jour de base détectée."; + context.showInformationMessage(message); + } + } return result; } @Override + public void startUpdate(ApplicationUpdater.ApplicationInfo info) { + if (UpdateType.DB.name().toLowerCase().equals(info.name)) { + + if (Version.VZERO.toString().equals(info.oldVersion)) { + + progressionModel.setMessage("Téléchargement et installation de la base (version " + info.newVersion + ")"); + } else { + progressionModel.setMessage("Téléchargement et mise à jour de la base (version " + info.newVersion + ")"); + } + + } + if (UpdateType.JRE.name().toLowerCase().equals(info.name)) { + progressionModel.setMessage("Téléchargement et installation d'une nouvelle JRE (version " + info.newVersion + ")"); + } + + if (UpdateType.TUTTI.name().toLowerCase().equals(info.name)) { + progressionModel.setMessage("Téléchargement et installation d'une nouvelle version de Tutti (version " + info.newVersion + ")"); + } + + if (UpdateType.I18N.name().toLowerCase().equals(info.name)) { + progressionModel.setMessage("Téléchargement et installation d'une nouveau version I18N (version " + info.newVersion + ")"); + } + } + + @Override public void updateDone(Map<String, ApplicationUpdater.ApplicationInfo> appToUpdate, Map<String, Exception> appUpdateError) { @@ -227,17 +269,20 @@ return appUpdateError.get(type.name().toLowerCase()); } + protected File getDbDirectory(ApplicationUpdater.ApplicationInfo info) { + File[] sources = info.destDir.listFiles(); + Preconditions.checkState( + sources != null && sources.length == 1, + "Downloaded db should contains one directory at " + info.destDir); + File result = sources[0]; + return result; + } + protected void prepareFirstDatabase(ApplicationUpdater.ApplicationInfo info) { - //TODO copie base au bon endroit pour utilisation directe if (log.isInfoEnabled()) { log.info("First time database was downloaded at version: " + info.newVersion); } - - File[] sources = info.destDir.listFiles(); - Preconditions.checkState( - sources != null && sources.length == 1, - "Downloaded db should contains one directory at " + info.destDir); - File source = sources[0]; + File source = getDbDirectory(info); File target = context.getConfig().getServiceConfig().getPersistenceConfig().getDbDirectory(); if (log.isInfoEnabled()) { log.info("Copy from " + source + " to " + target); @@ -252,7 +297,6 @@ } catch (IOException e) { throw new RuntimeException("Could not delete temporary directory " + target, e); } - } protected void synchronizetDatabase(ApplicationUpdater.ApplicationInfo info) { @@ -260,5 +304,12 @@ if (log.isInfoEnabled()) { log.info(String.format("A database update was downloaded (oldVersion: %s, newVersion: %s), will launch a referential synchronize operation ", info.oldVersion, info.newVersion)); } + TuttiReferentialSynchronizeService service = context.getService(TuttiReferentialSynchronizeService.class); + ReferentialSynchronizeResult result = new ReferentialSynchronizeResult(); + File dbDirectory = getDbDirectory(info); + + TuttiActionUI actionUI = context.getActionUI(); + actionUI.getModel().setProgressionModel(result.getProgressionModel()); + service.prepare(dbDirectory, result); } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiExceptionHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiExceptionHandler.java 2013-02-14 23:55:47 UTC (rev 417) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiExceptionHandler.java 2013-02-14 23:59:54 UTC (rev 418) @@ -48,9 +48,17 @@ private static final long serialVersionUID = 1L; - public TuttiActionException(Throwable cause) { + private final AbstractTuttiAction action; + + public TuttiActionException(AbstractTuttiAction action, + Throwable cause) { super(cause); + this.action = action; } + + public AbstractTuttiAction getAction() { + return action; + } } @Override @@ -70,16 +78,33 @@ Throwable cause = ex; + if (cause instanceof TuttiTechnicalException) { + cause = cause.getCause(); + } - if (cause instanceof TuttiTechnicalException || - cause instanceof TuttiActionException) { + boolean backToScreen = false; + + AbstractTuttiAction action = null; + if (cause instanceof TuttiActionException) { + + TuttiActionException actionException = (TuttiActionException) cause; cause = cause.getCause(); + + // close action ui + + action = actionException.getAction(); + + if (action instanceof AbstractChangeScreenAction) { + backToScreen = true; + } + action.getContext().getActionUI().getModel().setAction(null); } -// while (cause != null && !(cause instanceof TuttiTechnicalException)) { -// cause = cause.getCause(); -// } TuttiUIContext.getErrorHelper().showErrorDialog(cause.getMessage(), ex); + + if (backToScreen) { + action.getContext().setScreen(TuttiScreen.SELECT_CRUISE); + } } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2013-02-14 23:55:47 UTC (rev 417) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2013-02-14 23:59:54 UTC (rev 418) @@ -35,6 +35,7 @@ import fr.ifremer.tutti.service.TuttiServiceContext; import fr.ifremer.tutti.ui.swing.config.TuttiApplicationConfig; import fr.ifremer.tutti.ui.swing.util.UIMessageNotifier; +import fr.ifremer.tutti.ui.swing.util.action.TuttiActionUI; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.StringUtils; @@ -171,6 +172,8 @@ private MainUI mainUI; + private TuttiActionUI actionUI; + public static TuttiUIContext newContext(TuttiApplicationConfig config) { Preconditions.checkNotNull(config); Preconditions.checkState(applicationContext == null, @@ -192,7 +195,7 @@ this.resourceLoader = new RessourceClassLoader(Thread.currentThread().getContextClassLoader()); this.serviceContext = new TuttiServiceContext(resourceLoader, config.getServiceConfig()); this.swingSession = new SwingSession(getConfig().getUIConfigFile(), false); - this.errorHelper= new TuttiErrorHelper(this); + this.errorHelper = new TuttiErrorHelper(this); UIMessageNotifier logMessageNotifier = new UIMessageNotifier() { @Override @@ -358,6 +361,8 @@ I18n.init(new UserI18nInitializer( i18nDirectory, new DefaultI18nInitializer("tutti-i18n")), i18nLocale); + + setActionUI(new TuttiActionUI(null, this)); } public void open() { @@ -490,6 +495,16 @@ removePropertyChangeListener(listener); } setMainUI(null); + if (actionUI != null) { + + // close action ui + actionUI.getModel().setProgressionModel(null); + actionUI.getModel().setAction(null); + +// // hide it +// actionUI.setVisible(false); + } + setActionUI(null); } protected void saveContextToConfig() { @@ -525,4 +540,12 @@ public MainUI getMainUI() { return mainUI; } + + public void setActionUI(TuttiActionUI actionUI) { + this.actionUI = actionUI; + } + + public TuttiActionUI getActionUI() { + return actionUI; + } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/UpdateApplicationAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/UpdateApplicationAction.java 2013-02-14 23:55:47 UTC (rev 417) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/UpdateApplicationAction.java 2013-02-14 23:59:54 UTC (rev 418) @@ -24,6 +24,7 @@ * #L% */ +import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.ui.swing.config.TuttiApplicationConfig; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -79,8 +80,12 @@ } ApplicationUpdater up = new ApplicationUpdater(); + ProgressionModel progressionModel = new ProgressionModel(); + getContext().getActionUI().getModel().setProgressionModel(progressionModel); + progressionModel.setMessage("Recherche de mises à jour de JRE / Tutti / I18N"); + TuttiApplicationUpdaterCallBack callback = - new TuttiApplicationUpdaterCallBack(getContext()); + new TuttiApplicationUpdaterCallBack(getContext(), progressionModel); callback.setTypes(TuttiApplicationUpdaterCallBack.UpdateType.JRE, TuttiApplicationUpdaterCallBack.UpdateType.I18N, @@ -90,6 +95,7 @@ dest, false, callback); + getContext().getActionUI().getModel().setProgressionModel(null); } } } \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/UpdateReferentialAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/UpdateReferentialAction.java 2013-02-14 23:55:47 UTC (rev 417) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/UpdateReferentialAction.java 2013-02-14 23:59:54 UTC (rev 418) @@ -24,6 +24,7 @@ * #L% */ +import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.ui.swing.config.TuttiApplicationConfig; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -70,12 +71,17 @@ ApplicationUpdater up = new ApplicationUpdater(); File dest = new File(config.getTuttiBasedir(), "NEW"); - TuttiApplicationUpdaterCallBack callback = new TuttiApplicationUpdaterCallBack(getContext()); + ProgressionModel progressionModel = new ProgressionModel(); + getContext().getActionUI().getModel().setProgressionModel(progressionModel); + progressionModel.setMessage("Recherche de mises à jour de base"); + TuttiApplicationUpdaterCallBack callback = new TuttiApplicationUpdaterCallBack(getContext(), progressionModel); callback.setTypes(TuttiApplicationUpdaterCallBack.UpdateType.DB); up.update(url, current, dest, false, callback); + + getContext().getActionUI().getModel().setProgressionModel(null); } } \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java 2013-02-14 23:55:47 UTC (rev 417) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java 2013-02-14 23:59:54 UTC (rev 418) @@ -40,6 +40,7 @@ import fr.ifremer.tutti.ui.swing.content.operation.fishing.gearshooting.GearShootingTabUI; import fr.ifremer.tutti.ui.swing.content.operation.fishing.hydrology.HydrologyTabUI; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; +import jaxx.runtime.SwingUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.util.decorator.Decorator; @@ -150,6 +151,15 @@ true); } + protected EditFishingOperationAction(FishingOperationsUIHandler handler, + String name, + String icon, + String text, + String tip, + boolean hideBody) { + super(handler, name,icon,text,tip,hideBody); + } + public void setFishingOperation(FishingOperation fishingOperation) { this.fishingOperation = fishingOperation; } @@ -179,7 +189,6 @@ return saveCatchBatchAction; } - @Override protected boolean prepareAction(ActionEvent event) { boolean canContinue = super.prepareAction(event); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/NewFishingOperationAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/NewFishingOperationAction.java 2013-02-14 23:55:47 UTC (rev 417) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/NewFishingOperationAction.java 2013-02-14 23:59:54 UTC (rev 418) @@ -28,7 +28,6 @@ import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; import java.awt.event.ActionEvent; @@ -42,17 +41,10 @@ * @author tchemit <chemit@codelutin.com> * @since 1.0 */ -public class NewFishingOperationAction extends AbstractTuttiAction<FishingOperationsUIModel, FishingOperationsUI, FishingOperationsUIHandler> { +public class NewFishingOperationAction extends EditFishingOperationAction { private static final long serialVersionUID = 1L; - /** - * Delegate action to edit new FishingOperation. - * - * @since 1.0 - */ - protected EditFishingOperationAction editFishingOperationAction; - public NewFishingOperationAction(FishingOperationsUIHandler handler) { super(handler, "newFishingOperation", @@ -101,16 +93,8 @@ newFishingOperation.setGearShootingStartDate(null); newFishingOperation.setGearShootingEndDate(null); + setFishingOperation(newFishingOperation); - getEditFishingOperationAction().setFishingOperation(newFishingOperation); - getEditFishingOperationAction().actionPerformed(event); - + super.doAction(event); } - - public EditFishingOperationAction getEditFishingOperationAction() { - if (editFishingOperationAction == null) { - editFishingOperationAction = new EditFishingOperationAction(getHandler()); - } - return editFishingOperationAction; - } } 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-02-14 23:55:47 UTC (rev 417) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ComputeWeightsAction.java 2013-02-14 23:59:54 UTC (rev 418) @@ -1,6 +1,30 @@ package fr.ifremer.tutti.ui.swing.content.operation.catches; +/* + * #%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.service.PersistenceService; import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SampleCategory; Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ComputeWeightsAction.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/util/editor/TuttiComputedOrNotDataEditor.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/TuttiComputedOrNotDataEditor.java 2013-02-14 23:55:47 UTC (rev 417) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/TuttiComputedOrNotDataEditor.java 2013-02-14 23:59:54 UTC (rev 418) @@ -1,6 +1,30 @@ package fr.ifremer.tutti.ui.swing.util.editor; +/* + * #%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.util.TuttiComputedOrNotData; import java.awt.Component; import java.awt.event.FocusEvent; Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/TuttiComputedOrNotDataEditor.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native 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-02-14 23:55:47 UTC (rev 417) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-02-14 23:59:54 UTC (rev 418) @@ -98,6 +98,7 @@ tutti.action.newProgram.tip=Créer une nouvelle série de campagne tutti.action.newProtocol=Nouveau tutti.action.newProtocol.tip=Créer un nouveau protocole +tutti.action.ok=Fermer tutti.action.reload.actions=Recharger les actions tutti.action.reload.application=Recharger l'application tutti.action.reload.ui=Recharger l'interface graphique