/* MP5ResultDialog.java created 2008-02-20 * */ package org.signalml.app.method.mp5; import static org.signalml.app.util.i18n.SvarogI18n._; import java.awt.BorderLayout; import java.awt.Window; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import javax.swing.BoxLayout; import javax.swing.JCheckBox; import javax.swing.JComponent; import javax.swing.JPanel; import javax.swing.border.CompoundBorder; import javax.swing.border.EmptyBorder; import javax.swing.border.TitledBorder; import org.signalml.app.model.components.validation.ValidationErrors; import org.signalml.app.util.IconUtils; import org.signalml.app.view.common.dialogs.AbstractDialog; import org.signalml.app.view.workspace.ViewerFileChooser; import org.signalml.plugin.export.SignalMLException; import org.springframework.validation.Errors; /** MP5ResultDialog * * * @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o. */ public class MP5ResultDialog extends AbstractDialog { private static final long serialVersionUID = 1L; private ViewerFileChooser fileChooser; private JCheckBox openInWindowCheckBox; private JCheckBox saveToFileCheckBox; private MP5ResultBookPanel bookPanel; public MP5ResultDialog() { super(); } public MP5ResultDialog(Window w, boolean isModal) { super(w, isModal); } @Override protected void initialize() { setTitle(_("MP Decomposition results")); setIconImage(IconUtils.loadClassPathImage(MP5MethodDescriptor.ICON_PATH)); setResizable(false); super.initialize(); } @Override public JComponent createInterface() { JPanel interfacePanel = new JPanel(new BorderLayout()); JPanel checkBoxPanel = new JPanel(); checkBoxPanel.setLayout(new BoxLayout(checkBoxPanel, BoxLayout.Y_AXIS)); CompoundBorder border = new CompoundBorder( new TitledBorder(_("Choose result targets")), new EmptyBorder(3,3,3,3) ); checkBoxPanel.setBorder(border); checkBoxPanel.add(getOpenInWindowCheckBox()); checkBoxPanel.add(getSaveToFileCheckBox()); interfacePanel.add(checkBoxPanel, BorderLayout.NORTH); interfacePanel.add(getBookPanel(), BorderLayout.CENTER); return interfacePanel; } public JCheckBox getOpenInWindowCheckBox() { if (openInWindowCheckBox == null) { openInWindowCheckBox = new JCheckBox(_("Open in the viewer")); } return openInWindowCheckBox; } public JCheckBox getSaveToFileCheckBox() { if (saveToFileCheckBox == null) { saveToFileCheckBox = new JCheckBox(_("Save to file"), true); saveToFileCheckBox.addItemListener(new ItemListener() { @Override public void itemStateChanged(ItemEvent e) { boolean selected = (e.getStateChange() == ItemEvent.SELECTED); getBookPanel().setEnabled(selected); } }); } return saveToFileCheckBox; } public MP5ResultBookPanel getBookPanel() { if (bookPanel == null) { bookPanel = new MP5ResultBookPanel(fileChooser); } return bookPanel; } @Override public void fillDialogFromModel(Object model) throws SignalMLException { MP5ResultTargetDescriptor descriptor = (MP5ResultTargetDescriptor) model; getOpenInWindowCheckBox().setSelected(descriptor.isOpenInWindow()); getSaveToFileCheckBox().setSelected(descriptor.isSaveToFile()); getBookPanel().fillPanelFromModel(descriptor); } @Override public void fillModelFromDialog(Object model) throws SignalMLException { MP5ResultTargetDescriptor descriptor = (MP5ResultTargetDescriptor) model; descriptor.setOpenInWindow(getOpenInWindowCheckBox().isSelected()); boolean saveToFile = getSaveToFileCheckBox().isSelected(); descriptor.setSaveToFile(saveToFile); if (saveToFile) { getBookPanel().fillModelFromPanel(descriptor); } else { descriptor.setBookFile(null); } } @Override public void validateDialog(Object model, ValidationErrors errors) throws SignalMLException { super.validateDialog(model, errors); if (getSaveToFileCheckBox().isSelected()) { getBookPanel().validatePanel(errors); } } @Override public boolean supportsModelClass(Class<?> clazz) { return MP5ResultTargetDescriptor.class.isAssignableFrom(clazz); } public ViewerFileChooser getFileChooser() { return fileChooser; } public void setFileChooser(ViewerFileChooser fileChooser) { this.fileChooser = fileChooser; } }