/* EditSignalParametersAction.java created 2007-09-28 * */ 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 java.util.LinkedList; import org.apache.log4j.Logger; import org.signalml.app.action.AbstractFocusableSignalMLAction; import org.signalml.app.action.selector.SignalDocumentFocusSelector; import org.signalml.app.document.signal.SignalDocument; import org.signalml.app.model.document.opensignal.elements.SignalParameters; import org.signalml.app.view.signal.SignalParametersDialog; import org.signalml.app.view.signal.SignalPlot; import org.signalml.app.view.signal.SignalView; import org.signalml.domain.signal.samplesource.OriginalMultichannelSampleSource; /** EditSignalParametersAction * * * @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o. */ public class EditSignalParametersAction extends AbstractFocusableSignalMLAction<SignalDocumentFocusSelector> { private static final long serialVersionUID = 1L; protected static final Logger logger = Logger.getLogger(EditSignalParametersAction.class); private SignalParametersDialog signalParametersDialog; public EditSignalParametersAction(SignalDocumentFocusSelector signalDocumentFocusSelector) { super(signalDocumentFocusSelector); setText(_("Signal parameters")); setIconPath("org/signalml/app/icon/signalparameters.png"); setToolTip(_("Change signal parameters")); setMnemonic(KeyEvent.VK_P); } @Override public void actionPerformed(ActionEvent e) { SignalDocument signalDocument = getActionFocusSelector().getActiveSignalDocument(); if (signalDocument == null) { logger.warn("Target document doesn't exist or is not a signal"); return; } SignalView signalView = (SignalView) signalDocument.getDocumentView(); SignalParameters spd = new SignalParameters(); spd.setPageSize(signalDocument.getPageSize()); spd.setBlocksPerPage(signalDocument.getBlocksPerPage()); if (signalDocument.getTagDocuments().isEmpty()) { spd.setPageSizeEditable(true); spd.setBlocksPerPageEditable(true); } else { spd.setPageSizeEditable(false); spd.setBlocksPerPageEditable(false); } OriginalMultichannelSampleSource mss = signalDocument.getSampleSource(); spd.setSamplingFrequency(mss.getSamplingFrequency()); spd.setChannelCount(mss.getChannelCount()); if (mss.isChannelCountCapable()) { spd.setChannelCount(mss.getChannelCount()); spd.setChannelCountEditable(false); } else { spd.setChannelCount(0); spd.setChannelCountEditable(true); } boolean ok = signalParametersDialog.showDialog(spd,true); if (!ok) { return; } if (signalDocument.getTagDocuments().isEmpty()) { signalDocument.setPageSize(spd.getPageSize()); signalDocument.setBlocksPerPage(spd.getBlocksPerPage()); } if (mss.isSamplingFrequencyCapable()) { mss.setSamplingFrequency(spd.getSamplingFrequency()); } if (mss.isChannelCountCapable() && spd.isChannelCountEditable()) { mss.setChannelCount(spd.getChannelCount()); } signalView.clearSignalSelection(); LinkedList<SignalPlot> plots = signalView.getPlots(); for (SignalPlot plot : plots) { if (!plot.isVisible()) { plot.setVisible(true); } } } @Override public void setEnabledAsNeeded() { setEnabled(getActionFocusSelector().getActiveSignalDocument() != null); } public SignalParametersDialog getSignalParametersDialog() { return signalParametersDialog; } public void setSignalParametersDialog(SignalParametersDialog signalParametersDialog) { this.signalParametersDialog = signalParametersDialog; } }