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

83 lines
1.8 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 static final boolean fileListFlavorSupported = FileBotUtil.isFileListFlavorSupportedByWindowManager();
2007-12-26 11:48:28 -05:00
private List<File> files;
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;
else if (flavor.isFlavorTextType())
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) {
sb.append(file.toURI());
sb.append("\n");
}
2007-12-26 11:48:28 -05:00
return sb.toString();
2007-12-26 11:48:28 -05:00
}
public DataFlavor[] getTransferDataFlavors() {
if (fileListFlavorSupported) {
DataFlavor[] flavours = { DataFlavor.javaFileListFlavor };
return flavours;
} else {
DataFlavor[] flavours = { DataFlavor.javaFileListFlavor, DataFlavor.stringFlavor };
return flavours;
}
2007-12-26 11:48:28 -05:00
}
public boolean isDataFlavorSupported(DataFlavor flavor) {
if (fileListFlavorSupported)
return flavor.isFlavorJavaFileListType();
else
return flavor.isFlavorJavaFileListType() || flavor.isFlavorTextType();
2007-12-26 11:48:28 -05:00
}
}