So I want to create a DataFlavor that contains a string and has the mimetype image/svg+xml using java. I am not quite sure I get how the DataFlavor and mimetype are connected. I did not quite understand the Java tutorials 1.
What I want is to be able to move my string that I generated as an svg object to other programs using the system clipboard.
The code i am using now is:
import java.awt.Toolkit;
import java.awt.datatransfer.ClipboardOwner;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
public class SvgClip implements Transferable, ClipboardOwner
{
private String string;
public SvgClip(String str)
{
string = str;
}
public DataFlavor[] getTransferDataFlavors()
{
DataFlavor flavor = new DataFlavor();
try{
//flavor = new DataFlavor("image/svg+xml");S
flavor = new DataFlavor("image/svg+xml;class=java.lang.String");
}catch (Exception ex) {
ex.printStackTrace();
}
return new DataFlavor[]{flavor};
}
public boolean isDataFlavorSupported(DataFlavor flavor)
{
return DataFlavor.imageFlavor.equals(flavor);
}
public Object getTransferData(DataFlavor flavor) throws
UnsupportedFlavorException
{
if (!isDataFlavorSupported(flavor))
throw new UnsupportedFlavorException(flavor);
return string;
}
public void lostOwnership(java.awt.datatransfer.Clipboard clip,
java.awt.datatransfer.Transferable tr)
{
return;
}
}
however, this is not working , i get java.io.IOException: image/svg+xml
when trying to create it with:
SvgClip strSel = new SvgClip(newfileString);
clipboard.setContents(strSel, null);
Anyone have any idea?
I am now using this class to implement an SVG object that can be put in the clipboard, please give thanks if this is useful!: