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;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.StringSelection;
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() {
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 {
InputStream is = (InputStream)Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.getTextPlainUnicodeFlavor());
StringBuilder sb = new StringBuilder();
int b;
while ((b = is.read()) >= 0)
sb.append((char)b);
return sb.toString();
} catch (UnsupportedFlavorException| IOException e) {
} catch (IOException e) {
return null;
}
}
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);
}
}