Eclipse GEF
2.1

org.eclipse.gef.dnd
Class DelegatingDragAdapter

java.lang.Object
  |
  +--org.eclipse.gef.dnd.DelegatingDragAdapter
All Implemented Interfaces:
DragSourceListener, EventListener, org.eclipse.swt.internal.SWTEventListener

public class DelegatingDragAdapter
extends Object
implements DragSourceListener

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 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.


Constructor Summary
DelegatingDragAdapter()
           
 
Method Summary
 void addDragSourceListener(TransferDragSourceListener listener)
          Adds the given TransferDragSourceListener.
 void dragFinished(DragSourceEvent event)
          The drop has successfully completed.
 void dragSetData(DragSourceEvent event)
          Updates the current listener and then forwards the event to it.
 void dragStart(DragSourceEvent event)
          Forwards this event to each listener.
 Transfer[] getTransferTypes()
          Combines the Transfers from every TransferDragSourceListener.
 boolean isEmpty()
          Returns true if there are no listeners to delegate the events to.
 void removeDragSourceListener(TransferDragSourceListener listener)
          Adds the given TransferDragSourceListener.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DelegatingDragAdapter

public DelegatingDragAdapter()
Method Detail

addDragSourceListener

public void addDragSourceListener(TransferDragSourceListener listener)
Adds the given TransferDragSourceListener. The set of Transfer types is updated to reflect the change.

Parameters:
listener - the new listener

dragFinished

public void dragFinished(DragSourceEvent event)
The drop has successfully completed. This event is Forwarded to the current listener. Doesn't update the current listener, since the current listener is already the one that completed the drag operation.

Specified by:
dragFinished in interface DragSourceListener
See Also:
DragSourceListener.dragFinished(DragSourceEvent)

dragSetData

public void dragSetData(DragSourceEvent event)
Updates the current listener and then forwards the event to it.

Specified by:
dragSetData in interface DragSourceListener
See Also:
DragSourceListener.dragSetData(DragSourceEvent)

dragStart

public void dragStart(DragSourceEvent event)
Forwards this event to each listener. It is expected that a listener will set event.doit to false if it cannot handle the drag operation. If a listener can handle the drag, it is added to the list of active listeners. The drag is aborted if there are no listeners that can handle it.

Specified by:
dragStart in interface DragSourceListener
See Also:
DragSourceListener.dragStart(DragSourceEvent)

getTransferTypes

public Transfer[] getTransferTypes()
Combines the Transfers from every TransferDragSourceListener.

Returns:
the combined Transfers

isEmpty

public boolean isEmpty()
Returns true if there are no listeners to delegate the events to.

Returns:
true if there are no TransferDragSourceListeners

removeDragSourceListener

public void removeDragSourceListener(TransferDragSourceListener listener)
Adds the given TransferDragSourceListener. The set of Transfer types is updated to reflect the change.

Parameters:
listener - the listener being removed

Eclipse GEF
2.1

Copyright (c) IBM Corp. and others 2000, 2003. All Rights Reserved.