package jcgp.gui.settings.parameters; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.scene.control.CheckBox; import jcgp.backend.parameters.BooleanParameter; import jcgp.backend.parameters.ParameterStatus; import jcgp.gui.GUI; import jcgp.gui.settings.SettingsPane; public class GUIBooleanParameter extends GUIParameter { private boolean originalValue; GUIBooleanParameter(final BooleanParameter parameter, final SettingsPane sp) { super(); this.parameter = parameter; originalValue = parameter.get(); valueControl = new CheckBox(parameter.getName()); ((CheckBox) valueControl).setSelected(parameter.get()); valueControl.setDisable(parameter.isMonitor()); if (parameter.isMonitor()) { makeLightBinding(); } else { ((CheckBox) valueControl).selectedProperty().addListener(new ChangeListener() { @Override public void changed( ObservableValue observable, Boolean oldValue, Boolean newValue) { parameter.set(newValue); setValidityStyle(); sp.revalidateParameters(); } }); } getChildren().add(valueControl); } @Override public void refreshValue() { if (!((CheckBox) valueControl).selectedProperty().isBound()) { ((CheckBox) valueControl).setSelected(((BooleanParameter) parameter).get()); } } @Override public boolean requiresReset() { return (parameter.isCritical() && ((BooleanParameter) parameter).get() != originalValue) || parameter.getStatus() == ParameterStatus.WARNING_RESET; } @Override public void applyValue() { originalValue = ((BooleanParameter) parameter).get(); } /** * @param parameter */ private void setValidityStyle() { if (parameter.getStatus() == ParameterStatus.INVALID) { valueControl.setStyle(GUI.INVALID_PARAMETER_STYLE); valueControl.setTooltip(tooltip); tooltip.setText(parameter.getStatus().getDetails()); } else if (parameter.getStatus() == ParameterStatus.WARNING || parameter.getStatus() == ParameterStatus.WARNING_RESET) { valueControl.setStyle(GUI.WARNING_PARAMETER_STYLE); valueControl.setTooltip(tooltip); tooltip.setText(parameter.getStatus().getDetails()); } else { valueControl.setStyle(GUI.VALID_PARAMETER_STYLE); valueControl.setTooltip(null); } } @Override public void validate() { ((BooleanParameter) parameter).validate(((BooleanParameter) parameter).get()); setValidityStyle(); } }