/* CheckSignalAction.java created 2010-10-24 * */ package org.signalml.app.action.document.monitor; import static org.signalml.app.util.i18n.SvarogI18n._; import org.signalml.app.view.document.monitor.signalchecking.CheckSignalDialog; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import org.apache.log4j.Logger; import org.signalml.app.action.AbstractFocusableSignalMLAction; import org.signalml.app.action.selector.SignalDocumentFocusSelector; import org.signalml.app.document.MonitorSignalDocument; import org.signalml.app.document.signal.SignalDocument; import org.signalml.app.model.montage.MontageDescriptor; /** * Opens a {@link CheckSignalDialog}. * * @author Tomasz Sawicki */ public class CheckSignalAction extends AbstractFocusableSignalMLAction<SignalDocumentFocusSelector> { /** * Logger to save history of execution at. */ protected static final Logger logger = Logger.getLogger(CheckSignalAction.class); /** * The dialog which is shown after evoking this action. */ private CheckSignalDialog checkSignalDialog; /** * Constructor. * * @param signalDocumentFocusSelector a {@link SignalDocumentFocusSelector} used to detect * which document is active. */ public CheckSignalAction(SignalDocumentFocusSelector signalDocumentFocusSelector) { super(signalDocumentFocusSelector); setText(_("Check signal...")); setToolTip(_("Check if signal is OK")); setMnemonic(KeyEvent.VK_C); } /** * Shows the dialog and sets it's montage. * * @param ev an event describing a change */ @Override public void actionPerformed(ActionEvent ev) { logger.debug("Check signal"); SignalDocument signalDocument = getActionFocusSelector().getActiveSignalDocument(); if (signalDocument == null) { logger.warn("Target document doesn't exist or is not a signal"); return; } MontageDescriptor descriptor = new MontageDescriptor(signalDocument.getMontage(), signalDocument); boolean ok = checkSignalDialog.showDialog(descriptor, true); if (!ok) { return; } signalDocument.setMontage(descriptor.getMontage()); } /** * Action is enabled only if the monitor is open. */ @Override public void setEnabledAsNeeded() { SignalDocument signalDocument = getActionFocusSelector().getActiveSignalDocument(); setEnabled((signalDocument != null) && (signalDocument instanceof MonitorSignalDocument)); } /** * Gets the {@link #checkSignalDialog}. * * @return {@link #checkSignalDialog} */ public CheckSignalDialog getCheckSignalDialog() { return checkSignalDialog; } /** * Sets the {@link #checkSignalDialog}. * * @param checkSignalDialog a {@link CheckSignalDialog} object */ public void setCheckSignalDialog(CheckSignalDialog checkSignalDialog) { if (checkSignalDialog == null) { throw new NullPointerException(); } this.checkSignalDialog = checkSignalDialog; } }