modules/swing/src/main/java/javafx/embed/swing/DataFlavorUtils.java
Print this page
@@ -32,10 +32,11 @@
import java.util.Map;
import java.util.List;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Collections;
+import java.util.ArrayList;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
@@ -52,10 +53,48 @@
static String getFxMimeType(final DataFlavor flavor) {
return flavor.getPrimaryType() + "/" + flavor.getSubType();
}
+ static DataFlavor[] getDataFlavors(String[] mimeTypes) {
+ final ArrayList<DataFlavor> flavors =
+ new ArrayList<DataFlavor>(mimeTypes.length);
+ for (String mime : mimeTypes) {
+ DataFlavor flavor = null;
+ try {
+ flavor = new DataFlavor(mime);
+ } catch (ClassNotFoundException e) {
+ // FIXME: what to do?
+ continue;
+ }
+ flavors.add(flavor);
+ }
+ return flavors.toArray(new DataFlavor[0]);
+ }
+
+ static DataFlavor getDataFlavor(final DataFormat format) {
+ DataFlavor[] flavors = getDataFlavors(format.getIdentifiers().toArray(new String[1]));
+
+ // Well, that's our best guess...
+ return flavors.length == 0 ? null : flavors[0];
+ }
+
+ static String getMimeType(final DataFormat format) {
+ // Well, that's our best guess...
+ for (String id : format.getIdentifiers()) return id;
+ return null;
+ }
+
+ static DataFormat getDataFormat(final DataFlavor flavor) {
+ String mimeType = getFxMimeType(flavor);
+ DataFormat dataFormat = DataFormat.lookupMimeType(mimeType);
+ if (dataFormat == null) {
+ dataFormat = new DataFormat(mimeType); // are we ready for this yet?
+ }
+ return dataFormat;
+ }
+
/**
* InputStream implementation backed by a ByteBuffer.
* It can handle byte buffers that are backed by arrays
* as well as operating system memory.
*/