fix copy-paste from MuWire itself

auto-update
Zlatin Balevsky 2022-02-21 15:22:43 +00:00
parent d857f127bb
commit 8ffa0f47e6
No known key found for this signature in database
GPG Key ID: A72832072D525E41
1 changed files with 19 additions and 4 deletions

View File

@ -1,6 +1,7 @@
package com.muwire.gui; package com.muwire.gui;
import java.awt.Toolkit; import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.UnsupportedFlavorException; import java.awt.datatransfer.UnsupportedFlavorException;
@ -26,22 +27,36 @@ public class CopyPasteSupport {
} }
/** /**
* @return what's in the clipboard if it can be represented as a string. This does not handle multi-byte characters. * @return what's in the clipboard if it can be represented as a string.
* This does not handle multi-byte characters unless copied from MuWire itself.
*/ */
public static String pasteFromClipboard() { public static String pasteFromClipboard() {
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
InputStream is;
try {
return (String) clipboard.getData(DataFlavor.stringFlavor);
} catch ( UnsupportedFlavorException|IOException notJavaString) {
try {
is = (InputStream) clipboard.getData(DataFlavor.getTextPlainUnicodeFlavor());
} catch (UnsupportedFlavorException|IOException notPlainText) {
return null;
}
}
try { try {
InputStream is = (InputStream)Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.getTextPlainUnicodeFlavor());
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
int b; int b;
while ((b = is.read()) >= 0) while ((b = is.read()) >= 0)
sb.append((char)b); sb.append((char)b);
return sb.toString(); return sb.toString();
} catch (UnsupportedFlavorException| IOException e) { } catch (IOException e) {
return null; return null;
} }
} }
public static boolean canPasteString() { public static boolean canPasteString() {
return Toolkit.getDefaultToolkit().getSystemClipboard().isDataFlavorAvailable(DataFlavor.getTextPlainUnicodeFlavor()); Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
return clipboard.isDataFlavorAvailable(DataFlavor.getTextPlainUnicodeFlavor()) ||
clipboard.isDataFlavorAvailable(DataFlavor.stringFlavor);
} }
} }