changeset 1955:a4dde9c54f3e default tip

add clipboard
author Franklin Schmidt <fschmidt@gmail.com>
date Tue, 27 May 2025 22:29:05 -0600
parents b785eff96faf
children
files src/luan/modules/swing/Clipboard.luan
diffstat 1 files changed, 40 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/luan/modules/swing/Clipboard.luan	Tue May 27 22:29:05 2025 -0600
@@ -0,0 +1,40 @@
+local Luan = require "luan:Luan.luan"
+local error = Luan.error
+local ipairs = Luan.ipairs or error()
+local Table = require "luan:Table.luan"
+local java_to_table_shallow = Table.java_to_table_shallow or error()
+local Io = require "luan:Io.luan"
+local new_file = Io.schemes.file or error()
+require "java"
+local Toolkit = require "java:java.awt.Toolkit"
+local DataFlavor = require "java:java.awt.datatransfer.DataFlavor"
+
+
+local Clipboard = {}
+
+local function get(data_flavor)
+	local clipboard = Toolkit.getDefaultToolkit().getSystemClipboard()
+	if clipboard.isDataFlavorAvailable(data_flavor) then
+		return clipboard.getData(data_flavor)
+	end
+	return nil
+end
+
+function Clipboard.get_string()
+	return get(DataFlavor.stringFlavor)
+end
+
+function Clipboard.get_files()
+	local files = get(DataFlavor.javaFileListFlavor)
+	if files == nil then
+		return nil
+	end
+	files = java_to_table_shallow(files)
+	local rtn = {}
+	for _, file in ipairs(files) do
+		rtn[#rtn+1] = new_file(file)
+	end
+	return rtn
+end
+
+return Clipboard