/* PreciseSelectionAction.java created 2007-10-05 * */ package org.signalml.app.action.signal; import static org.signalml.app.util.i18n.SvarogI18n._; 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.SignalPlotFocusSelector; import org.signalml.app.view.signal.SignalPlot; import org.signalml.app.view.signal.SignalSelectionDialog; import org.signalml.app.view.signal.SignalView; import org.signalml.domain.signal.BoundedSignalSelection; import org.signalml.plugin.export.signal.SignalSelection; /** PreciseSelectionAction * * * @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o. */ public class PreciseSelectionAction extends AbstractFocusableSignalMLAction<SignalPlotFocusSelector> { private static final long serialVersionUID = 1L; protected static final Logger logger = Logger.getLogger(PreciseSelectionAction.class); private SignalSelectionDialog signalSelectionDialog; public PreciseSelectionAction(SignalPlotFocusSelector signalPlotFocusSelector) { super(signalPlotFocusSelector); setText(_("Select precisely")); setIconPath("org/signalml/app/icon/preciseselection.png"); setToolTip(_("Select signal fragments using selection dialog")); setMnemonic(KeyEvent.VK_S); } @Override public void actionPerformed(ActionEvent e) { SignalPlot plot = getActionFocusSelector().getActiveSignalPlot(); if (plot == null) { logger.warn("Target plot doesn't exist"); return; } SignalView view = plot.getView(); SignalSelection signalSelection = view.getSignalSelection(plot); BoundedSignalSelection boundedSignalSelection = new BoundedSignalSelection(signalSelection); boundedSignalSelection.setMaxPage(plot.getPageCount()); boundedSignalSelection.setMaxBlock(plot.getBlockCount()); boundedSignalSelection.setMaxTime(plot.getMaxTime()); boundedSignalSelection.setPageSize(plot.getPageSize()); boundedSignalSelection.setBlocksPerPage(plot.getBlocksPerPage()); boundedSignalSelection.setSamplingFrequency(plot.getSamplingFrequency()); boundedSignalSelection.setChannels(plot.getSignalChain().getLabels()); boolean ok = signalSelectionDialog.showDialog(boundedSignalSelection, true); if (ok) { view.setSignalSelection(plot, boundedSignalSelection.getSelection()); } } @Override public void setEnabledAsNeeded() { SignalPlotFocusSelector x = getActionFocusSelector(); if (null != x) setEnabled(x.getActiveSignalPlot() != null); } public SignalSelectionDialog getSignalSelectionDialog() { return signalSelectionDialog; } public void setSignalSelectionDialog(SignalSelectionDialog signalSelectionDialog) { this.signalSelectionDialog = signalSelectionDialog; } }