35 lines
1023 B
Java
35 lines
1023 B
Java
|
|
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<String> out = new AtomicReference<>("");
|
||
|
|
FxThreadBridge.runAndWait(() -> {
|
||
|
|
String s = Clipboard.getSystemClipboard().getString();
|
||
|
|
out.set(s == null ? "" : s);
|
||
|
|
});
|
||
|
|
return out.get();
|
||
|
|
}
|
||
|
|
}
|