/* StartMonitorRecordingAction.java created 2010-10-29 * */ package org.signalml.app.action.document.monitor; import static org.signalml.app.util.i18n.SvarogI18n._; import java.io.FileNotFoundException; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import org.apache.log4j.Logger; import org.signalml.app.action.selector.SignalDocumentFocusSelector; import org.signalml.app.document.MonitorSignalDocument; import org.signalml.app.document.signal.SignalDocument; import org.signalml.app.view.document.monitor.StartMonitorRecordingDialog; /** * This class is responsible for actions regarding the menu item which starts * the recording of the open monitor. * * @author Piotr Szachewicz */ public class StartMonitorRecordingAction extends MonitorRecordingAction { /** * Logger to save history of execution at. */ protected static final Logger logger = Logger.getLogger(StartMonitorRecordingAction.class); /** * The dialog which is shown after evoking this action. */ protected StartMonitorRecordingDialog startMonitorRecordingDialog; /** * Constructor. * * @param signalDocumentFocusSelector a {@link SignalDocumentFocusSelector} used to detect * which document is active. */ public StartMonitorRecordingAction(SignalDocumentFocusSelector signalDocumentFocusSelector) { super(signalDocumentFocusSelector); setText(_("Start monitor recording")); setIconPath("org/signalml/app/icon/record.png"); setToolTip(_("Record signal and tags from this monitor to a file")); setMnemonic(KeyEvent.VK_S); } /** * Starts the recording for the currently open document (if it is a {@link MonitorSignalDocument}). * * @param ev an event describing a change */ @Override public void actionPerformed(ActionEvent ev) { SignalDocument signalDocument = getActionFocusSelector().getActiveSignalDocument(); if ((signalDocument != null) && (signalDocument instanceof MonitorSignalDocument)) { MonitorSignalDocument monitorSignalDocument = (MonitorSignalDocument) signalDocument; boolean ok = startMonitorRecordingDialog.showDialog(monitorSignalDocument.getExperimentDescriptor(), true); if (!ok) { return; } try { monitorSignalDocument.startMonitorRecording(); } catch (FileNotFoundException ex) { logger.error("The files to which you want to record signal/tags were not found", ex); } } } /** * Decides to enable/disable the menu item to which this action is connected to according * to the state of the recorder. */ @Override public void setEnabledAsNeeded() { SignalDocument signalDocument = getActionFocusSelector().getActiveSignalDocument(); if ((signalDocument != null) && (signalDocument instanceof MonitorSignalDocument) && !((MonitorSignalDocument) signalDocument).isRecording()) setEnabled(true); else setEnabled(false); } /** * Returns the {@link StartMonitorRecordingDialog} which is shown * when this action is performed. * * @return the {@link StartMonitorRecordingDialog} associated with this action */ public StartMonitorRecordingDialog getStartMonitorRecordingDialog() { return startMonitorRecordingDialog; } /** * Sets a {@link StartMonitorRecordingDialog} which will be shown when * this action is performed. * * @param startMonitorRecordingDialog the {@link StartMonitorRecordingDialog} * to be associated with this action. */ public void setStartMonitorRecordingDialog(StartMonitorRecordingDialog startMonitorRecordingDialog) { this.startMonitorRecordingDialog = startMonitorRecordingDialog; } }