From e6feeb3d5ca4890041dc174f14caace5ab6c02ba Mon Sep 17 00:00:00 2001 From: Brian Matzon Date: Sun, 17 Oct 2004 17:25:29 +0000 Subject: [PATCH] moved clipboard stuff to PlatformAdapter --- src/java/org/lwjgl/PlatformAdapter.java | 10 +++++++++- src/java/org/lwjgl/SwingAdapter.java | 19 +++++++++++++++++++ src/java/org/lwjgl/Sys.java | 12 ++++-------- 3 files changed, 32 insertions(+), 9 deletions(-) diff --git a/src/java/org/lwjgl/PlatformAdapter.java b/src/java/org/lwjgl/PlatformAdapter.java index fb3bec6f..c086854d 100644 --- a/src/java/org/lwjgl/PlatformAdapter.java +++ b/src/java/org/lwjgl/PlatformAdapter.java @@ -48,5 +48,13 @@ public interface PlatformAdapter { * @param title * @param message */ - void alert(String title, String message); + public void alert(String title, String message); + + /** + * Get the contents of the system clipboard. The system might not have a clipboard + * (particularly if it doesn't even have a keyboard) in which case we return null. + * Otherwise we return a String, which may be the empty string "". + * @return a String, or null if there is no system clipboard. + */ + public String getClipboard(); } diff --git a/src/java/org/lwjgl/SwingAdapter.java b/src/java/org/lwjgl/SwingAdapter.java index d146172c..3ba47bac 100644 --- a/src/java/org/lwjgl/SwingAdapter.java +++ b/src/java/org/lwjgl/SwingAdapter.java @@ -66,4 +66,23 @@ final class SwingAdapter implements PlatformAdapter { } JOptionPane.showMessageDialog(null, message, title, JOptionPane.WARNING_MESSAGE); } + + /** + * Get the contents of the system clipboard. The system might not have a clipboard + * (particularly if it doesn't even have a keyboard) in which case we return null. + * Otherwise we return a String, which may be the empty string "". + * @return a String, or null if there is no system clipboard. + */ + public String getClipboard() { + try { + java.awt.datatransfer.Clipboard clipboard = java.awt.Toolkit.getDefaultToolkit().getSystemClipboard(); + java.awt.datatransfer.Transferable transferable = clipboard.getContents(null); + if (transferable.isDataFlavorSupported(java.awt.datatransfer.DataFlavor.stringFlavor)) { + return (String)transferable.getTransferData(java.awt.datatransfer.DataFlavor.stringFlavor); + } + } catch (Exception e) { + Sys.log("Exception while getting clipboard: " + e); + } + return null; + } } diff --git a/src/java/org/lwjgl/Sys.java b/src/java/org/lwjgl/Sys.java index 4addf516..cd1b9c63 100644 --- a/src/java/org/lwjgl/Sys.java +++ b/src/java/org/lwjgl/Sys.java @@ -277,18 +277,14 @@ public final class Sys { */ public static String getClipboard() { try { - java.awt.datatransfer.Clipboard clipboard = java.awt.Toolkit.getDefaultToolkit().getSystemClipboard(); - java.awt.datatransfer.Transferable transferable = clipboard.getContents(null); - if (transferable.isDataFlavorSupported(java.awt.datatransfer.DataFlavor.stringFlavor)) { - return (String)transferable.getTransferData(java.awt.datatransfer.DataFlavor.stringFlavor); - } else { - return null; - } + PlatformAdapter adapter = (PlatformAdapter) Class.forName(PLATFORM).newInstance(); // This avoids a Jet error message + return adapter.getClipboard(); } catch (Exception e) { + Sys.log("Unable to get clipboard contents: " + e); // ignore exception and use native implementation return nGetClipboard(); } } - + private static native String nGetClipboard(); }