package com.limegroup.gnutella.gui.tables; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.UnsupportedFlavorException; import java.io.File; import java.io.IOException; import java.util.Iterator; import java.util.List; public class FileTransferable implements Transferable { private final List files; private final List lazyFiles; public FileTransferable(List l) { this(l, null); } public FileTransferable(List real, List lazy) { files = real; lazyFiles = lazy; } public synchronized Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException { if(!isDataFlavorSupported(flavor)) throw new UnsupportedFlavorException(flavor); if(lazyFiles != null && lazyFiles.size() > 0) { for(Iterator i = lazyFiles.iterator(); i.hasNext(); ) { File f = ((FileTransfer)i.next()).getFile(); if(f != null) files.add(f); } lazyFiles.clear(); } return files; } public DataFlavor[] getTransferDataFlavors() { return new DataFlavor[] { DataFlavor.javaFileListFlavor }; } public boolean isDataFlavorSupported(DataFlavor flavor) { return flavor.equals(DataFlavor.javaFileListFlavor); } }