package de.tobiyas.racesandclasses.standalonegui.data.option.specific;
import java.awt.BorderLayout;
import javax.swing.JCheckBox;
import javax.swing.JPanel;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import de.tobiyas.racesandclasses.standalonegui.data.option.AbstractTraitConfigOption;
import de.tobiyas.racesandclasses.standalonegui.data.option.OptionType;
import de.tobiyas.racesandclasses.standalonegui.gui.MainFrame;
public class TraitConfigBooleanOption extends AbstractTraitConfigOption {
/**
* The Value to set.
*/
private boolean value = false;
public TraitConfigBooleanOption(String name, boolean optional) {
super(OptionType.Boolean, name, optional);
this.setOptions(new String[]{"true", "false"});
}
public TraitConfigBooleanOption(String name, boolean optional, boolean value) {
this(name, optional);
this.value = value;
}
@Override
public void valueSelected(String value) {
try{
this.value = Boolean.parseBoolean(value);
this.needsSave = true;
this.setCreated(true);
}catch(Throwable exp){}
}
@Override
public String getCurrentSelection() {
return Boolean.toString(value);
}
@Override
public boolean isAcceptable(String value) {
if(super.isAcceptable(value)) return true;
return value.equals("true") || value.equals("false");
}
@Override
public String toString() {
return name + ": " + value;
}
@Override
public void reset() {
super.reset();
this.value = false;
}
@Override
public void addWithConfigOption(JPanel panel) {
JPanel mainPanel = generateEmptyRightPanel();
JCheckBox check = new JCheckBox(name);
check.setSelected(value);
check.setHorizontalAlignment(JCheckBox.CENTER);
check.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
JCheckBox checkBox = (JCheckBox) e.getSource();
value = checkBox.isSelected();
MainFrame.treeUpdated();
}
});
mainPanel.add(check);
panel.add(mainPanel, BorderLayout.CENTER);
}
}