diff options
Diffstat (limited to 'src/jcgp/gui/settings/parameters/GUIBooleanParameter.java')
-rw-r--r-- | src/jcgp/gui/settings/parameters/GUIBooleanParameter.java | 63 |
1 files changed, 44 insertions, 19 deletions
diff --git a/src/jcgp/gui/settings/parameters/GUIBooleanParameter.java b/src/jcgp/gui/settings/parameters/GUIBooleanParameter.java index 8acd6dd..da564f7 100644 --- a/src/jcgp/gui/settings/parameters/GUIBooleanParameter.java +++ b/src/jcgp/gui/settings/parameters/GUIBooleanParameter.java @@ -1,46 +1,71 @@ 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; public class GUIBooleanParameter extends GUIParameter { - GUIBooleanParameter(BooleanParameter parameter) { + private boolean originalValue; + + GUIBooleanParameter(final BooleanParameter parameter) { super(); this.parameter = parameter; - value = new CheckBox(parameter.getName()); - ((CheckBox) value).setSelected(parameter.get()); + originalValue = parameter.get(); + + valueControl = new CheckBox(parameter.getName()); + ((CheckBox) valueControl).setSelected(parameter.get()); - value.setDisable(parameter.isMonitor()); + valueControl.setDisable(parameter.isMonitor()); if (parameter.isMonitor()) { makeLightBinding(); - System.out.println("light binding made for " + name); + } else { + ((CheckBox) valueControl).selectedProperty().addListener(new ChangeListener<Boolean>() { + @Override + public void changed( + ObservableValue<? extends Boolean> observable, + Boolean oldValue, Boolean newValue) { + parameter.set(newValue); + 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) { + valueControl.setStyle(GUI.WARNING_PARAMETER_STYLE); + valueControl.setTooltip(tooltip); + tooltip.setText(parameter.getStatus().getDetails()); + } else { + valueControl.setStyle(GUI.VALID_PARAMETER_STYLE); + valueControl.setTooltip(null); + } + } + }); } - getChildren().add(value); + getChildren().add(valueControl); } @Override public void refreshValue() { - if (!((CheckBox) value).selectedProperty().isBound()) { - ((CheckBox) value).setSelected(((BooleanParameter) parameter).get()); + if (!((CheckBox) valueControl).selectedProperty().isBound()) { + ((CheckBox) valueControl).setSelected(((BooleanParameter) parameter).get()); } - } - + @Override - public boolean applyChange() { - if (((CheckBox) value).isSelected() != ((BooleanParameter) parameter).get() && (!parameter.isMonitor())) { - // apply value - ((BooleanParameter) parameter).set(((CheckBox) value).isSelected()); - if (parameter.isCritical()) { - return true; - } - } - return false; + public boolean requiresReset() { + return parameter.isCritical() && ((BooleanParameter) parameter).get() != originalValue; + } + + @Override + public void applyValue() { + originalValue = ((BooleanParameter) parameter).get(); } } |