|
Eclipse Platform Release 3.2 |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.eclipse.jface.util.DelegatingDropAdapter
public class DelegatingDropAdapter
A DelegatingDropAdapter is a DropTargetListener that
maintains and delegates to a set of TransferDropTargetListeners. Each
TransferDropTargetListener can then be implemented as if it were
the DropTarget's only DropTargetListener.
On dragEnter, dragOperationChanged, dragOver
and drop, a current listener is obtained from the set of all
TransferDropTargetListeners. The current listener is the first listener
to return true for
TransferDropTargetListener.isEnabled(DropTargetEvent).
The current listener is forwarded all DropTargetEvents until some other
listener becomes the current listener, or the drop terminates.
After adding all TransferDropTargetListeners to the
DelegatingDropAdapter the combined set of Transfers should
be set in the SWT DropTarget. #getTransfers() provides the
set of Transfer types of all TransferDropTargetListeners.
The following example snippet shows a DelegatingDropAdapter with two
TransferDropTargetListeners. One supports dropping resources and
demonstrates how a listener can be disabled in the isEnabled method.
The other listener supports text transfer.
final TreeViewer viewer = new TreeViewer(shell, SWT.NONE);
DelegatingDropAdapter dropAdapter = new DelegatingDropAdapter();
dropAdapter.addDropTargetListener(new TransferDropTargetListener() {
public Transfer getTransfer() {
return ResourceTransfer.getInstance();
}
public boolean isEnabled(DropTargetEvent event) {
// disable drop listener if there is no viewer selection
if (viewer.getSelection().isEmpty())
return false;
return true;
}
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) {
if (event.data == null)
return;
IResource[] resources = (IResource[]) event.data;
if (event.detail == DND.DROP_COPY) {
// copy resources
} else {
// move resources
}
}
public void dropAccept(DropTargetEvent event) {}
});
dropAdapter.addDropTargetListener(new TransferDropTargetListener() {
public Transfer getTransfer() {
return TextTransfer.getInstance();
}
public boolean isEnabled(DropTargetEvent event) {
return true;
}
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) {
if (event.data == null)
return;
System.out.println(event.data);
}
public void dropAccept(DropTargetEvent event) {}
});
viewer.addDropSupport(DND.DROP_COPY | DND.DROP_MOVE, dropAdapter.getTransfers(), dropAdapter);
| Constructor Summary | |
|---|---|
DelegatingDropAdapter()
|
|
| Method Summary | |
|---|---|
void |
addDropTargetListener(TransferDropTargetListener listener)
Adds the given TransferDropTargetListener. |
void |
dragEnter(DropTargetEvent event)
The cursor has entered the drop target boundaries. |
void |
dragLeave(DropTargetEvent event)
The cursor has left the drop target boundaries. |
void |
dragOperationChanged(DropTargetEvent event)
The operation being performed has changed (usually due to the user changing a drag modifier key while dragging). |
void |
dragOver(DropTargetEvent event)
The cursor is moving over the drop target. |
void |
drop(DropTargetEvent event)
Forwards this event to the current listener, if there is one. |
void |
dropAccept(DropTargetEvent event)
Forwards this event to the current listener if there is one. |
Transfer[] |
getTransfers()
Returns the combined set of Transfer types of all
TransferDropTargetListeners. |
boolean |
isEmpty()
Returns true if there are no listeners to delegate events to. |
void |
removeDropTargetListener(TransferDropTargetListener listener)
Removes the given TransferDropTargetListener. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public DelegatingDropAdapter()
| Method Detail |
|---|
public void addDropTargetListener(TransferDropTargetListener listener)
TransferDropTargetListener.
listener - the new listenerpublic void dragEnter(DropTargetEvent event)
#dragEnter() is forwarded to the current listener.
dragEnter in interface DropTargetListenerevent - the drop target eventDropTargetListener.dragEnter(DropTargetEvent)public void dragLeave(DropTargetEvent event)
dragLeave in interface DropTargetListenerevent - the drop target eventDropTargetListener.dragLeave(DropTargetEvent)public void dragOperationChanged(DropTargetEvent event)
dragOperationChanged in interface DropTargetListenerevent - the drop target eventDropTargetListener.dragOperationChanged(DropTargetEvent)public void dragOver(DropTargetEvent event)
event.detail field is set to DND.DROP_NONE
to indicate an invalid drop.
dragOver in interface DropTargetListenerevent - the drop target eventDropTargetListener.dragOver(DropTargetEvent)public void drop(DropTargetEvent event)
null afterwards.
drop in interface DropTargetListenerevent - the drop target eventDropTargetListener.drop(DropTargetEvent)public void dropAccept(DropTargetEvent event)
dropAccept in interface DropTargetListenerevent - the drop target eventDropTargetListener.dropAccept(DropTargetEvent)public Transfer[] getTransfers()
Transfer types of all
TransferDropTargetListeners.
Transfer typespublic boolean isEmpty()
true if there are no listeners to delegate events to.
true if there are no TransferDropTargetListeners
false otherwisepublic void removeDropTargetListener(TransferDropTargetListener listener)
TransferDropTargetListener.
Listeners should not be removed while a drag and drop operation is in progress.
listener - the listener to remove
|
Eclipse Platform Release 3.2 |
|||||||||
| 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, 2006. All rights reserved.