package org.signalml.app.method.ep.view.minmax; import static org.signalml.app.util.i18n.SvarogI18n._; import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.FlowLayout; import java.util.ArrayList; import java.util.List; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTabbedPane; import javax.swing.JTable; import org.signalml.app.method.ep.action.SaveStatisticsAction; import org.signalml.app.method.ep.model.minmax.MinMaxTableModel; import org.signalml.app.method.ep.view.tags.TagStyleGroup; import org.signalml.app.view.common.dialogs.AbstractDialog; import org.signalml.app.view.workspace.ViewerFileChooser; import org.signalml.method.ep.EvokedPotentialResult; import org.signalml.plugin.export.SignalMLException; /** * A dialog containing the min/max averaged evoked potential signal values * and the times at which these min/max occured (for each channel). * @author Piotr Szachewicz */ public class MinMaxDialog extends AbstractDialog { private ViewerFileChooser fileChooser; private JTabbedPane tabbedPane; private List<String> tagStyles; public MinMaxDialog(ViewerFileChooser fileChooser) { super(); this.fileChooser = fileChooser; this.setTitle(_("Min/max dialog")); this.setPreferredSize(new Dimension(500, 380)); } @Override protected JComponent createInterface() { tabbedPane = new JTabbedPane(); return tabbedPane; } @Override public boolean supportsModelClass(Class<?> clazz) { return EvokedPotentialResult.class.isAssignableFrom(clazz); } @Override protected void fillDialogFromModel(Object model) throws SignalMLException { EvokedPotentialResult result = (EvokedPotentialResult) model; List<TagStyleGroup> tagStyleGroups = result.getData().getParameters().getAveragedTagStyles(); tabbedPane.removeAll(); tagStyles = new ArrayList<String>(); for (int i = 0; i < tagStyleGroups.size(); i++) { TagStyleGroup group = tagStyleGroups.get(i); String groupName = group.toString(); tagStyles.add(groupName); MinMaxTableModel tableModel = new MinMaxTableModel(); tableModel.setData(result, i); JTable table = new JTable(tableModel); JScrollPane scrollPane = new JScrollPane(table); JPanel panel = new JPanel(new BorderLayout()); panel.add(scrollPane, BorderLayout.CENTER); SaveStatisticsAction saveStatisticsAction = new SaveStatisticsAction(fileChooser, tableModel); JButton saveStatisticsButton = new JButton(saveStatisticsAction); JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); buttonPanel.add(saveStatisticsButton); panel.add(buttonPanel, BorderLayout.SOUTH); tabbedPane.addTab(groupName, panel); } } @Override public void fillModelFromDialog(Object model) throws SignalMLException { } }