source.addDragListener(new DelegatingDragAdapter(dragListeners));
source.addDragListener(new DelegatingDragAdapter(dragListeners) { public void dragStart(DragSourceEvent event) { IStructuredSelection selection= (IStructuredSelection)getSelectionProvider().getSelection(); for (Iterator iter= selection.iterator(); iter.hasNext(); ) { if (iter.next() instanceof IMember) { setPossibleListeners(new TransferDragSourceListener[] {new SelectionTransferDragAdapter(fViewer)}); break; } } super.dragStart(event); } });
	private void initDragAndDrop() {		int ops= DND.DROP_COPY | DND.DROP_MOVE;		Transfer[] transfers= new Transfer[] {			LocalSelectionTransfer.getInstance(), 			ResourceTransfer.getInstance(),			FileTransfer.getInstance()};				// Drop Adapter		TransferDropTargetListener[] dropListeners= new TransferDropTargetListener[] {			new SelectionTransferDropAdapter(fViewer)		};		fViewer.addDropSupport(ops, transfers, new DelegatingDropAdapter(dropListeners));				// Drag Adapter		Control control= fViewer.getControl();		TransferDragSourceListener[] dragListeners= new TransferDragSourceListener[] {			new SelectionTransferDragAdapter(fViewer),			new ResourceTransferDragAdapter(fViewer)		};		DragSource source= new DragSource(control, ops);		// Note, that the transfer agents are set by the delegating drag adapter itself.		source.addDragListener(new DelegatingDragAdapter(dragListeners));	}