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;
|
|
|
|
|
2008-02-14 18:07:10 -05:00
|
|
|
import net.sourceforge.filebot.ui.FileBotUtil;
|
|
|
|
|
2007-12-26 11:48:28 -05:00
|
|
|
|
|
|
|
public class FileTransferable implements Transferable {
|
|
|
|
|
2008-02-14 18:07:10 -05:00
|
|
|
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 {
|
2008-02-14 18:07:10 -05:00
|
|
|
if (flavor.isFlavorJavaFileListType())
|
|
|
|
return files;
|
|
|
|
else if (flavor.isFlavorTextType())
|
|
|
|
return getUriList();
|
|
|
|
else
|
2007-12-26 11:48:28 -05:00
|
|
|
throw new UnsupportedFlavorException(flavor);
|
2008-02-14 18:07:10 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
*
|
|
|
|
* @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
|
|
|
|
2008-02-14 18:07:10 -05:00
|
|
|
return sb.toString();
|
2007-12-26 11:48:28 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public DataFlavor[] getTransferDataFlavors() {
|
2008-02-14 18:07:10 -05:00
|
|
|
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) {
|
2008-02-14 18:07:10 -05:00
|
|
|
if (fileListFlavorSupported)
|
|
|
|
return flavor.isFlavorJavaFileListType();
|
|
|
|
else
|
|
|
|
return flavor.isFlavorJavaFileListType() || flavor.isFlavorTextType();
|
2007-12-26 11:48:28 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|