package model.transferhandler; 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 java.util.logging.Level; import java.util.logging.Logger; import javax.swing.TransferHandler; import logging.LogUtil; abstract public class FolderTransferHandler extends TransferHandler { /** * */ private static final long serialVersionUID = 202925720699164453L; /* * (non-Javadoc) * * @see javax.swing.TransferHandler#canImport(javax.swing.TransferHandler. * TransferSupport) */ @Override public boolean canImport(TransferHandler.TransferSupport info) { // we only import FileList if (!info.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) { return false; } return true; } /* * (non-Javadoc) * * @see javax.swing.TransferHandler#importData(javax.swing.TransferHandler. * TransferSupport) */ @SuppressWarnings("unchecked") @Override public boolean importData(TransferHandler.TransferSupport info) { if (!info.isDrop()) { return false; } // Check for FileList flavor if (!info.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) { return false; } try { // Get the fileList that is being dropped. Transferable t = info.getTransferable(); List<File> data = (List<File>) t.getTransferData(DataFlavor.javaFileListFlavor); if (data.size() == 0) return false; File folder = data.get(0); if (!folder.isDirectory()) return false; setFolder(folder.getAbsolutePath()); } catch (UnsupportedFlavorException | IOException e) { Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, "Error while adding file or folder:\n" + LogUtil.getStackTrace(e), e); } return true; } /** * sets the given folder * * @param folder * path to the given folder */ abstract public void setFolder(String folder); }