aboutsummaryrefslogtreecommitdiffstats
path: root/src/jcgp/gui/settings/parameters/GUIBooleanParameter.java
diff options
context:
space:
mode:
authorEduardo Pedroni <e.pedroni91@gmail.com>2015-03-09 17:03:48 -0300
committerEduardo Pedroni <e.pedroni91@gmail.com>2015-03-09 17:03:48 -0300
commitd69fa8746728367646494fd8c2c18944f306c6a2 (patch)
treef063f9efc6c93a5520991f509f3a481543b73a91 /src/jcgp/gui/settings/parameters/GUIBooleanParameter.java
parent9062115b7d15cb05552632dc5486a5cd15a45289 (diff)
Added existing source code
Diffstat (limited to 'src/jcgp/gui/settings/parameters/GUIBooleanParameter.java')
-rw-r--r--src/jcgp/gui/settings/parameters/GUIBooleanParameter.java82
1 files changed, 82 insertions, 0 deletions
diff --git a/src/jcgp/gui/settings/parameters/GUIBooleanParameter.java b/src/jcgp/gui/settings/parameters/GUIBooleanParameter.java
new file mode 100644
index 0000000..a1f03fe
--- /dev/null
+++ b/src/jcgp/gui/settings/parameters/GUIBooleanParameter.java
@@ -0,0 +1,82 @@
+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.parameters.BooleanParameter;
+import jcgp.backend.parameters.ParameterStatus;
+import jcgp.gui.constants.Constants;
+import jcgp.gui.settings.SettingsPane;
+
+/**
+ * This extension of @code{GUIParameter} uses a @code{CheckBox} to display
+ * the value of a @code{BooleanParameter}. It cannot be constructed
+ * directly - instead, use @code{GUIParameter.create()}.
+ * <br><br>
+ * See {@link GUIParameter} for more information.
+ *
+ * @author Eduardo Pedroni
+ */
+public class GUIBooleanParameter extends GUIParameter<Boolean> {
+
+ private CheckBox checkBox;
+
+ /**
+ * This protected constructor is intended for use
+ * by the factory method only.
+ *
+ */
+ protected GUIBooleanParameter(BooleanParameter parameter, SettingsPane sp) {
+ super(parameter, sp);
+ }
+
+ @Override
+ protected Control makeControl() {
+ checkBox = new CheckBox();
+ checkBox.setSelected(parameter.get());
+
+ return checkBox;
+ }
+
+ @Override
+ protected void setControlListeners() {
+ /* 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 (!settingsPane.isExperimentRunning()) {
+ parameter.set(newValue);
+ settingsPane.revalidateParameters();
+ }
+ }
+ });
+ }
+
+ @Override
+ protected void setValidityStyle() {
+ // update the Control's style and tooltip based on the status of the parameter
+ if (parameter.getStatus() == ParameterStatus.INVALID) {
+ checkBox.setStyle(Constants.BASE_CHECKBOX_STYLE + Constants.INVALID_PARAMETER_STYLE);
+ checkBox.setTooltip(tooltip);
+ tooltip.setText(parameter.getStatus().getDetails());
+ } else if (parameter.getStatus() == ParameterStatus.WARNING
+ || parameter.getStatus() == ParameterStatus.WARNING_RESET) {
+ checkBox.setStyle(Constants.BASE_CHECKBOX_STYLE + Constants.WARNING_PARAMETER_STYLE);
+ checkBox.setTooltip(tooltip);
+ tooltip.setText(parameter.getStatus().getDetails());
+ } else {
+ checkBox.setStyle(Constants.BASE_CHECKBOX_STYLE + Constants.VALID_PARAMETER_STYLE);
+ checkBox.setTooltip(null);
+ }
+ }
+
+ @Override
+ public void refreshValue() {
+ checkBox.setSelected(parameter.get());
+ }
+
+}