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.util.ArrayList; import java.util.Collection; import java.util.Collections; public class CompositeTranserable implements Transferable { private final Transferable[] transferables; private final DataFlavor[] flavors; public CompositeTranserable(Transferable... transferables) { this.transferables = transferables; Collection<DataFlavor> flavors = new ArrayList<DataFlavor>(); for (Transferable transferable : transferables) { Collections.addAll(flavors, transferable.getTransferDataFlavors()); } this.flavors = flavors.toArray(new DataFlavor[0]); } @Override public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException { Transferable transferable = getTransferable(flavor); if (transferable == null) return null; return transferable.getTransferData(flavor); } @Override public DataFlavor[] getTransferDataFlavors() { return flavors; } @Override public boolean isDataFlavorSupported(DataFlavor flavor) { return getTransferable(flavor) != null; } protected Transferable getTransferable(DataFlavor flavor) { for (Transferable transferable : transferables) { if (transferable.isDataFlavorSupported(flavor)) return transferable; } return null; } }