Eclipse Platform
2.0

org.eclipse.jface.viewers
Class ViewerDropAdapter

java.lang.Object
  |
  +--org.eclipse.swt.dnd.DropTargetAdapter
        |
        +--org.eclipse.jface.viewers.ViewerDropAdapter
All Implemented Interfaces:
DropTargetListener, EventListener, org.eclipse.swt.internal.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:

The setFeedbackEnabled method can be called to turn on and off visual insertion feedback (on by default).


Field Summary
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
protected ViewerDropAdapter(Viewer viewer)
          Creates a new drop adapter for the given viewer.
 
Method Summary
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 of dragEnter permits the default operation defined in event.detailto be performed on the current data type defined in event.currentDataType.
 void dragOperationChanged(DropTargetEvent event)
          This implementation of dragOperationChanged permits the default operation defined in event.detailto be performed on the current data type defined in event.currentDataType.
 void dragOver(DropTargetEvent event)
          This implementation of dragOver permits the default operation defined in event.detailto be performed on the current data type defined in event.currentDataType.
 void drop(DropTargetEvent event)
          This implementation of drop does nothing.
 void dropAccept(DropTargetEvent event)
          This implementation of dropAccept permits the default operation defined in event.detailto be performed on the current data type defined in event.currentDataType.
protected  Rectangle getBounds(Item item)
          Returns the bounds of the given SWT tree or table item.
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  Viewer getViewer()
          Returns the viewer to which this drop support has been added.
protected  void handleException(Throwable exception, DropTargetEvent event)
          Handles any exception that occurs during callback, including rethrowing behavior.
abstract  boolean performDrop(Object data)
          Performs any work associated with the drop.
 void setFeedbackEnabled(boolean value)
          Sets whether visible insertion feedback should be presented to the user.
 void setScrollExpandEnabled(boolean value)
          Sets whether auto scrolling and expanding 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
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

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:
#getLocation, 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:
#getLocation, 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:
#getLocation, 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:
#getLocation, 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

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

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 of dragEnter permits the default operation defined in event.detailto be performed on the current data type defined in event.currentDataType. For additional information see DropTargetListener.dragEnter.

Specified by:
dragEnter in interface DropTargetListener
Overrides:
dragEnter in class DropTargetAdapter
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 of dragOperationChanged permits the default operation defined in event.detailto be performed on the current data type defined in event.currentDataType. For additional information see DropTargetListener.dragOperationChanged.

Specified by:
dragOperationChanged in interface DropTargetListener
Overrides:
dragOperationChanged in class DropTargetAdapter
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 of dragOver permits the default operation defined in event.detailto be performed on the current data type defined in event.currentDataType. For additional information see DropTargetListener.dragOver.

Specified by:
dragOver in interface DropTargetListener
Overrides:
dragOver in class DropTargetAdapter
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 of drop does nothing. For additional information see DropTargetListener.drop.

Specified by:
drop in interface DropTargetListener
Overrides:
drop in class DropTargetAdapter
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 of dropAccept permits the default operation defined in event.detailto be performed on the current data type defined in event.currentDataType. For additional information see DropTargetListener.dropAccept.

Specified by:
dropAccept in interface DropTargetListener
Overrides:
dropAccept in class DropTargetAdapter
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 class DND
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

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, and false if not

getSelectedObject

protected Object getSelectedObject()
Returns the object currently selected by the viewer.

Returns:
the selected object, or null if either no object or multiple objects are selected

getViewer

protected Viewer getViewer()
Returns the viewer to which this drop support has been added.


handleException

protected void handleException(Throwable exception,
                               DropTargetEvent event)
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 exception
event - 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, and false otherwise

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, and false if not

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, and false if not
Since:
2.0

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, or null if the mouse is hovering over empty space
operation - the current drag operation (copy, move, etc.)
transferType - the current transfer type
Returns:
true if the drop is valid, and false otherwise

Eclipse Platform
2.0

Copyright (c) IBM Corp. and others 2000, 2002. All Rights Reserved.