package org.jabref.gui.fieldeditors; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.UnsupportedFlavorException; import java.io.IOException; import java.util.Arrays; import java.util.List; public class XmlTransferable implements Transferable { private static final DataFlavor XML_FLAVOR = new DataFlavor("application/xml;charset=utf-8;class=java.lang.String", "XML Format"); private static final DataFlavor TEXT_FLAVOR = DataFlavor.stringFlavor; private static final List<DataFlavor> ALL_FLAVORS = Arrays.asList(XML_FLAVOR, HtmlTransferable.HTML_FLAVOR, TEXT_FLAVOR); private final String xmlText; private final String plainText; public XmlTransferable(String text) { this(text, text); } public XmlTransferable(String xmlText, String plainText) { this.xmlText = xmlText; this.plainText = plainText; } @Override public DataFlavor[] getTransferDataFlavors() { return ALL_FLAVORS.toArray(new DataFlavor[ALL_FLAVORS.size()]); } @Override public boolean isDataFlavorSupported(DataFlavor flavor) { return ALL_FLAVORS.parallelStream().anyMatch(flavor::equals); } @Override public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException { if (flavor.equals(XML_FLAVOR) || flavor.equals(HtmlTransferable.HTML_FLAVOR)) { return xmlText; } else if (flavor.equals(TEXT_FLAVOR)) { return plainText; } else { throw new UnsupportedFlavorException(flavor); } } }