diff options
author | Eduardo Pedroni <ep625@york.ac.uk> | 2014-04-08 20:04:12 +0100 |
---|---|---|
committer | Eduardo Pedroni <ep625@york.ac.uk> | 2014-04-08 20:04:12 +0100 |
commit | 260f1baaab10ab9b1db67ab587bc36adcb34494e (patch) | |
tree | 408c472a31c3fb26894c02f50803a36b684486bc /src/jcgp/gui/settings/parameters/GUIBooleanParameter.java | |
parent | 226365bd6a0f56143ffbce7379857ff3e126fbaf (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.java | 106 |
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()); } + } |