/* MonitorRecordingAction.java created 2010-11-01 * */ package org.signalml.app.action.document.monitor; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import org.signalml.app.action.AbstractFocusableSignalMLAction; import org.signalml.app.action.selector.ActionFocusEvent; import org.signalml.app.action.selector.SignalDocumentFocusSelector; import org.signalml.app.document.MonitorSignalDocument; import org.signalml.app.document.signal.SignalDocument; /** * This class represents an action toggling the recording on/off. It is the upper class * for {@link StartMonitorRecordingAction} and {@link StopMonitorRecordingAction} and contains * code responsible for enabling and disabling apropriate menu items according to the state of * the recording (i. e. whether the recording is on or off). * * @author Piotr Szachewicz */ public abstract class MonitorRecordingAction extends AbstractFocusableSignalMLAction<SignalDocumentFocusSelector> implements PropertyChangeListener { public MonitorRecordingAction(SignalDocumentFocusSelector signalDocumentFocusSelector) { super(signalDocumentFocusSelector); } @Override public void actionFocusChanged(ActionFocusEvent e) { super.actionFocusChanged(e); if (this.getActionFocusSelector().getActiveDocument() instanceof MonitorSignalDocument) { SignalDocument sd = getActionFocusSelector().getActiveSignalDocument(); sd.addPropertyChangeListener(this); } } @Override public void propertyChange(PropertyChangeEvent evt) { if (evt.getPropertyName().equals(MonitorSignalDocument.IS_RECORDING_PROPERTY)) { setEnabledAsNeeded(); } } }