All Downloads are FREE. Search and download functionalities are using the official Maven repository.

us.ihmc.scs2.sessionVisualizer.jfx.controllers.sliderboard.bcf2000.YoBCF2000ButtonController Maven / Gradle / Ivy

package us.ihmc.scs2.sessionVisualizer.jfx.controllers.sliderboard.bcf2000;

import javafx.fxml.FXML;
import javafx.scene.control.ToggleButton;
import javafx.scene.layout.VBox;
import us.ihmc.log.LogTools;
import us.ihmc.scs2.definition.yoSlider.YoButtonDefinition;
import us.ihmc.scs2.sessionVisualizer.jfx.controllers.sliderboard.YoBooleanSlider;
import us.ihmc.scs2.sessionVisualizer.jfx.controllers.sliderboard.YoVariableSlider;
import us.ihmc.scs2.sessionVisualizer.jfx.managers.SessionVisualizerToolkit;
import us.ihmc.scs2.sessionVisualizer.jfx.managers.YoManager;
import us.ihmc.scs2.sessionVisualizer.sliderboard.MidiChannelConfig;
import us.ihmc.scs2.sessionVisualizer.sliderboard.SliderboardVariable;
import us.ihmc.yoVariables.variable.YoBoolean;
import us.ihmc.yoVariables.variable.YoVariable;

public class YoBCF2000ButtonController extends YoBCF2000InputController
{
   @FXML
   private VBox rootPane;
   @FXML
   private ToggleButton button;

   private SliderboardVariable sliderVariable;

   private YoBooleanSlider yoBooleanSlider;
   private YoManager yoManager;
   private MidiChannelConfig buttonChannel;

   public void initialize(SessionVisualizerToolkit toolkit, MidiChannelConfig buttonChannel, SliderboardVariable sliderVariable)
   {
      this.buttonChannel = buttonChannel;
      this.sliderVariable = sliderVariable;
      yoManager = toolkit.getYoManager();
      super.initialize(toolkit, rootPane, button, YoBoolean.class::isInstance);

      clear();
   }

   @Override
   public void clear()
   {
      if (yoBooleanSlider != null)
         yoBooleanSlider.dispose();
      yoBooleanSlider = null;

      super.clear();

      button.setDisable(true);
   }

   public void setInput(YoButtonDefinition definition)
   {
      if (definition == null)
      {
         clear();
         return;
      }

      YoVariable yoVariable;
      if (definition.getVariableName() != null)
      {
         yoVariable = yoManager.getRootRegistryDatabase().searchExact(definition.getVariableName());
         if (yoVariable == null)
            LogTools.warn("Could not find variable for slider: " + definition.getVariableName());
      }
      else
      {
         yoVariable = null;
      }

      setYoVariableInput(yoVariable);
   }

   @Override
   public void setYoVariableInput(YoVariable yoVariable)
   {
      if (yoBooleanSlider != null)
         yoBooleanSlider.dispose();

      if (yoVariable == null || !(yoVariable instanceof YoBoolean))
      {
         clear();
         return;
      }

      button.setDisable(false);

      yoBooleanSlider = (YoBooleanSlider) YoVariableSlider.newYoVariableSlider(yoVariable, yoManager.getLinkedRootRegistry());
      if (sliderVariable != null)
         yoBooleanSlider.bindSliderVariable(sliderVariable);
      yoBooleanSlider.getYoBooleanProperty().bindBooleanProperty(button.selectedProperty());

      setupYoVariableSlider(yoBooleanSlider);
   }

   public YoButtonDefinition toYoButtonDefinition()
   {
      YoButtonDefinition definition = new YoButtonDefinition();
      if (yoBooleanSlider != null)
         definition.setVariableName(yoBooleanSlider.getYoVariable().getFullNameString());
      definition.setIndex(buttonChannel.ordinal());
      return definition;
   }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy