aboutsummaryrefslogtreecommitdiffstats
path: root/src/jcgp/gui/settings/parameters/GUIBooleanParameter.java
diff options
context:
space:
mode:
authorEduardo Pedroni <ep625@york.ac.uk>2014-04-08 20:04:12 +0100
committerEduardo Pedroni <ep625@york.ac.uk>2014-04-08 20:04:12 +0100
commit260f1baaab10ab9b1db67ab587bc36adcb34494e (patch)
tree408c472a31c3fb26894c02f50803a36b684486bc /src/jcgp/gui/settings/parameters/GUIBooleanParameter.java
parent226365bd6a0f56143ffbce7379857ff3e126fbaf (diff)
GUIParameters all refactored and commented.
Diffstat (limited to 'src/jcgp/gui/settings/parameters/GUIBooleanParameter.java')
-rw-r--r--src/jcgp/gui/settings/parameters/GUIBooleanParameter.java106
1 files changed, 51 insertions, 55 deletions
diff --git a/src/jcgp/gui/settings/parameters/GUIBooleanParameter.java b/src/jcgp/gui/settings/parameters/GUIBooleanParameter.java
index 4339562..bada5d4 100644
--- a/src/jcgp/gui/settings/parameters/GUIBooleanParameter.java
+++ b/src/jcgp/gui/settings/parameters/GUIBooleanParameter.java
@@ -3,83 +3,79 @@ package jcgp.gui.settings.parameters;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.control.CheckBox;
+import javafx.scene.control.Control;
import jcgp.backend.resources.parameters.BooleanParameter;
import jcgp.backend.resources.parameters.ParameterStatus;
+import jcgp.gui.GUI;
import jcgp.gui.settings.SettingsPane;
-public class GUIBooleanParameter extends GUIParameter {
-
- private boolean originalValue;
+/**
+ * This extension of GUIParameter uses a CheckBox to display
+ * the value of a BooleanParameter. It cannot be constructed
+ * directly - instead, use GUIParameter.create().
+ * <br><br>
+ * See {@link GUIParameter} for more information.
+ *
+ * @author Eduardo Pedroni
+ */
+public class GUIBooleanParameter extends GUIParameter<Boolean> {
+
+ private CheckBox checkBox;
+ /**
+ * This default-visibility constructor is intended for use
+ * by the factory method only.
+ *
+ */
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<Boolean>() {
- @Override
- public void changed(
- ObservableValue<? extends Boolean> 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());
- }
+ super(parameter, sp);
}
@Override
- public boolean requiresReset() {
- return (parameter.isCritical() && ((BooleanParameter) parameter).get() != originalValue)
- || parameter.getStatus() == ParameterStatus.WARNING_RESET;
+ protected Control makeControl() {
+ checkBox = new CheckBox();
+ checkBox.setSelected(parameter.get());
+
+ return checkBox;
}
@Override
- public void applyValue() {
- originalValue = ((BooleanParameter) parameter).get();
+ protected void setControlListeners(final SettingsPane sp) {
+ /* pass the CheckBox value back to the parameter whenever it gets
+ * modified, provided the experiment isn't running */
+ checkBox.selectedProperty().addListener(new ChangeListener<Boolean>() {
+ @Override
+ public void changed(
+ ObservableValue<? extends Boolean> observable,
+ Boolean oldValue, Boolean newValue) {
+ if (!GUI.isWorking()) {
+ parameter.set(newValue);
+ sp.revalidateParameters();
+ }
+ }
+ });
}
- /**
- * @param parameter
- */
- private void setValidityStyle() {
+ @Override
+ protected void setValidityStyle() {
+ // update the Control's style and tooltip based on the status of the parameter
if (parameter.getStatus() == ParameterStatus.INVALID) {
- valueControl.setStyle(BASE_CHECKBOX_STYLE + INVALID_PARAMETER_STYLE);
- valueControl.setTooltip(tooltip);
+ checkBox.setStyle(BASE_CHECKBOX_STYLE + INVALID_PARAMETER_STYLE);
+ checkBox.setTooltip(tooltip);
tooltip.setText(parameter.getStatus().getDetails());
} else if (parameter.getStatus() == ParameterStatus.WARNING || parameter.getStatus() == ParameterStatus.WARNING_RESET) {
- valueControl.setStyle(BASE_CHECKBOX_STYLE + WARNING_PARAMETER_STYLE);
- valueControl.setTooltip(tooltip);
+ checkBox.setStyle(BASE_CHECKBOX_STYLE + WARNING_PARAMETER_STYLE);
+ checkBox.setTooltip(tooltip);
tooltip.setText(parameter.getStatus().getDetails());
} else {
- valueControl.setStyle(BASE_CHECKBOX_STYLE + VALID_PARAMETER_STYLE);
- valueControl.setTooltip(null);
+ checkBox.setStyle(BASE_CHECKBOX_STYLE + VALID_PARAMETER_STYLE);
+ checkBox.setTooltip(null);
}
}
@Override
- public void validate() {
- ((BooleanParameter) parameter).validate(((BooleanParameter) parameter).get());
- setValidityStyle();
+ public void refreshValue() {
+ checkBox.setSelected(parameter.get());
}
+
}