package net.filebot.ui.transfer; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.UnsupportedFlavorException; import java.io.IOException; import java.lang.reflect.Array; public class ArrayTransferable<T> implements Transferable { public static DataFlavor flavor(Class<?> componentType) { return new DataFlavor(Array.newInstance(componentType, 0).getClass(), "Array"); } private final T[] array; public ArrayTransferable(T[] array) { this.array = array; } public T[] getArray() { return array.clone(); } @Override public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException { if (isDataFlavorSupported(flavor)) { return getArray(); } return null; } @Override public DataFlavor[] getTransferDataFlavors() { return new DataFlavor[] { new DataFlavor(array.getClass(), "Array") }; } @Override public boolean isDataFlavorSupported(DataFlavor flavor) { return array.getClass().equals(flavor.getRepresentationClass()); } }