package org.signalml.app.view.common.components.panels;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JCheckBox;
import org.signalml.app.model.components.validation.ValidationErrors;
public abstract class PanelWithEnablingCheckbox<T extends AbstractPanel> extends AbstractPanel implements ActionListener {
private JCheckBox checkbox;
protected T panel;
public PanelWithEnablingCheckbox(String title) {
super(title);
createInterface();
}
protected void createInterface() {
setLayout(new BorderLayout());
add(getCheckbox(), BorderLayout.NORTH);
add(getPanel(), BorderLayout.CENTER);
}
private JCheckBox getCheckbox() {
if (checkbox == null) {
checkbox = new JCheckBox(getEnableCheckboxText());
checkbox.addActionListener(this);
actionPerformed(null);
}
return checkbox;
}
protected abstract String getEnableCheckboxText();
protected abstract T getPanel();
@Override
public void actionPerformed(ActionEvent event) {
getPanel().setEnabledAll(isCheckboxSelected());
}
protected boolean isCheckboxSelected() {
return getCheckbox().isSelected();
}
public void setCheckboxSelected(boolean selected) {
getCheckbox().setSelected(selected);
actionPerformed(null);
}
@Override
public void validatePanel(ValidationErrors errors) {
getPanel().validatePanel(errors);
}
}