Java tutorial
import org.eclipse.swt.SWT; import org.eclipse.swt.dnd.DND; import org.eclipse.swt.dnd.DragSource; import org.eclipse.swt.dnd.DragSourceEvent; import org.eclipse.swt.dnd.DragSourceListener; import org.eclipse.swt.dnd.DropTarget; import org.eclipse.swt.dnd.DropTargetEvent; import org.eclipse.swt.dnd.DropTargetListener; import org.eclipse.swt.dnd.TextTransfer; import org.eclipse.swt.dnd.Transfer; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Text; public class Ch12DnDComposite extends Composite { public Ch12DnDComposite(Composite parent) { super(parent, SWT.NONE); FillLayout layout = new FillLayout(); setLayout(layout); Text leftText = new Text(this, SWT.MULTI); Text rightText = new Text(this, SWT.MULTI); createDragSource(leftText); createDragSource(rightText); createDropTarget(leftText); createDropTarget(rightText); } private void createDropTarget(final Text targetText) { Transfer[] types = new Transfer[] { TextTransfer.getInstance() }; DropTarget dropTarget = new DropTarget(targetText, DND.DROP_COPY); dropTarget.setTransfer(types); dropTarget.addDropListener(new DropTargetListener() { public void dragEnter(DropTargetEvent event) { } public void dragLeave(DropTargetEvent event) { } public void dragOperationChanged(DropTargetEvent event) { } public void dragOver(DropTargetEvent event) { } public void drop(DropTargetEvent event) { String data = (String) event.data; targetText.append(data); } public void dropAccept(DropTargetEvent event) { } }); } private void createDragSource(final Text sourceText) { Transfer[] types = new Transfer[] { TextTransfer.getInstance() }; DragSource dragSource = new DragSource(sourceText, DND.DROP_COPY); dragSource.setTransfer(types); dragSource.addDragListener(new DragSourceListener() { public void dragStart(DragSourceEvent event) { if (sourceText.getSelectionText().length() > 0) { event.doit = true; } } public void dragSetData(DragSourceEvent event) { event.data = sourceText.getSelection(); } public void dragFinished(DragSourceEvent event) { //do nothing } }); } }