Package org.eclipse.jface.viewers
Class ViewerDropAdapter
- java.lang.Object
-
- org.eclipse.swt.dnd.DropTargetAdapter
-
- org.eclipse.jface.viewers.ViewerDropAdapter
-
- All Implemented Interfaces:
EventListener
,DropTargetListener
,SWTEventListener
- Direct Known Subclasses:
PluginDropAdapter
public abstract class ViewerDropAdapter extends DropTargetAdapter
This adapter class provides generic drag-and-drop support for a viewer.Subclasses must implement the following methods:
validateDrop
- identifies valid drop targets in viewerperformDrop
- carries out a drop into a viewer
setFeedbackEnabled
method can be called to turn on and off visual insertion feedback (on by default).
-
-
Field Summary
Fields Modifier and Type Field Description static int
LOCATION_AFTER
Constant describing the position of the cursor relative to the target object.static int
LOCATION_BEFORE
Constant describing the position of the cursor relative to the target object.static int
LOCATION_NONE
Constant describing the position of the cursor relative to the target object.static int
LOCATION_ON
Constant describing the position of the cursor relative to the target object.
-
Constructor Summary
Constructors Modifier Constructor Description protected
ViewerDropAdapter(Viewer viewer)
Creates a new drop adapter for the given viewer.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods Modifier and Type Method Description protected void
clearState()
Clears internal state of this drop adapter.protected int
determineLocation(DropTargetEvent event)
Returns the position of the given event's coordinates relative to its target.protected Object
determineTarget(DropTargetEvent event)
Returns the target item of the given drop event.void
dragEnter(DropTargetEvent event)
This implementation ofdragEnter
permits the default operation defined inevent.detail
to be performed on the current data type defined inevent.currentDataType
.void
dragOperationChanged(DropTargetEvent event)
This implementation ofdragOperationChanged
permits the default operation defined inevent.detail
to be performed on the current data type defined inevent.currentDataType
.void
dragOver(DropTargetEvent event)
This implementation ofdragOver
permits the default operation defined inevent.detail
to be performed on the current data type defined inevent.currentDataType
.void
drop(DropTargetEvent event)
This implementation ofdrop
does nothing.void
dropAccept(DropTargetEvent event)
This implementation ofdropAccept
permits the default operation defined inevent.detail
to be performed on the current data type defined inevent.currentDataType
.protected Rectangle
getBounds(Item item)
Returns the bounds of the given SWT tree or table item.protected DropTargetEvent
getCurrentEvent()
Returns the currentDropTargetEvent
.protected int
getCurrentLocation()
Returns a constant describing the position of the mouse relative to the target (before, on, or after the target.protected int
getCurrentOperation()
Returns the current operation.protected Object
getCurrentTarget()
Returns the target object currently under the mouse.boolean
getFeedbackEnabled()
Returns whether visible insertion feedback should be presented to the user.protected Object
getSelectedObject()
Returns the object currently selected by the viewer.protected int
getThreshold()
Get the threshold to determine whether to have before/after feedback or select feedback.protected Viewer
getViewer()
protected void
handleException(Throwable exception, DropTargetEvent event)
Deprecated.this method should not be used.protected void
overrideOperation(int operation)
Overrides the current operation for a drop that happens immediately after the current validateDrop.abstract boolean
performDrop(Object data)
Performs any work associated with the drop.void
setExpandEnabled(boolean value)
Sets whether auto expanding should be provided during dragging.void
setFeedbackEnabled(boolean value)
Sets whether visible insertion feedback should be presented to the user.void
setScrollEnabled(boolean value)
Sets whether auto scrolling should be provided during dragging.void
setScrollExpandEnabled(boolean value)
Sets whether auto scrolling and expanding should be provided during dragging.void
setSelectionFeedbackEnabled(boolean value)
Sets whether selection feedback should be provided during dragging.abstract boolean
validateDrop(Object target, int operation, TransferData transferType)
Validates dropping on the given object.-
Methods inherited from class org.eclipse.swt.dnd.DropTargetAdapter
dragLeave
-
-
-
-
Field Detail
-
LOCATION_BEFORE
public static final int LOCATION_BEFORE
Constant describing the position of the cursor relative to the target object. This means the mouse is positioned slightly before the target.- See Also:
getCurrentLocation()
, Constant Field Values
-
LOCATION_AFTER
public static final int LOCATION_AFTER
Constant describing the position of the cursor relative to the target object. This means the mouse is positioned slightly after the target.- See Also:
getCurrentLocation()
, Constant Field Values
-
LOCATION_ON
public static final int LOCATION_ON
Constant describing the position of the cursor relative to the target object. This means the mouse is positioned directly on the target.- See Also:
getCurrentLocation()
, Constant Field Values
-
LOCATION_NONE
public static final int LOCATION_NONE
Constant describing the position of the cursor relative to the target object. This means the mouse is not positioned over or near any valid target.- See Also:
getCurrentLocation()
, Constant Field Values
-
-
Constructor Detail
-
ViewerDropAdapter
protected ViewerDropAdapter(Viewer viewer)
Creates a new drop adapter for the given viewer.- Parameters:
viewer
- the viewer
-
-
Method Detail
-
clearState
protected void clearState()
Clears internal state of this drop adapter. This method can be called when no DnD operation is underway, to clear internal state from previous drop operations.- Since:
- 3.5
-
determineLocation
protected int determineLocation(DropTargetEvent event)
Returns the position of the given event's coordinates relative to its target. The position is determined to be before, after, or on the item, based on some threshold value.- Parameters:
event
- the event- Returns:
- one of the
LOCATION_*
constants defined in this class
-
getThreshold
protected int getThreshold()
Get the threshold to determine whether to have before/after feedback or select feedback. Threshold shall not be bigger than itemHeight/2.- Returns:
- amount of pixels from top/bottom of element that trigger before/after behavior.
- Since:
- 3.16
-
determineTarget
protected Object determineTarget(DropTargetEvent event)
Returns the target item of the given drop event.- Parameters:
event
- the event- Returns:
- The target of the drop, may be
null
.
-
dragEnter
public void dragEnter(DropTargetEvent event)
Description copied from class:DropTargetAdapter
This implementation ofdragEnter
permits the default operation defined inevent.detail
to be performed on the current data type defined inevent.currentDataType
. For additional information seeDropTargetListener.dragEnter
.- Specified by:
dragEnter
in interfaceDropTargetListener
- Overrides:
dragEnter
in classDropTargetAdapter
- Parameters:
event
- the information associated with the drag enter event- See Also:
DropTargetEvent
-
dragOperationChanged
public void dragOperationChanged(DropTargetEvent event)
Description copied from class:DropTargetAdapter
This implementation ofdragOperationChanged
permits the default operation defined inevent.detail
to be performed on the current data type defined inevent.currentDataType
. For additional information seeDropTargetListener.dragOperationChanged
.- Specified by:
dragOperationChanged
in interfaceDropTargetListener
- Overrides:
dragOperationChanged
in classDropTargetAdapter
- Parameters:
event
- the information associated with the drag operation changed event- See Also:
DropTargetEvent
-
dragOver
public void dragOver(DropTargetEvent event)
Description copied from class:DropTargetAdapter
This implementation ofdragOver
permits the default operation defined inevent.detail
to be performed on the current data type defined inevent.currentDataType
. For additional information seeDropTargetListener.dragOver
.- Specified by:
dragOver
in interfaceDropTargetListener
- Overrides:
dragOver
in classDropTargetAdapter
- Parameters:
event
- the information associated with the drag over event- See Also:
DropTargetEvent
-
drop
public void drop(DropTargetEvent event)
Description copied from class:DropTargetAdapter
This implementation ofdrop
does nothing. For additional information seeDropTargetListener.drop
.- Specified by:
drop
in interfaceDropTargetListener
- Overrides:
drop
in classDropTargetAdapter
- Parameters:
event
- the information associated with the drop event- See Also:
DropTargetEvent
-
dropAccept
public void dropAccept(DropTargetEvent event)
Description copied from class:DropTargetAdapter
This implementation ofdropAccept
permits the default operation defined inevent.detail
to be performed on the current data type defined inevent.currentDataType
. For additional information seeDropTargetListener.dropAccept
.- Specified by:
dropAccept
in interfaceDropTargetListener
- Overrides:
dropAccept
in classDropTargetAdapter
- Parameters:
event
- the information associated with the drop accept event- See Also:
DropTargetEvent
-
getBounds
protected Rectangle getBounds(Item item)
Returns the bounds of the given SWT tree or table item.- Parameters:
item
- the SWT Item- Returns:
- the bounds, or
null
if it is not a known type of item
-
getCurrentLocation
protected int getCurrentLocation()
Returns a constant describing the position of the mouse relative to the target (before, on, or after the target.- Returns:
- one of the
LOCATION_*
constants defined in this type
-
getCurrentOperation
protected int getCurrentOperation()
Returns the current operation.- Returns:
- a
DROP_*
constant from classDND
- See Also:
DND.DROP_COPY
,DND.DROP_MOVE
,DND.DROP_LINK
,DND.DROP_NONE
-
getCurrentTarget
protected Object getCurrentTarget()
Returns the target object currently under the mouse.- Returns:
- the current target object
-
getCurrentEvent
protected DropTargetEvent getCurrentEvent()
Returns the currentDropTargetEvent
. This may be called only inside of thevalidateDrop(Object, int, TransferData)
orperformDrop(Object)
methods.- Returns:
- the DropTargetEvent
- Since:
- 3.5
-
getFeedbackEnabled
public boolean getFeedbackEnabled()
Returns whether visible insertion feedback should be presented to the user.Typical insertion feedback is the horizontal insertion bars that appear between adjacent items while dragging.
- Returns:
true
if visual feedback is desired, andfalse
if not
-
getSelectedObject
protected Object getSelectedObject()
Returns the object currently selected by the viewer.- Returns:
- the selected object or the first element in current selection, and null if no objects are selected
-
getViewer
protected Viewer getViewer()
- Returns:
- the viewer to which this drop support has been added.
-
handleException
@Deprecated protected void handleException(Throwable exception, DropTargetEvent event)
Deprecated.this method should not be used. Exception handling has been removed from DropTargetAdapter methods overridden by this class. Handles any exception that occurs during callback, including rethrowing behavior.[Issue: Implementation prints stack trace and eats exception to avoid crashing VA/J. Consider conditionalizing the implementation to do one thing in VAJ and something more reasonable in other operating environments. ]
- Parameters:
exception
- the exceptionevent
- the event
-
performDrop
public abstract boolean performDrop(Object data)
Performs any work associated with the drop.Subclasses must implement this method to provide drop behavior.
- Parameters:
data
- the drop data- Returns:
true
if the drop was successful, andfalse
otherwise
-
overrideOperation
protected void overrideOperation(int operation)
Overrides the current operation for a drop that happens immediately after the current validateDrop. This maybe called only from within avalidateDrop(Object, int, TransferData)
method- Parameters:
operation
- the operation to be used for the drop.- Since:
- 3.5
- See Also:
DND.DROP_COPY
,DND.DROP_MOVE
,DND.DROP_LINK
,DND.DROP_NONE
-
setFeedbackEnabled
public void setFeedbackEnabled(boolean value)
Sets whether visible insertion feedback should be presented to the user.Typical insertion feedback is the horizontal insertion bars that appear between adjacent items while dragging.
- Parameters:
value
-true
if visual feedback is desired, andfalse
if not
-
setSelectionFeedbackEnabled
public void setSelectionFeedbackEnabled(boolean value)
Sets whether selection feedback should be provided during dragging.- Parameters:
value
-true
if selection feedback is desired, andfalse
if not- Since:
- 3.2
-
setScrollExpandEnabled
public void setScrollExpandEnabled(boolean value)
Sets whether auto scrolling and expanding should be provided during dragging.- Parameters:
value
-true
if scrolling and expanding is desired, andfalse
if not- Since:
- 2.0
-
setExpandEnabled
public void setExpandEnabled(boolean value)
Sets whether auto expanding should be provided during dragging.- Parameters:
value
-true
if expanding is desired, andfalse
if not- Since:
- 3.4
-
setScrollEnabled
public void setScrollEnabled(boolean value)
Sets whether auto scrolling should be provided during dragging.- Parameters:
value
-true
if scrolling is desired, andfalse
if not- Since:
- 3.4
-
validateDrop
public abstract boolean validateDrop(Object target, int operation, TransferData transferType)
Validates dropping on the given object. This method is called whenever some aspect of the drop operation changes.Subclasses must implement this method to define which drops make sense.
- Parameters:
target
- the object that the mouse is currently hovering over, ornull
if the mouse is hovering over empty spaceoperation
- the current drag operation (copy, move, etc.)transferType
- the current transfer type- Returns:
true
if the drop is valid, andfalse
otherwise
-
-