package org.openautonomousconnection.luascript.fx; import javafx.application.Platform; import javafx.scene.input.Clipboard; import javafx.scene.input.ClipboardContent; import org.openautonomousconnection.luascript.hosts.ClipboardHost; import java.util.Objects; import java.util.concurrent.atomic.AtomicReference; /** * JavaFX clipboard host (text only). */ public final class FxClipboardHost implements ClipboardHost { @Override public void setText(String text) { String s = text == null ? "" : text; Platform.runLater(() -> { ClipboardContent c = new ClipboardContent(); c.putString(s); Clipboard.getSystemClipboard().setContent(c); }); } @Override public String getText() { AtomicReference out = new AtomicReference<>(""); FxThreadBridge.runAndWait(() -> { String s = Clipboard.getSystemClipboard().getString(); out.set(s == null ? "" : s); }); return out.get(); } }