/* MP5AlgorithmConfigPanel.java created 2008-01-30
*
*/
package org.signalml.app.method.mp5;
import static org.signalml.app.util.i18n.SvarogI18n._;
import java.awt.Component;
import javax.swing.Box;
import javax.swing.DefaultComboBoxModel;
import javax.swing.GroupLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.GroupLayout.Alignment;
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.SwingUtils;
import org.signalml.app.view.common.components.CompactButton;
import org.signalml.app.view.common.components.ResolvableComboBox;
import org.signalml.app.view.common.dialogs.AbstractDialog;
import org.signalml.method.mp5.MP5Algorithm;
import org.signalml.method.mp5.MP5Parameters;
import org.springframework.validation.Errors;
/** MP5AlgorithmConfigPanel
*
*
* @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o.
*/
public class MP5AlgorithmConfigPanel extends JPanel {
private static final long serialVersionUID = 1L;
private AbstractDialog owner;
private ResolvableComboBox algorithmComboBox;
private MP5Algorithm lastAlgorithm;
public MP5AlgorithmConfigPanel(AbstractDialog owner) {
super();
this.owner = owner;
initialize();
}
private void initialize() {
CompoundBorder border = new CompoundBorder(
new TitledBorder(_("Selection of the algorithm")),
new EmptyBorder(3,3,3,3)
);
setBorder(border);
GroupLayout layout = new GroupLayout(this);
this.setLayout(layout);
layout.setAutoCreateContainerGaps(false);
layout.setAutoCreateGaps(true);
JLabel algorithmLabel = new JLabel(_("MP version"));
// CompactButton algorithmHelpButton = SwingUtils.createFieldHelpButton(owner, MP5MethodDialog.HELP_ALGORITHM);
Component glue1 = Box.createHorizontalGlue();
GroupLayout.SequentialGroup hGroup = layout.createSequentialGroup();
hGroup.addGroup(
layout.createParallelGroup()
.addComponent(algorithmLabel)
);
hGroup.addGroup(
layout.createParallelGroup()
.addComponent(glue1)
);
hGroup.addGroup(
layout.createParallelGroup()
.addComponent(getAlgorithmComboBox())
);
// hGroup.addGroup(
// layout.createParallelGroup()
// .addComponent(algorithmHelpButton)
// );
layout.setHorizontalGroup(hGroup);
GroupLayout.SequentialGroup vGroup = layout.createSequentialGroup();
vGroup.addGroup(
layout.createParallelGroup(Alignment.CENTER)
.addComponent(algorithmLabel)
.addComponent(glue1)
.addComponent(getAlgorithmComboBox())
// .addComponent(algorithmHelpButton)
);
layout.setVerticalGroup(vGroup);
}
public ResolvableComboBox getAlgorithmComboBox() {
if (algorithmComboBox == null) {
algorithmComboBox = new ResolvableComboBox();
algorithmComboBox.setModel(new DefaultComboBoxModel(MP5Algorithm.values()));
algorithmComboBox.setPreferredSize(MP5MethodDialog.FIELD_SIZE);
algorithmComboBox.setMaximumSize(MP5MethodDialog.FIELD_SIZE);
algorithmComboBox.setMinimumSize(MP5MethodDialog.FIELD_SIZE);
}
return algorithmComboBox;
}
public void fillPanelFromParameters(MP5Parameters parameters) {
if (getAlgorithmComboBox().isEnabled())
getAlgorithmComboBox().setSelectedItem(parameters.getAlgorithm());
lastAlgorithm = null;
}
public void fillParametersFromPanel(MP5Parameters parameters) {
parameters.setAlgorithm((MP5Algorithm) getAlgorithmComboBox().getSelectedItem());
}
public void validatePanel(ValidationErrors errors) {
// nothing to do
}
public void setMMPEnabled(boolean mmpEnabled) {
if (mmpEnabled != algorithmComboBox.isEnabled()) {
ResolvableComboBox algorithmBox = getAlgorithmComboBox();
if (mmpEnabled) {
if (lastAlgorithm != null) {
algorithmBox.setSelectedItem(lastAlgorithm);
}
} else {
lastAlgorithm = (MP5Algorithm) algorithmBox.getSelectedItem();
algorithmBox.setSelectedItem(MP5Algorithm.SMP);
}
algorithmBox.setEnabled(mmpEnabled);
algorithmBox.repaint();
}
}
}