package org.signalml.app.method.ep.view; import static org.signalml.app.util.i18n.SvarogI18n._; import java.awt.event.ActionEvent; import javax.swing.AbstractAction; import javax.swing.JButton; import org.signalml.app.model.components.validation.ValidationErrors; import org.signalml.app.util.IconUtils; import org.signalml.app.view.common.components.panels.AbstractPanel; import org.signalml.app.view.montage.filters.EditTimeDomainSampleFilterDialog; import org.signalml.domain.montage.filter.TimeDomainSampleFilter; import org.signalml.math.iirdesigner.BadFilterParametersException; import org.signalml.math.iirdesigner.IIRDesigner; import org.signalml.method.ep.EvokedPotentialParameters; import org.signalml.plugin.export.view.FileChooser; /** * This is a panel for selecting the cut-off frequency of a low pass filter * that will be used to filter the result of evoked potentials * averaging. * * @author Piotr Szachewicz */ public class FilterParametersPanel extends AbstractPanel { private JButton editFilterButton; /** * the dialog that is used when editing {@link TimeDomainSampleFilter} * parameters. */ private EditTimeDomainSampleFilterDialog editTimeDomainSampleFilterDialog; private TimeDomainSampleFilter filter; public FilterParametersPanel() { super(""); this.add(getEditFilterButton()); } public JButton getEditFilterButton() { if (editFilterButton == null) { editFilterButton = new JButton(new AbstractAction(_("Edit filter")) { { putValue(AbstractAction.SMALL_ICON, IconUtils.loadClassPathIcon("org/signalml/app/icon/editfilter.png")); } @Override public void actionPerformed(ActionEvent event) { getEditTimeDomainSampleFilterDialog().showDialog(filter); } }); } return editFilterButton; } public EditTimeDomainSampleFilterDialog getEditTimeDomainSampleFilterDialog() { if (editTimeDomainSampleFilterDialog == null) { editTimeDomainSampleFilterDialog = new EditTimeDomainSampleFilterDialog(null, true); } return editTimeDomainSampleFilterDialog; } public void fillModelFromPanel(EvokedPotentialParameters parameters) { parameters.setTimeDomainSampleFilter(filter); } public void fillPanelFromModel(EvokedPotentialParameters parameters) { filter = parameters.getTimeDomainSampleFilter(); } public void setSamplingFrequency(float samplingFrequency) { getEditTimeDomainSampleFilterDialog().setCurrentSamplingFrequency(samplingFrequency); } @Override public void validatePanel(ValidationErrors errors) { filter.setSamplingFrequency(getEditTimeDomainSampleFilterDialog().getCurrentSamplingFrequency()); try { IIRDesigner.designDigitalFilter(filter); } catch (BadFilterParametersException e) { logger.error("", e); errors.addError(_("Cannot design the EP filter - please correct its parameters.")); } } public void setFileChooser(FileChooser fileChooser) { getEditTimeDomainSampleFilterDialog().setFileChooser(fileChooser); } }