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

us.ihmc.scs2.sessionVisualizer.jfx.tools.SCS2JavaFXMessager Maven / Gradle / Ivy

package us.ihmc.scs2.sessionVisualizer.jfx.tools;

import java.util.HashMap;
import java.util.concurrent.atomic.AtomicReference;

import javafx.animation.AnimationTimer;
import javafx.beans.property.Property;
import us.ihmc.messager.MessagerAPIFactory.MessagerAPI;
import us.ihmc.messager.MessagerAPIFactory.Topic;
import us.ihmc.messager.javafx.SharedMemoryJavaFXMessager;

public class SCS2JavaFXMessager extends SharedMemoryJavaFXMessager
{
   private final AnimationTimer animationTimer;
   private final HashMap, AtomicReference> internalBuffer = new HashMap<>();

   public SCS2JavaFXMessager(MessagerAPI messagerAPI)
   {
      super(messagerAPI, true);

      animationTimer = new ObservedAnimationTimer(getClass().getSimpleName())
      {
         @Override
         public void handleImpl(long now)
         {
            updateFXTopicListeners();
         }
      };

      for (Topic topic : messagerAPI.getAllTopics())
         internalBuffer.put(topic, super.createInput(topic, null));
   }

   @Override
   public void startMessager()
   {
      super.startMessager();
      animationTimer.start();
   }

   @Override
   public void closeMessager()
   {
      animationTimer.stop();
      super.closeMessager();
   }

   @Override
   protected void runFXLater(Runnable fxTask)
   {
      JavaFXMissingTools.runLater(getClass(), fxTask);
   }

   @Override
   protected void runFXAndWait(final Runnable fxTask)
   {
      JavaFXMissingTools.runAndWait(getClass(), fxTask);
   }

   @SuppressWarnings("unchecked")
   public  T getLastValue(Topic topic)
   {
      return (T) internalBuffer.get(topic).get();
   }

   @SuppressWarnings("unchecked")
   @Override
   public  AtomicReference createInput(Topic topic, T defaultValue)
   {
      if (defaultValue == null)
         return super.createInput(topic, (T) internalBuffer.get(topic).get());
      else
         return super.createInput(topic, defaultValue);
   }

   @SuppressWarnings("unchecked")
   @Override
   public  Property createPropertyInput(Topic topic, T initialValue)
   {
      if (initialValue == null)
         return super.createPropertyInput(topic, (T) internalBuffer.get(topic).get());
      else
         return super.createPropertyInput(topic, initialValue);
   }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy