|
Eclipse Platform Release 3.0 | ||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.eclipse.jface.util.DelegatingDragAdapter
A DelegatingDragAdapter is 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 drag is started, a subset of all TransferDragSourceListeners is generated and stored in a list of active listeners. This subset is calculated by forwarding to every listener, and checking if the {@link DragSourceEvent#doit doit} field is left set to true.
The DragSource's set of supported Transfer types ({@link DragSource#setTransfer(Transfer[])}) is updated to reflect the Transfer types corresponding to the active listener subset.If and when {@link #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 ({@link Transfer#isSupportedType(TransferData)}) the dataType in the DragSourceEvent.
The following example snippet shows a DelegatingDragAdapter with two TransferDragSourceListeners. One implements drag of text strings, the other supports file transfer and demonstrates how a listener can be disabled using the dragStart method.
final TreeViewer viewer = new TreeViewer(shell, SWT.NONE); DelegatingDragAdapter dragAdapter = new DelegatingDragAdapter(); dragAdapter.addDragSourceListener(new TransferDragSourceListener() { public Transfer getTransfer() { return TextTransfer.getInstance(); public void dragStart(DragSourceEvent event) { // always enabled, can control enablement based on selection etc. } public void dragSetData(DragSourceEvent event) { event.data = "Transfer data"; } public void dragFinished(DragSourceEvent event) { // no clean-up required } }); dragAdapter.addDragSourceListener(new TransferDragSourceListener() { public Transfer getTransfer() { return FileTransfer.getInstance(); } public void dragStart(DragSourceEvent event) { // enable drag listener if there is a viewer selection event.doit = !viewer.getSelection().isEmpty(); } public void dragSetData(DragSourceEvent event) { File file1 = new File("C:/temp/file1"); File file2 = new File("C:/temp/file2"); event.data = new String[] {file1.getAbsolutePath(), file2.getAbsolutePath()}; } public void dragFinished(DragSourceEvent event) { // no clean-up required } }); viewer.addDragSupport(DND.DROP_COPY | DND.DROP_MOVE, dragAdapter.getTransfers(), dragAdapter);
NOTE: This API is experimental and subject to change including removal.
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)
The drop data is requested. |
void | dragStart(DragSourceEvent event)
A drag operation has started. |
Transfer[] | getTransfers()
Returns the Transfers from every TransferDragSourceListener. |
boolean | isEmpty()
Returns true if there are no listeners to delegate drag events to. |
void | removeDragSourceListener(TransferDragSourceListener listener)
Removes the given TransferDragSourceListener. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
public DelegatingDragAdapter()
Method Detail |
public void addDragSourceListener(TransferDragSourceListener listener)
public void dragFinished(DragSourceEvent event)
public void dragSetData(DragSourceEvent event)
public void dragStart(DragSourceEvent event)
public Transfer[] getTransfers()
public boolean isEmpty()
public void removeDragSourceListener(TransferDragSourceListener listener)
|
Eclipse Platform Release 3.0 | ||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Guidelines for using Eclipse APIs.
Copyright (c) IBM Corp. and others 2000, 2004. All rights reserved.