package org.expeditee.gio.javafx; import org.expeditee.gio.ClipboardManager; import org.expeditee.gio.DragAndDropManager; import org.expeditee.gio.EcosystemManager; import org.expeditee.gio.FontManager; import org.expeditee.gio.GraphicsManager; import org.expeditee.gio.ImageManager; import org.expeditee.gio.InputManager; import org.expeditee.gio.MiscManager; import org.expeditee.gio.TextLayoutManager; import javafx.application.Platform; import javafx.beans.property.ReadOnlyProperty; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; public class JavaFXMiscManager extends MiscManager { /** Singleton instance. */ private static JavaFXMiscManager _instance; /** Singleton instantiator. */ public static JavaFXMiscManager getInstance() { if (_instance == null) _instance = new JavaFXMiscManager(); return _instance; } /** Gets the JavaFXClipboardManager if it being used. */ public static JavaFXClipboardManager getIfUsingJavaFXClipboardManager() { ClipboardManager manager = EcosystemManager.getClipboardManager(); if (manager instanceof JavaFXClipboardManager) { return (JavaFXClipboardManager) manager; } return null; } /** Gets the JavaFXDragAndDropManager if it being used. */ public static JavaFXDragAndDropManager getIfUsingJavaFXDragAndDropManager() { DragAndDropManager manager = EcosystemManager.getDragAndDropManager(); if (manager instanceof JavaFXDragAndDropManager) { return (JavaFXDragAndDropManager) manager; } return null; } /** Gets the JavaFXFontManager if it being used. */ public static JavaFXFontManager getIfUsingJavaFXFontManager() { FontManager manager = EcosystemManager.getFontManager(); if (manager instanceof JavaFXFontManager) { return (JavaFXFontManager) manager; } return null; } /** Gets the JavaFXGraphicsManager if it being used. */ public static JavaFXGraphicsManager getIfUsingJavaFXGraphicsManager() { GraphicsManager manager = EcosystemManager.getGraphicsManager(); if (manager instanceof JavaFXGraphicsManager) { return (JavaFXGraphicsManager) manager; } return null; } /** Gets the JavaFXImageManager if it being used. */ public static JavaFXImageManager getIfUsingJavaFXImageManager() { ImageManager manager = EcosystemManager.getImageManager(); if (manager instanceof JavaFXImageManager) { return (JavaFXImageManager) manager; } return null; } /** Gets the JavaFXInputManager if it being used. */ public static JavaFXInputManager getIfUsingJavaFXInputManager() { InputManager manager = EcosystemManager.getInputManager(); if (manager instanceof JavaFXInputManager) { return (JavaFXInputManager) manager; } return null; } /** Gets the JavaFXMiscManager if it being used. */ public static JavaFXMiscManager getIfUsingJavaFXMiscManager() { MiscManager manager = EcosystemManager.getMiscManager(); if (manager instanceof JavaFXMiscManager) { return (JavaFXMiscManager) manager; } return null; } /** Gets the JavaFXTextLayoutManager if it being used. */ public static JavaFXTextLayoutManager getIfUsingJavaFXTextLayoutManager() { TextLayoutManager manager = EcosystemManager.getTextLayoutManager(); if (manager instanceof JavaFXTextLayoutManager) { return (JavaFXTextLayoutManager) manager; } return null; } /** Blocks until the value of the given property equals the given value. */ public static void waitUntilPropertyEquals(ReadOnlyProperty property, T value) { if (property.getValue().equals(value)) return; ChangeListener listener = new ChangeListener() { @Override public void changed(ObservableValue observable, T oldValue, T newValue) { if (newValue == value || newValue.equals(value)) { synchronized (this) { notify(); } } } }; synchronized (listener) { property.addListener(listener); while (!property.getValue().equals(value)) { try { listener.wait(); } catch (InterruptedException e) { } } property.removeListener(listener); } } @Override public void beep() { // TODO Auto-generated method stub } @Override public boolean browse(String url) { // TODO Auto-generated method stub return false; } @Override public String print(String file) { // TODO Auto-generated method stub return null; } @Override public String open(String file) { // TODO Auto-generated method stub return null; } @Override protected void scheduleRunnable(Runnable routine) { Platform.runLater(routine); } @Override protected boolean isGIOThread() { return Platform.isFxApplicationThread(); } }