filebot/source/net/sourceforge/filebot/ui/transfer/FileTransferable.java

78 lines
1.6 KiB
Java
Raw Normal View History

2007-12-26 11:48:28 -05:00
package net.sourceforge.filebot.ui.transfer;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import net.sourceforge.filebot.ui.FileBotUtil;
2007-12-26 11:48:28 -05:00
public class FileTransferable implements Transferable {
private List<File> files;
2008-02-15 13:57:18 -05:00
private DataFlavor[] supportedFlavors = { DataFlavor.javaFileListFlavor, FileBotUtil.uriListFlavor };
2007-12-26 11:48:28 -05:00
public FileTransferable(File... fileArray) {
files = new ArrayList<File>(fileArray.length);
for (File file : fileArray)
files.add(file);
}
public FileTransferable(Collection<File> fileCollection) {
files = new ArrayList<File>(fileCollection.size());
files.addAll(fileCollection);
}
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException {
if (flavor.isFlavorJavaFileListType())
return files;
2008-02-15 13:57:18 -05:00
else if (flavor.equals(FileBotUtil.uriListFlavor))
return getUriList();
else
2007-12-26 11:48:28 -05:00
throw new UnsupportedFlavorException(flavor);
}
/**
*
* @return line separated list of file uris
*/
private String getUriList() {
StringBuffer sb = new StringBuffer();
for (File file : files) {
2008-02-16 02:06:22 -05:00
sb.append("file://" + file.toURI().getPath());
2008-02-15 13:57:18 -05:00
sb.append("\r\n");
}
2007-12-26 11:48:28 -05:00
return sb.toString();
2007-12-26 11:48:28 -05:00
}
public DataFlavor[] getTransferDataFlavors() {
2008-02-15 13:57:18 -05:00
return supportedFlavors;
2007-12-26 11:48:28 -05:00
}
public boolean isDataFlavorSupported(DataFlavor flavor) {
2008-02-15 13:57:18 -05:00
for (DataFlavor supportedFlavor : supportedFlavors) {
if (flavor.equals(supportedFlavor))
return true;
}
return false;
2007-12-26 11:48:28 -05:00
}
}