package com.dronecontrol.leapcontrol.injection; import com.google.inject.AbstractModule; import com.google.inject.Guice; import com.google.inject.Injector; import com.google.inject.Singleton; import com.dronecontrol.droneapi.DroneController; import com.dronecontrol.leapcontrol.control.DroneInputController; import com.dronecontrol.leapcontrol.entry.Main; import com.dronecontrol.leapcontrol.helpers.RaceTimer; import com.dronecontrol.leapcontrol.input.leapmotion.LeapMotionController; import com.dronecontrol.leapcontrol.input.leapmotion.LeapMotionListener; import com.dronecontrol.leapcontrol.input.speech.SpeechDetector; import com.dronecontrol.leapcontrol.ui.FxWindow; public class Context extends AbstractModule { private static Injector injector; public static <T> T getBean(Class<T> clazz) { if (injector == null) { injector = Guice.createInjector(new Context()); } return injector.getInstance(clazz); } // Used for value builder @SuppressWarnings("UnusedDeclaration") protected Injector getInjector() { return injector; } @Override protected void configure() { bind(Main.class).in(Singleton.class); bind(DroneInputController.class).in(Singleton.class); bind(FxWindow.class).in(Singleton.class); bind(DroneController.class).toProvider(DroneControllerProvider.class); bind(LeapMotionController.class).in(Singleton.class); bind(LeapMotionListener.class).in(Singleton.class); bind(SpeechDetector.class).in(Singleton.class); bind(RaceTimer.class).in(Singleton.class); } }