package acousticfield3d.utils;

import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.File;
import java.io.IOException;
import java.util.List;
import javax.swing.DropMode;
import javax.swing.JTextField;
import javax.swing.TransferHandler;

/**
 *
 * @author Asier
 */
public class FileDropTransferHandler extends TransferHandler{

    public static void addDroper(JTextField field){
        field.setDragEnabled(true);
        field.setDropMode(DropMode.INSERT);
        field.setTransferHandler( new FileDropTransferHandler() );
    }
    
    public FileDropTransferHandler() {}

    
    @Override
    public boolean canImport(TransferSupport support) {
        if (support.isDataFlavorSupported(DataFlavor.javaFileListFlavor)){
            support.setDropAction(COPY);
            return true;
        }
        return false;
    }

    @Override
    public boolean importData(TransferSupport support) {
       if (support.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
            try{
                List<File> files = (List<File>) support.getTransferable().getTransferData(DataFlavor.javaFileListFlavor);
                if(! files.isEmpty()){
                    if (support.getComponent() instanceof JTextField){
                        JTextField label = (JTextField)support.getComponent();
                        File f = files.get(0);
                        label.setText( f.getAbsolutePath() );
                    }
                }
                return true;
            }catch(UnsupportedFlavorException e ){ e.printStackTrace();
            }catch(IOException e) {e.printStackTrace();}
        }
        return false;
    }
}