/**
*
*/
package de.danielsenff.badds.model;
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.List;
import javax.swing.JComponent;
import javax.swing.JTable;
import javax.swing.TransferHandler;
import de.danielsenff.badds.controller.Application;
/**
* @author danielsenff
*
*/
public class FileTransferHandler extends TransferHandler implements Transferable {
/**
*
*/
private static final long serialVersionUID = 1L;
private static final DataFlavor flavors[] = { DataFlavor.javaFileListFlavor };
private Application controller;
private List<File> files;
/**
*
*/
public FileTransferHandler(Application controller) {
this.controller = controller;
}
@Override
public int getSourceActions(JComponent c) {
return TransferHandler.COPY;
}
@Override
public Transferable createTransferable(JComponent comp) {
// Clear
files = null;
//TODO
return this;
}
@Override
public boolean importData(JComponent comp, Transferable t) {
if(comp instanceof JTable) {
// JTable table = (JTable) comp;
if (t.isDataFlavorSupported(flavors[0])) {
try {
files = (List) t.getTransferData(flavors[0]);
for (int i = 0; i < files.size(); i++) {
controller.addFile(files.get(i));
}
return true;
} catch (UnsupportedFlavorException ignored) {
} catch (IOException ignored) {
}
}
}
return false;
}
// Transferable
@Override
public Object getTransferData(DataFlavor flavor) {
if (isDataFlavorSupported(flavor)) {
return files;
}
return null;
}
@Override
public DataFlavor[] getTransferDataFlavors() {
return flavors;
}
@Override
public boolean isDataFlavorSupported(DataFlavor flavor) {
return flavor.equals(DataFlavor.javaFileListFlavor);
}
}