IDEA-42872 (better support for Gnome clipboard format)

This commit is contained in:
Roman Shevchenko
2011-09-08 17:26:53 +02:00
parent 57638e81be
commit c31ec237e0
2 changed files with 20 additions and 7 deletions
@@ -69,17 +69,21 @@ public class FileCopyPasteUtil {
public static boolean isFileListFlavorSupported(@NotNull final Transferable transferable) {
return transferable.isDataFlavorSupported(DataFlavor.javaFileListFlavor) ||
transferable.isDataFlavorSupported(LinuxDragAndDropSupport.uriListFlavor);
transferable.isDataFlavorSupported(LinuxDragAndDropSupport.uriListFlavor) ||
transferable.isDataFlavorSupported(LinuxDragAndDropSupport.gnomeFileListFlavor);
}
public static boolean isFileListFlavorSupported(@NotNull final DnDEvent event) {
return event.isDataFlavorSupported(DataFlavor.javaFileListFlavor) ||
event.isDataFlavorSupported(LinuxDragAndDropSupport.uriListFlavor);
event.isDataFlavorSupported(LinuxDragAndDropSupport.uriListFlavor) ||
event.isDataFlavorSupported(LinuxDragAndDropSupport.gnomeFileListFlavor);
}
public static boolean isFileListFlavorSupported(@NotNull final DataFlavor[] transferFlavors) {
for (DataFlavor flavor : transferFlavors) {
if (flavor.equals(DataFlavor.javaFileListFlavor) || flavor.equals(LinuxDragAndDropSupport.uriListFlavor)) {
if (flavor != null && (flavor.equals(DataFlavor.javaFileListFlavor) ||
flavor.equals(LinuxDragAndDropSupport.uriListFlavor) ||
flavor.equals(LinuxDragAndDropSupport.gnomeFileListFlavor))) {
return true;
}
}
@@ -94,7 +98,7 @@ public class FileCopyPasteUtil {
final List<File> fileList = (List<File>)transferable.getTransferData(DataFlavor.javaFileListFlavor);
return fileList;
}
else if (transferable.isDataFlavorSupported(LinuxDragAndDropSupport.uriListFlavor)) {
else {
return LinuxDragAndDropSupport.getFiles(transferable);
}
}
@@ -45,10 +45,19 @@ public class LinuxDragAndDropSupport {
private LinuxDragAndDropSupport() { }
@NotNull
@Nullable
public static List<File> getFiles(@NotNull final Transferable transferable) throws IOException, UnsupportedFlavorException {
final Object transferData = transferable.getTransferData(uriListFlavor);
return getFiles(transferData.toString());
if (transferable.isDataFlavorSupported(uriListFlavor)) {
final Object transferData = transferable.getTransferData(uriListFlavor);
return getFiles(transferData.toString());
}
else if (transferable.isDataFlavorSupported(gnomeFileListFlavor)) {
final Object transferData = transferable.getTransferData(gnomeFileListFlavor);
final String content = FileUtil.loadTextAndClose((InputStream)transferData);
return getFiles(content);
}
return null;
}
@NotNull