package net.filebot.ui.transfer; import static net.filebot.ui.transfer.FileTransferable.*; import static net.filebot.util.FileUtilities.*; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.UnsupportedFlavorException; import java.io.File; import java.io.IOException; import java.util.List; public abstract class FileTransferablePolicy extends TransferablePolicy { @Override public boolean accept(Transferable tr) throws Exception { try { List<File> files = getFilesFromTransferable(tr); // ignore temporary files (may not work on all platforms since the DnD data may not be accessible during the drag) if (files != null && files.size() > 0 && containsOnly(files, TEMPORARY)) { return false; } return accept(files); } catch (UnsupportedFlavorException e) { // no file list flavor } return false; } @Override public void handleTransferable(Transferable tr, TransferAction action) throws Exception { List<File> files = getFilesFromTransferable(tr); if (action == TransferAction.PUT) { clear(); } load(files, action); } protected abstract boolean accept(List<File> files); protected abstract void load(List<File> files, TransferAction action) throws IOException; protected abstract void clear(); public abstract String getFileFilterDescription(); public abstract List<String> getFileFilterExtensions(); }