Reputation: 419
I am implementing Drag and Drop functionality in SWT.
Here is my code snippet
For Drag
private class MyDragSourceAdapter extends DragSourceAdapter {
/** The m tree viewer. */
private final TreeViewer treeViewer;
/**
* Instantiates a new my drag source adapter.
*
* @param treeViewer the tree viewer
*/
public MyDragSourceAdapter(TreeViewer treeViewer) {
this.treeViewer = treeViewer;
}
/**
* {@inheritDoc}
*/
@Override
public void dragFinished(DragSourceEvent event) {
// clean buffer
// k = null;
}
/**
* {@inheritDoc}
*/
@Override
public void dragSetData(DragSourceEvent event) {
event.data = "test";
}
/**
* {@inheritDoc}
*/
@Override
public void dragStart(DragSourceEvent event) {
if (some condition) {
// do something
return;
}
event.doit = false;
}
}
For drop
private class MyDropTargetAdapter extends DropTargetAdapter {
@Override
public void dragEnter(DropTargetEvent event) {
event.detail = DND.DROP_LINK;
}
/**
* {@inheritDoc}
*/
@Override
public void dragOver(DropTargetEvent event) {
// Do some functionality
}
/**
* {@inheritDoc}
*/
@Override
public void drop(DropTargetEvent event) {
event.detail = DND.DROP_NONE;
}
}
Some times "dragOver()" method called more than one time? So dragging is happening as many times as dragOver() method called.
I want drop operation to stop after first time.
Please help
Upvotes: 0
Views: 179
Reputation: 4103
dragOver()
happens when the mouse is still hovering over the control, before the actual drop happens. You probably mean to override drop()
. But if you want the drop from stop happening altogether, set the field detail
on the DropTargetEvent
to DND.DROP_NONE
.
Upvotes: 1