/* EvokedPotentialResultDialog.java created 2008-01-12
*
*/
package org.signalml.app.method.ep;
import static org.signalml.app.util.i18n.SvarogI18n._;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Window;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.border.EmptyBorder;
import org.signalml.app.method.ep.action.ExportAllEPChartsToFileAction;
import org.signalml.app.method.ep.action.ExportAllEPSamplesToFloatFileAction;
import org.signalml.app.model.components.PropertySheetModel;
import org.signalml.app.util.IconUtils;
import org.signalml.app.view.common.dialogs.AbstractDialog;
import org.signalml.app.view.workspace.ViewerFileChooser;
import org.signalml.app.view.workspace.ViewerPropertySheet;
import org.signalml.method.ep.EvokedPotentialResult;
import org.signalml.plugin.export.SignalMLException;
/** EvokedPotentialResultDialog
*
*
* @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o.
*/
public class EvokedPotentialResultDialog extends AbstractDialog {
private static final long serialVersionUID = 1L;
private ViewerFileChooser fileChooser;
private JSplitPane splitPane;
private JScrollPane graphScrollPane;
private EvokedPotentialGraphPanel graphPanel;
private PropertySheetModel propertySheetModel;
private ViewerPropertySheet propertySheet;
private JScrollPane propertySheetScrollPane;
private JPanel buttonPanel;
private JButton saveChartsToFileButton;
private JButton saveSamplesToFloatFileButton;
private JButton showMinMaxButton;
private ExportAllEPChartsToFileAction exportAllEPChartsToFileAction;
private ExportAllEPSamplesToFloatFileAction exportAllEPSamplesToFileAction;
private ShowMinMaxAction showMinMaxAction;
public EvokedPotentialResultDialog() {
super();
}
public EvokedPotentialResultDialog(Window w, boolean isModal) {
super(w, isModal);
}
@Override
protected void initialize() {
setTitle(_("Evoked potential averaging result"));
setIconImage(IconUtils.loadClassPathImage(EvokedPotentialMethodDialog.ICON_PATH));
setResizable(true);
super.initialize();
}
@Override
public JComponent createInterface() {
JPanel interfacePanel = new JPanel(new BorderLayout());
interfacePanel.setBorder(new EmptyBorder(3,3,3,3));
interfacePanel.add(getSplitPane(), BorderLayout.CENTER);
return interfacePanel;
}
public JSplitPane getSplitPane() {
if (splitPane == null) {
splitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT);
splitPane.setOneTouchExpandable(true);
JPanel topPanel = new JPanel(new BorderLayout(3,3));
topPanel.add(getGraphScrollPane(), BorderLayout.CENTER);
JPanel bottomPanel = new JPanel(new BorderLayout());
bottomPanel.add(getPropertySheetScrollPane(), BorderLayout.CENTER);
bottomPanel.add(getButtonPanel(), BorderLayout.SOUTH);
splitPane.setTopComponent(topPanel);
splitPane.setBottomComponent(bottomPanel);
splitPane.resetToPreferredSizes();
splitPane.setContinuousLayout(true);
splitPane.setBackground(Color.WHITE);
}
return splitPane;
}
public JScrollPane getGraphScrollPane() {
if (graphScrollPane == null) {
graphScrollPane = new JScrollPane(getGraphPanel());
graphScrollPane.setPreferredSize(new Dimension(600,400));
graphScrollPane.setBackground(Color.WHITE);
}
return graphScrollPane;
}
public EvokedPotentialGraphPanel getGraphPanel() {
if (graphPanel == null) {
graphPanel = new EvokedPotentialGraphPanel();
}
return graphPanel;
}
public PropertySheetModel getPropertySheetModel() {
if (propertySheetModel == null) {
propertySheetModel = new PropertySheetModel();
}
return propertySheetModel;
}
public ViewerPropertySheet getPropertySheet() {
if (propertySheet == null) {
propertySheet = new ViewerPropertySheet(getPropertySheetModel());
}
return propertySheet;
}
public JScrollPane getPropertySheetScrollPane() {
if (propertySheetScrollPane == null) {
propertySheetScrollPane = new JScrollPane(getPropertySheet());
propertySheetScrollPane.setPreferredSize(new Dimension(400,170));
propertySheetScrollPane.setBackground(Color.WHITE);
}
return propertySheetScrollPane;
}
public JPanel getButtonPanel() {
if (buttonPanel == null) {
buttonPanel = new JPanel(new GridLayout(1, 3, 3, 3));
buttonPanel.setBorder(new EmptyBorder(3,3,3,3));
buttonPanel.add(getSaveChartsToFileButton());
buttonPanel.add(getSaveSamplesToFloatFileButton());
buttonPanel.add(getShowMinMaxButton());
}
return buttonPanel;
}
public JButton getSaveChartsToFileButton() {
if (saveChartsToFileButton == null) {
saveChartsToFileButton = new JButton(getExportAllEPChartsToFileAction());
}
return saveChartsToFileButton;
}
public ExportAllEPChartsToFileAction getExportAllEPChartsToFileAction() {
if (exportAllEPChartsToFileAction == null)
exportAllEPChartsToFileAction = new ExportAllEPChartsToFileAction(getFileChooser(), getGraphPanel());
return exportAllEPChartsToFileAction;
}
public ExportAllEPSamplesToFloatFileAction getExportAllEPSamplesToFloatFileAction() {
if (exportAllEPSamplesToFileAction == null)
exportAllEPSamplesToFileAction = new ExportAllEPSamplesToFloatFileAction(getFileChooser());
return exportAllEPSamplesToFileAction;
}
public ShowMinMaxAction getShowMinMaxAction() {
if (showMinMaxAction == null) {
showMinMaxAction = new ShowMinMaxAction(getFileChooser());
}
return showMinMaxAction;
}
public JButton getSaveSamplesToFloatFileButton() {
if (saveSamplesToFloatFileButton == null) {
saveSamplesToFloatFileButton = new JButton(getExportAllEPSamplesToFloatFileAction());
}
return saveSamplesToFloatFileButton;
}
public JButton getShowMinMaxButton() {
if (showMinMaxButton == null) {
showMinMaxButton = new JButton(getShowMinMaxAction());
}
return showMinMaxButton;
}
@Override
public void fillDialogFromModel(Object model) throws SignalMLException {
EvokedPotentialResult result = (EvokedPotentialResult) model;
getGraphPanel().setResult(result);
getPropertySheetModel().setSubject(new EvokedPotentialResultWrapper(result));
getExportAllEPSamplesToFloatFileAction().setResult(result);
getExportAllEPChartsToFileAction().setResult(result);
getShowMinMaxAction().setResult(result);
}
@Override
public void fillModelFromDialog(Object model) throws SignalMLException {
// nothing to do
}
@Override
public boolean isCancellable() {
return false;
}
@Override
public boolean supportsModelClass(Class<?> clazz) {
return EvokedPotentialResult.class.isAssignableFrom(clazz);
}
public ViewerFileChooser getFileChooser() {
return fileChooser;
}
public void setFileChooser(ViewerFileChooser fileChooser) {
this.fileChooser = fileChooser;
}
}