package se.pingstteknik.propresenter.stagedisplayviewer; import javafx.application.Application; import javafx.event.EventHandler; import javafx.scene.Scene; import javafx.scene.text.Text; import javafx.stage.Stage; import javafx.stage.WindowEvent; import se.pingstteknik.propresenter.stagedisplayviewer.config.Property; import se.pingstteknik.propresenter.stagedisplayviewer.eventhandler.SceneKeyTypedHandler; import se.pingstteknik.propresenter.stagedisplayviewer.runner.LowerKeyHandler; import se.pingstteknik.propresenter.stagedisplayviewer.util.FxUtils; import se.pingstteknik.propresenter.stagedisplayviewer.util.Logger; import se.pingstteknik.propresenter.stagedisplayviewer.util.LoggerFactory; import se.pingstteknik.propresenter.stagedisplayviewer.util.MidiModule; import java.io.IOException; /** * @author Daniel Kihlgren * @version 1.6.0 * @since 1.0.0 */ public class Main extends Application { private static final Logger log = LoggerFactory.getLogger(Main.class); private static final String PROGRAM_TITLE = "Stage display Lower Key viewer"; private static LowerKeyHandler lowerKeyHandler; private static Thread thread; private MidiModule midiModule; public static void main(String[] args) throws IOException { launch(args); } @Override public void start(final Stage primaryStage) throws IOException { log.info("Starting program"); final FxUtils fxUtils = new FxUtils(); Property.loadProperties(); Text lowerKey = fxUtils.createLowerKey(); midiModule = new MidiModule(); lowerKeyHandler = new LowerKeyHandler(lowerKey, midiModule); thread = new Thread(lowerKeyHandler); primaryStage.setTitle(PROGRAM_TITLE); Scene scene = fxUtils.createScene(lowerKey); scene.setOnKeyTyped(new SceneKeyTypedHandler(primaryStage)); primaryStage.setScene(scene); fxUtils.startOnCorrectScreen(primaryStage); primaryStage.setOnCloseRequest(getEventHandler()); primaryStage.setFullScreen(Property.START_IN_FULLSCREEN.isTrue()); primaryStage.show(); thread.start(); } private EventHandler<WindowEvent> getEventHandler() { return new EventHandler<WindowEvent>() { public void handle(WindowEvent we) { midiModule.terminate(); lowerKeyHandler.terminate(); } }; } }