package nbtool.gui.logdnd;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.ClipboardOwner;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DragGestureEvent;
import java.awt.dnd.DragGestureListener;
import java.awt.dnd.DragSource;
import java.awt.dnd.DropTarget;
import java.awt.dnd.DropTargetAdapter;
import java.awt.dnd.DropTargetDropEvent;
import java.awt.event.KeyEvent;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
import javax.swing.JComponent;
import javax.swing.JTree;
import javax.swing.TransferHandler;
import nbtool.data.log.Log;
import nbtool.util.Debug;
public class LogDND {
//Uses the Log class but represents Log[]
public static final DataFlavor LOG_DATA_FLAVOR = new DataFlavor(LogTransferable.class,
LogTransferable.class.getName());
public static final DragSource LOG_DRAG_SOURCE = DragSource.getDefaultDragSource();
public static interface LogDNDSource {
public Log[] supplyLogsForDrag();
}
public static interface LogDNDTarget {
public void takeLogsFromDrop(Log log[]);
}
public static void makeComponentSource(JComponent comp, LogDNDSource source) {
LOG_DRAG_SOURCE.createDefaultDragGestureRecognizer(comp, DnDConstants.ACTION_COPY_OR_MOVE,
new LogDragListener(comp, source));
}
public static void makeComponentTarget(JComponent comp, LogDNDTarget dest) {
DropTarget dt = new DropTarget(comp, DnDConstants.ACTION_COPY_OR_MOVE, new LogDropListener(dest), true);
comp.setDropTarget(dt);
}
/*
public static class LogTransferHandler extends TransferHandler {
JComponent eventSource;
LogDNDSource logSource;
public LogTransferHandler(JComponent es, LogDNDSource ds) {
super();
eventSource = es;
logSource = ds;
}
@Override
public int getSourceActions(JComponent c) {
return TransferHandler.COPY_OR_MOVE;
}
@Override
public Transferable createTransferable(JComponent c) {
if (c != eventSource)
return null;
Log[] data = logSource.supplyLogsForDrag();
if (data == null)
return null;
return new LogTransferable(data);
}
} */
}