/* GetTaskErrorAction.java created 2007-10-31 * */ package org.signalml.app.action.workspace.tasks; import static org.signalml.app.util.i18n.SvarogI18n._; import java.awt.event.ActionEvent; import org.apache.log4j.Logger; import org.signalml.app.action.AbstractFocusableSignalMLAction; import org.signalml.app.action.selector.TaskFocusSelector; import org.signalml.app.view.common.dialogs.errors.Dialogs; import org.signalml.app.view.common.dialogs.errors.ExceptionDialog; import org.signalml.task.Task; import org.signalml.task.TaskResult; import org.springframework.validation.Errors; /** GetTaskErrorAction * * * @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o. */ public class GetTaskErrorAction extends AbstractFocusableSignalMLAction<TaskFocusSelector> { private static final long serialVersionUID = 1L; protected static final Logger logger = Logger.getLogger(GetTaskErrorAction.class); public GetTaskErrorAction(TaskFocusSelector taskFocusSelector) { super(taskFocusSelector); setText(_("Get error")); setIconPath("org/signalml/app/icon/geterror.png"); setToolTip(_("Get the errors from this task")); } @Override public void actionPerformed(ActionEvent ev) { Task targetTask = getActionFocusSelector().getActiveTask(); if (targetTask == null) { return; } TaskResult result = null; synchronized (targetTask) { if (targetTask.getStatus().isError()) { result = targetTask.getResult(); } } if (result == null) { logger.warn("No error to get"); return; } Exception exception = result.getException(); if (exception == null) { logger.warn("No exception to get"); return; } Dialogs.showExceptionDialog(exception); } public void setEnabledAsNeeded() { boolean enabled = false; Task targetTask = getActionFocusSelector().getActiveTask(); if (targetTask != null) { enabled = targetTask.getStatus().isError(); } setEnabled(enabled); } }