package com.revolsys.swing.dnd.transferable; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.UnsupportedFlavorException; import java.io.IOException; public class ObjectTransferable<T> implements Transferable { public static final DataFlavor FLAVOR; static { try { FLAVOR = new DataFlavor(DataFlavor.javaJVMLocalObjectMimeType); } catch (final ClassNotFoundException e) { throw new RuntimeException("Flavour not supported"); } } private final T object; private final Object owner; public ObjectTransferable(final Object owner, final T object) { this.owner = owner; this.object = object; } public T getObject() { return this.object; } public Object getOwner() { return this.owner; } @Override public Object getTransferData(final DataFlavor flavor) throws UnsupportedFlavorException, IOException { if (isDataFlavorSupported(flavor)) { return this; } else { throw new UnsupportedFlavorException(flavor); } } @Override public DataFlavor[] getTransferDataFlavors() { return new DataFlavor[] { FLAVOR }; } @Override public boolean isDataFlavorSupported(final DataFlavor flavor) { return FLAVOR.equals(flavor); } }