package br.com.etyllica.awt.core;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.dnd.DropTargetDragEvent;
import java.awt.dnd.DropTargetDropEvent;
import java.awt.dnd.DropTargetEvent;
import java.awt.dnd.DropTargetListener;
import java.io.File;
import java.io.IOException;
import java.util.List;
import br.com.etyllica.core.context.Context;
public class AWTDragAndDrop implements DropTargetListener {
AWTCore core;
public AWTDragAndDrop(AWTCore core) {
this.core = core;
}
@Override
public void dragEnter(DropTargetDragEvent dtde) {
Context context = core.currentContext();
context.dragEnter();
}
@Override
public void dragOver(DropTargetDragEvent dtde) {
// TODO Auto-generated method stub
}
@Override
public void dropActionChanged(DropTargetDragEvent dtde) {
// TODO Auto-generated method stub
}
@Override
public void dragExit(DropTargetEvent dte) {
Context context = core.currentContext();
context.dragExit();
}
@Override
public void drop(DropTargetDropEvent evt) {
int action = evt.getDropAction();
evt.acceptDrop(action);
try {
Transferable data = evt.getTransferable();
//DataFlavor flavors[] = data.getTransferDataFlavors();
if (data.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
List<File> list = (List<File>) data.getTransferData(DataFlavor.javaFileListFlavor);
Context context = core.currentContext();
int mx = (int) evt.getLocation().getX();
int my = (int) evt.getLocation().getY();
context.dropFiles(mx, my, list);
}
} catch (UnsupportedFlavorException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
evt.dropComplete(true);
}
}
}