org.eclipse.jface.util
Class DelegatingDropAdapter
java.lang.Object
org.eclipse.jface.util.DelegatingDropAdapter
-
All Implemented Interfaces:
-
EventListener,
DropTargetListener, org.eclipse.swt.internal.SWTEventListener
-
public class DelegatingDropAdapter
- extends
Object
- implements
DropTargetListener
A DelegatingDropAdapter
is a DropTargetListener
that
maintains and delegates to a set of
TransferDropTargetListener
s. 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);
-
Since:
- 3.0
Methods inherited from class java.lang.
Object
|
clone,
equals,
finalize,
getClass,
hashCode,
notify,
notifyAll,
toString,
wait,
wait,
wait
|
DelegatingDropAdapter
public DelegatingDropAdapter()
addDropTargetListener
public void addDropTargetListener(
TransferDropTargetListener listener)
- Adds the given
TransferDropTargetListener
.
-
-
-
Parameters:
-
listener
- the new listener
dragEnter
public void dragEnter(
DropTargetEvent event)
- The cursor has entered the drop target boundaries. The current listener is
updated, and
#dragEnter()
is forwarded to the current listener.
-
-
Specified by:
-
dragEnter
in interface
DropTargetListener
-
-
Parameters:
-
event
- the drop target event -
See Also:
-
DropTargetListener.dragEnter(DropTargetEvent)
dragLeave
public void dragLeave(
DropTargetEvent event)
- The cursor has left the drop target boundaries. The event is forwarded to the
current listener.
-
-
Specified by:
-
dragLeave
in interface
DropTargetListener
-
-
Parameters:
-
event
- the drop target event -
See Also:
-
DropTargetListener.dragLeave(DropTargetEvent)
dragOperationChanged
public void dragOperationChanged(
DropTargetEvent event)
- The operation being performed has changed (usually due to the user changing
a drag modifier key while dragging). Updates the current listener and forwards
this event to that listener.
-
-
Specified by:
-
dragOperationChanged
in interface
DropTargetListener
-
-
Parameters:
-
event
- the drop target event -
See Also:
-
DropTargetListener.dragOperationChanged(DropTargetEvent)
dragOver
public void dragOver(
DropTargetEvent event)
- The cursor is moving over the drop target. Updates the current listener and
forwards this event to that listener. If no listener can handle the drag
operation the
event.detail
field is set to DND.DROP_NONE
to indicate an invalid drop.
-
-
Specified by:
-
dragOver
in interface
DropTargetListener
-
-
Parameters:
-
event
- the drop target event -
See Also:
-
DropTargetListener.dragOver(DropTargetEvent)
drop
public void drop(
DropTargetEvent event)
- Forwards this event to the current listener, if there is one. Sets the
current listener to
null
afterwards.
-
-
Specified by:
-
drop
in interface
DropTargetListener
-
-
Parameters:
-
event
- the drop target event -
See Also:
-
DropTargetListener.drop(DropTargetEvent)
dropAccept
public void dropAccept(
DropTargetEvent event)
- Forwards this event to the current listener if there is one.
-
-
Specified by:
-
dropAccept
in interface
DropTargetListener
-
-
Parameters:
-
event
- the drop target event -
See Also:
-
DropTargetListener.dropAccept(DropTargetEvent)
getTransfers
public
Transfer[] getTransfers()
- Returns the combined set of
Transfer
types of all
TransferDropTargetListeners
.
-
-
-
Returns:
- the combined set of
Transfer
types
isEmpty
public boolean isEmpty()
- Returns
true
if there are no listeners to delegate events to.
-
-
-
Returns:
-
true
if there are no TransferDropTargetListeners
false
otherwise
removeDropTargetListener
public void removeDropTargetListener(
TransferDropTargetListener listener)
- Removes the given
TransferDropTargetListener
.
Listeners should not be removed while a drag and drop operation is in progress.
-
-
-
Parameters:
-
listener
- the listener to remove
Guidelines for using Eclipse APIs.
Copyright (c) Eclipse contributors and others 2000, 2008. All rights reserved.