Skip to content

Commit 9574718

Browse files
authored
Merge pull request #3826 from ControlSystemStudio/clipboard_api
Utility API for putting string on clipboard
2 parents 44057c1 + 4c36297 commit 9574718

1 file changed

Lines changed: 23 additions & 0 deletions

File tree

  • app/display/runtime/src/main/java/org/csstudio/display/builder/runtime/script

app/display/runtime/src/main/java/org/csstudio/display/builder/runtime/script/ScriptUtil.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@
2424
import javax.xml.parsers.DocumentBuilder;
2525
import javax.xml.parsers.DocumentBuilderFactory;
2626

27+
import javafx.application.Platform;
28+
import javafx.scene.input.Clipboard;
29+
import javafx.scene.input.ClipboardContent;
2730
import org.csstudio.display.builder.model.ChildrenProperty;
2831
import org.csstudio.display.builder.model.DisplayModel;
2932
import org.csstudio.display.builder.model.Widget;
@@ -533,4 +536,24 @@ public static void openWeb(final Widget widget, final String url) throws Excepti
533536

534537
done.get();
535538
}
539+
540+
/**
541+
* Puts a {@link String} on the system clipboard.
542+
* <p>
543+
* If called from a Jython script, non-matching content types will trigger an exception in the interpreter.
544+
* An {@link IllegalArgumentException} is thrown if provided content string is <code>null</code>. That way
545+
* the script may detect the mistake.
546+
* </p>
547+
*
548+
* @param content By contract: must be a non-null String
549+
*/
550+
@SuppressWarnings("unused")
551+
public static void putOnClipboard(String content){
552+
if(content == null){
553+
throw new IllegalArgumentException("content is null");
554+
}
555+
ClipboardContent clipboardContent = new ClipboardContent();
556+
clipboardContent.putString(content);
557+
Platform.runLater(() -> Clipboard.getSystemClipboard().setContent(clipboardContent));
558+
}
536559
}

0 commit comments

Comments
 (0)