Package org.eclipse.gef.dnd
Class AbstractTransferDropTargetListener
- java.lang.Object
-
- org.eclipse.gef.dnd.AbstractTransferDropTargetListener
-
- All Implemented Interfaces:
java.util.EventListener
,TransferDropTargetListener
,TransferDropTargetListener
,DropTargetListener
,SWTEventListener
- Direct Known Subclasses:
TemplateTransferDropTargetListener
public abstract class AbstractTransferDropTargetListener extends java.lang.Object implements TransferDropTargetListener
An abstract implementation of TransferDropTargetListener for use withEditPartViewer
s. The Viewer'sControl
should be the Drop target. In order to communicate with EditParts in a consistent way, DropTargetEvents are processed intoRequests
.Dropping is inherently a targeting interaction. This class handles calculating the target EditPart. It also handles common targeting behavior, such as interacting with the target EditPart or its ancestors to achieve things like auto-scroll/auto-expose.
-
-
Constructor Summary
Constructors Constructor Description AbstractTransferDropTargetListener(EditPartViewer viewer)
Constructs a new AbstractTransferDropTargetListener and sets the EditPartViewer.AbstractTransferDropTargetListener(EditPartViewer viewer, Transfer xfer)
Constructs a new AbstractTransferDropTargetListener and sets the EditPartViewer and Transfer.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected Request
createTargetRequest()
Creates and returns theRequest
that will be sent to the targeted EditPart.void
dragEnter(DropTargetEvent event)
Stores the information about the current DropTargetEvent.void
dragLeave(DropTargetEvent event)
Stores the information about the current DropTargetEvent and then callsunload()
.void
dragOperationChanged(DropTargetEvent event)
Stores the information about the current DropTargetEvent and then callshandleDragOperationChanged()
.void
dragOver(DropTargetEvent event)
Stores the information about the current DropTargetEvent and then callshandleDragOver()
.void
drop(DropTargetEvent event)
Stores the information about the current DropTargetEvent and then callshandleDrop()
, followed byunload()
.void
dropAccept(DropTargetEvent event)
Stores the currentDropTargetEvent
and does nothing.protected void
eraseTargetFeedback()
CallseraseTargetFeedback(Request)
on the current target, using the target Request.protected Command
getCommand()
Returns the current command from the target EditPart.DropTargetEvent
getCurrentEvent()
Returns the currentDropTargetEvent
.protected org.eclipse.draw2d.geometry.Point
getDropLocation()
Returns the current mouse location, as aPoint
.protected java.util.Collection
getExclusionSet()
Returns a Collection ofEditParts
that are to be excluded when searching for the target EditPart.protected EditPart
getTargetEditPart()
Returns the current targetEditPart
.protected Request
getTargetRequest()
Returns the targetRequest
.Transfer
getTransfer()
protected EditPartViewer
getViewer()
Returns theEditPartViewer
that is the target of the drop.protected void
handleDragOperationChanged()
Called when the user changes the Drag operation.protected void
handleDragOver()
Called whenever the User drags over the target.protected void
handleDrop()
Updates the target Request and target EditPart, and performs the drop.protected void
handleEnteredEditPart()
Called when a new target EditPart has been entered.protected void
handleExitingEditPart()
Called as the current target EditPart is being exited.protected void
handleHover()
Called when the mouse hovers during drag and drop.protected void
handleHoverStop()
Called when the mouse resumes motion after having hovered.boolean
isEnabled(DropTargetEvent event)
Returnstrue
if this TransferDropTargetListener is enabled for the specifiedDropTargetEvent
.protected boolean
isEnablementDeterminedByCommand()
Returnstrue
ifisEnabled(DropTargetEvent)
is determined by asking the potential target for a Command.protected void
setAutoexposeHelper(AutoexposeHelper helper)
Sets the current autoexpose helper.void
setCurrentEvent(DropTargetEvent currentEvent)
Sets the current DropTargetEvent.protected void
setEnablementDeterminedByCommand(boolean value)
Determines if the target editpart should be asked for a Command duringisEnabled(DropTargetEvent)
.protected void
setTargetEditPart(EditPart ep)
Sets the targetEditPart
.protected void
setTransfer(Transfer xfer)
Sets the Tranfer type that this listener can handle.protected void
setViewer(EditPartViewer viewer)
Sets the EditPartViewer.protected void
showTargetFeedback()
Asks the targetEditPart
to show target feedback if it is notnull
.protected void
unload()
Erases target feedback and sets the request tonull
.protected void
updateAutoexposeHelper()
Updates the activeAutoexposeHelper
.protected void
updateTargetEditPart()
Updates the target EditPart.protected abstract void
updateTargetRequest()
Subclasses must implement this to update the target Request.
-
-
-
Constructor Detail
-
AbstractTransferDropTargetListener
public AbstractTransferDropTargetListener(EditPartViewer viewer)
Constructs a new AbstractTransferDropTargetListener and sets the EditPartViewer. If you use this constructor, you must set the Transfer yourself usingsetTransfer(Transfer)
.- Parameters:
viewer
- the EditPartViewer
-
AbstractTransferDropTargetListener
public AbstractTransferDropTargetListener(EditPartViewer viewer, Transfer xfer)
Constructs a new AbstractTransferDropTargetListener and sets the EditPartViewer and Transfer. The Viewer's Control should be the Drop target.- Parameters:
viewer
- the EditPartViewerxfer
- the Transfer
-
-
Method Detail
-
createTargetRequest
protected Request createTargetRequest()
Creates and returns theRequest
that will be sent to the targeted EditPart. Subclasses can override to create specialized requests.- Returns:
- the
Request
to be used with the target EditPart
-
dragEnter
public void dragEnter(DropTargetEvent event)
Stores the information about the current DropTargetEvent. This method may not be called on the listener, because the listener may not be made active until after the mouse has entered the drop target.- Specified by:
dragEnter
in interfaceDropTargetListener
- See Also:
DropTargetListener.dragEnter(DropTargetEvent)
-
dragLeave
public void dragLeave(DropTargetEvent event)
Stores the information about the current DropTargetEvent and then callsunload()
. Subclasses should overrideunload()
to perform actions for this event. For some reason, SWT also callsdragLeave()
when the actual drop is performed, even though the mouse has not left the drop target.- Specified by:
dragLeave
in interfaceDropTargetListener
- See Also:
DropTargetListener.dragLeave(DropTargetEvent)
-
dragOperationChanged
public void dragOperationChanged(DropTargetEvent event)
Stores the information about the current DropTargetEvent and then callshandleDragOperationChanged()
. Subclasses should overridehandleDragOperationChanged()
to perform actions for this event.- Specified by:
dragOperationChanged
in interfaceDropTargetListener
- See Also:
DropTargetListener.dragOperationChanged(DropTargetEvent)
-
dragOver
public void dragOver(DropTargetEvent event)
Stores the information about the current DropTargetEvent and then callshandleDragOver()
. Subclasses should overridehandleDragOver()
to perform actions for this event.- Specified by:
dragOver
in interfaceDropTargetListener
- See Also:
DropTargetListener.dragOver(org.eclipse.swt.dnd.DropTargetEvent)
-
drop
public void drop(DropTargetEvent event)
Stores the information about the current DropTargetEvent and then callshandleDrop()
, followed byunload()
. Subclasses should override these methods to perform actions for this event.- Specified by:
drop
in interfaceDropTargetListener
- See Also:
DropTargetListener.drop(DropTargetEvent)
-
dropAccept
public void dropAccept(DropTargetEvent event)
Stores the currentDropTargetEvent
and does nothing. By default, the drop is accepted.- Specified by:
dropAccept
in interfaceDropTargetListener
- See Also:
DropTargetListener.dropAccept(DropTargetEvent)
-
eraseTargetFeedback
protected void eraseTargetFeedback()
CallseraseTargetFeedback(Request)
on the current target, using the target Request. Does nothing if there is no target, or if the target has not been requested to show target feedback.
-
getCommand
protected Command getCommand()
Returns the current command from the target EditPart.- Returns:
- The current command from the target EditPart
-
getCurrentEvent
public DropTargetEvent getCurrentEvent()
Returns the currentDropTargetEvent
.- Returns:
- the current event
-
getDropLocation
protected org.eclipse.draw2d.geometry.Point getDropLocation()
Returns the current mouse location, as aPoint
. The location is relative to the control's client area.- Returns:
- the drop location
-
getExclusionSet
protected java.util.Collection getExclusionSet()
Returns a Collection ofEditParts
that are to be excluded when searching for the target EditPart.- Returns:
- A Collection of EditParts to be excluded
-
getTargetEditPart
protected EditPart getTargetEditPart()
Returns the current targetEditPart
.- Returns:
- the target EditPart
-
getTargetRequest
protected Request getTargetRequest()
Returns the targetRequest
. If the target Request isnull
,createTargetRequest()
is called and the newly created Request is returned.- Returns:
- the target Request
-
getTransfer
public Transfer getTransfer()
- Specified by:
getTransfer
in interfaceTransferDropTargetListener
- See Also:
TransferDropTargetListener.getTransfer()
-
getViewer
protected EditPartViewer getViewer()
Returns theEditPartViewer
that is the target of the drop.- Returns:
- the EditPartViewer
-
handleDragOperationChanged
protected void handleDragOperationChanged()
Called when the user changes the Drag operation. By default, target feedback is erased. The target Request and target EditPart are updated, and target feedback is re-displayed on the new target.
-
handleDragOver
protected void handleDragOver()
Called whenever the User drags over the target. By default, the target Request and target EditPart are updated, feedback is shown, and auto-expose occurs.
-
handleDrop
protected void handleDrop()
Updates the target Request and target EditPart, and performs the drop. By default, the drop is performed by asking the target EditPart for a Command using the target Request. This Command is then executed on the CommandStack.If there is no target EditPart or no executable Command, the event's
detail
field is set toDND.DROP_NONE
.
-
handleEnteredEditPart
protected void handleEnteredEditPart()
Called when a new target EditPart has been entered. By default, the new target is asked to show feedback.
-
handleExitingEditPart
protected void handleExitingEditPart()
Called as the current target EditPart is being exited. By default, the target is asked to erase feedback.
-
handleHover
protected void handleHover()
Called when the mouse hovers during drag and drop.
-
handleHoverStop
protected void handleHoverStop()
Called when the mouse resumes motion after having hovered.
-
isEnabled
public boolean isEnabled(DropTargetEvent event)
Returnstrue
if this TransferDropTargetListener is enabled for the specifiedDropTargetEvent
. By default, this is calculated by comparing the event'sdataTypes
with theTransfer's
supported types (Transfer.isSupportedType(TransferData)
). If a dataType is supported, an attempt is made to find a targetEditPart
at the current drop location. If a targetEditPart
is found,true
is returned, and the DropTargetEvent'sDropTargetEvent.currentDataType
is set to the dataType that matched.- Specified by:
isEnabled
in interfaceTransferDropTargetListener
- Parameters:
event
- the DropTargetEvent- Returns:
true
if this TransferDropTargetListener is enabled for the given DropTargetEvent
-
isEnablementDeterminedByCommand
protected boolean isEnablementDeterminedByCommand()
Returnstrue
ifisEnabled(DropTargetEvent)
is determined by asking the potential target for a Command.- Returns:
true
if the target will be queried for aCommand
- Since:
- 3.1
-
setAutoexposeHelper
protected void setAutoexposeHelper(AutoexposeHelper helper)
Sets the current autoexpose helper.- Parameters:
helper
- the autoexpose helper
-
setEnablementDeterminedByCommand
protected void setEnablementDeterminedByCommand(boolean value)
Determines if the target editpart should be asked for a Command duringisEnabled(DropTargetEvent)
. For most DND operations, the data is not available, thus asking for a command would not make sense. The default value isfalse
.- Parameters:
value
-true
if a- Since:
- 3.1
-
setCurrentEvent
public void setCurrentEvent(DropTargetEvent currentEvent)
Sets the current DropTargetEvent.- Parameters:
currentEvent
- the DropTargetEvent
-
setTargetEditPart
protected void setTargetEditPart(EditPart ep)
Sets the targetEditPart
. If the target is changing,handleExitingEditPart()
is called before the target changes, andhandleEnteredEditPart()
is called afterwards.- Parameters:
ep
- the new target EditPart
-
setTransfer
protected void setTransfer(Transfer xfer)
Sets the Tranfer type that this listener can handle.- Parameters:
xfer
- the Transfer
-
setViewer
protected void setViewer(EditPartViewer viewer)
Sets the EditPartViewer.- Parameters:
viewer
- the EditPartViewer
-
showTargetFeedback
protected void showTargetFeedback()
Asks the targetEditPart
to show target feedback if it is notnull
.- See Also:
EditPart.showTargetFeedback(Request)
-
unload
protected void unload()
Erases target feedback and sets the request tonull
.
-
updateAutoexposeHelper
protected void updateAutoexposeHelper()
Updates the activeAutoexposeHelper
. Does nothing if there is still an active helper. Otherwise, obtains a new helper (possiblenull
) at the current mouse location and callssetAutoexposeHelper(AutoexposeHelper)
.
-
updateTargetEditPart
protected void updateTargetEditPart()
Updates the target EditPart.
-
updateTargetRequest
protected abstract void updateTargetRequest()
Subclasses must implement this to update the target Request.
-
-