Class DelegatingDragAdapter

java.lang.Object
org.eclipse.jface.util.DelegatingDragAdapter
org.eclipse.gef.dnd.DelegatingDragAdapter
All Implemented Interfaces:
EventListener, DragSourceListener

public class DelegatingDragAdapter extends DelegatingDragAdapter
A DragSourceListener that maintains and delegates to a set of TransferDragSourceListeners. Each TransferDragSourceListener can then be implemented as if it were the DragSource's only DragSourceListener.

When a native Drag is started, a subset of all TransferDragSourceListeners is generated and stored in a list of active listeners. This subset is calculated by forwarding DragSourceListener.dragStart(DragSourceEvent) to every listener, and inspecting changes to the doit field. The DragSource's set of supported Transfer types ( DragSource.setTransfer(Transfer[])) is updated to reflect the Transfer types corresponding to the active listener subset.

If and when DelegatingDragAdapter.dragSetData(DragSourceEvent) is called, a single TransferDragSourceListener is chosen, and only it is allowed to set the drag data. The chosen listener is the first listener in the subset of active listeners whose Transfer supports ( Transfer.isSupportedType(TransferData)) the dataType on the DragSourceEvent.