package org.signalml.app.method.ep.view;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import javax.swing.BoxLayout;
import javax.swing.JPanel;
import org.signalml.app.document.TagDocument;
import org.signalml.app.document.signal.SignalDocument;
import org.signalml.app.method.ep.view.tags.AveragedTagSelectionPanel;
import org.signalml.app.method.ep.view.time.BaselineSelectionPanel;
import org.signalml.app.method.ep.view.time.EvokedPotentialsTimeSelectionPanel;
import org.signalml.app.model.components.validation.ValidationErrors;
import org.signalml.app.view.common.components.panels.AbstractPanel;
import org.signalml.method.ep.EvokedPotentialParameters;
import org.signalml.plugin.export.view.FileChooser;
/**
* This panel consists of various panel which can be used to
* changed the settings of evoked potentials tool.
*
* @author Piotr Szachewicz
*/
public class EvokedPotentialSettingsPanel extends AbstractPanel {
private AveragedTagSelectionPanel averageedTagSelectionPanel;
private EvokedPotentialsTimeSelectionPanel averagedTimeSelectionPanel;
private BaselineSelectionPanel baselineSelectionPanel;
private FilterPanel filterPanel;
public EvokedPotentialSettingsPanel() {
createInterface();
}
protected void createInterface() {
setLayout(new GridLayout(1, 2));
add(createLeftPanel());
add(createRightPanel());
}
protected JPanel createLeftPanel() {
JPanel panel = new JPanel(new BorderLayout());
panel.add(getAveragedTagSelectionPanel(), BorderLayout.CENTER);
return panel;
}
protected JPanel createRightPanel() {
JPanel controlsPanel = new JPanel();
controlsPanel.setLayout(new BoxLayout(controlsPanel, BoxLayout.Y_AXIS));
controlsPanel.add(getAveragedTimeSelectionPanel());
controlsPanel.add(getBaselineSelectionPanel());
controlsPanel.add(getFilterPanel());
JPanel panel = new JPanel(new BorderLayout());
panel.add(controlsPanel, BorderLayout.NORTH);
panel.add(new JPanel(), BorderLayout.CENTER);
return panel;
}
public AveragedTagSelectionPanel getAveragedTagSelectionPanel() {
if (averageedTagSelectionPanel == null)
averageedTagSelectionPanel = new AveragedTagSelectionPanel();
return averageedTagSelectionPanel;
}
public EvokedPotentialsTimeSelectionPanel getAveragedTimeSelectionPanel() {
if (averagedTimeSelectionPanel == null)
averagedTimeSelectionPanel = new EvokedPotentialsTimeSelectionPanel();
return averagedTimeSelectionPanel;
}
public BaselineSelectionPanel getBaselineSelectionPanel() {
if (baselineSelectionPanel == null)
baselineSelectionPanel = new BaselineSelectionPanel();
return baselineSelectionPanel;
}
public FilterPanel getFilterPanel() {
if (filterPanel == null)
filterPanel = new FilterPanel();
return filterPanel;
}
public void fillPanelFromModel(EvokedPotentialParameters parameters) {
getAveragedTagSelectionPanel().fillPanelFromModel(parameters);
getAveragedTimeSelectionPanel().fillPanelFromModel(parameters);
getBaselineSelectionPanel().fillPanelFromModel(parameters);
getFilterPanel().fillPanelFromModel(parameters);
}
public void fillModelFromPanel(EvokedPotentialParameters parameters) {
getAveragedTagSelectionPanel().fillModelFromPanel(parameters);
getAveragedTimeSelectionPanel().fillModelFromPanel(parameters);
getBaselineSelectionPanel().fillModelFromPanel(parameters);
getFilterPanel().fillModelFromPanel(parameters);
}
@Override
public void validatePanel(ValidationErrors errors) {
getAveragedTagSelectionPanel().validatePanel(errors);
getAveragedTimeSelectionPanel().validatePanel(errors);
getBaselineSelectionPanel().validatePanel(errors);
getFilterPanel().validatePanel(errors);
}
public void setTagDocument(TagDocument tagDocument) {
getAveragedTagSelectionPanel().setTagDocument(tagDocument);
}
public void setSignalDocument(SignalDocument signalDocument) {
getFilterPanel().setSamplingFrequency(signalDocument.getSamplingFrequency());
}
public void setFileChooser(FileChooser fileChooser) {
getFilterPanel().setFileChooser(fileChooser);
}
}