
us.ihmc.scs2.sessionVisualizer.jfx.controllers.sliderboard.YoDoubleSlider Maven / Gradle / Ivy
package us.ihmc.scs2.sessionVisualizer.jfx.controllers.sliderboard;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang3.mutable.MutableBoolean;
import com.jfoenix.controls.JFXSpinner;
import javafx.beans.property.DoubleProperty;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.beans.value.ChangeListener;
import javafx.scene.control.Slider;
import javafx.scene.control.TextField;
import javafx.scene.control.TextFormatter;
import javafx.util.converter.DoubleStringConverter;
import us.ihmc.scs2.definition.yoSlider.YoKnobDefinition;
import us.ihmc.scs2.definition.yoSlider.YoSliderDefinition;
import us.ihmc.scs2.sessionVisualizer.jfx.properties.YoDoubleProperty;
import us.ihmc.scs2.sessionVisualizer.jfx.tools.JavaFXMissingTools;
import us.ihmc.scs2.sessionVisualizer.sliderboard.SliderboardVariable;
import us.ihmc.scs2.sharedMemory.LinkedYoRegistry;
import us.ihmc.yoVariables.variable.YoDouble;
public class YoDoubleSlider implements YoVariableSlider
{
private final YoDoubleProperty yoDoubleProperty;
private final DoubleProperty minProperty = new SimpleDoubleProperty(this, "min", 0.0);
private final DoubleProperty maxProperty = new SimpleDoubleProperty(this, "max", 1.0);
private final List cleanupTasks = new ArrayList<>();
public YoDoubleSlider(YoDouble yoDouble, LinkedYoRegistry linkedYoRegistry)
{
yoDoubleProperty = new YoDoubleProperty(yoDouble, this);
yoDoubleProperty.setLinkedBuffer(linkedYoRegistry.linkYoVariable(yoDouble, yoDoubleProperty));
}
@Override
public void bindMinTextField(TextField minTextField)
{
TextFormatter minTextFormatter = new TextFormatter<>(new DoubleStringConverter());
minTextFormatter.setValue(Math.floor(yoDoubleProperty.get() - 1.0));
minTextField.setTextFormatter(minTextFormatter);
minProperty.bind(minTextFormatter.valueProperty());
minTextField.setDisable(false);
cleanupTasks.add(() ->
{
minProperty.unbind();
minTextField.setDisable(true);
});
}
@Override
public void bindMaxTextField(TextField maxTextField)
{
TextFormatter maxTextFormatter = new TextFormatter<>(new DoubleStringConverter());
maxTextFormatter.setValue(Math.ceil(yoDoubleProperty.get() + 1.0));
maxTextField.setTextFormatter(maxTextFormatter);
maxProperty.bind(maxTextFormatter.valueProperty());
maxTextField.setDisable(false);
cleanupTasks.add(() ->
{
maxProperty.unbind();
maxTextField.setDisable(true);
});
}
@Override
public void bindVirtualSlider(Slider virtualSlider)
{
virtualSlider.minProperty().bind(minProperty);
virtualSlider.maxProperty().bind(maxProperty);
ChangeListener
© 2015 - 2025 Weber Informatics LLC | Privacy Policy