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 viewer
  • performDrop - carries out a drop into a viewer
The 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 final int
    Constant describing the position of the cursor relative to the target object.
    static final int
    Constant describing the position of the cursor relative to the target object.
    static final int
    Constant describing the position of the cursor relative to the target object.
    static final int
    Constant describing the position of the cursor relative to the target object.
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    Creates a new drop adapter for the given viewer.
  • Method Summary

    Modifier and Type
    Method
    Description
    protected void
    Clears internal state of this drop adapter.
    protected int
    Returns the position of the given event's coordinates relative to its target.
    protected Object
    Returns the target item of the given drop event.
    void
    This implementation of dragEnter permits the default operation defined in event.detailto be performed on the current data type defined in event.currentDataType.
    void
    This implementation of dragOperationChanged permits the default operation defined in event.detailto be performed on the current data type defined in event.currentDataType.
    void
    This implementation of dragOver permits the default operation defined in event.detailto be performed on the current data type defined in event.currentDataType.
    void
    This implementation of drop does nothing.
    void
    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
    Returns the bounds of the given SWT tree or table item.
    protected DropTargetEvent
    Returns the current DropTargetEvent.
    protected int
    Returns a constant describing the position of the mouse relative to the target (before, on, or after the target.
    protected int
    Returns the current operation.
    protected Object
    Returns the target object currently under the mouse.
    boolean
    Returns whether visible insertion feedback should be presented to the user.
    protected Object
    Returns the object currently selected by the viewer.
    protected int
    Get the threshold to determine whether to have before/after feedback or select feedback.
    protected Viewer
     
    protected void
    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
    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
    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

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • 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:
    • 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:
    • 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:
    • 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:
  • Constructor Details

    • ViewerDropAdapter

      protected ViewerDropAdapter(Viewer viewer)
      Creates a new drop adapter for the given viewer.
      Parameters:
      viewer - the viewer
  • Method Details

    • 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 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:
    • 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:
    • 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:
    • 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:
    • 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:
    • 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:
    • getCurrentTarget

      protected Object getCurrentTarget()
      Returns the target object currently under the mouse.
      Returns:
      the current target object
    • getCurrentEvent

      protected DropTargetEvent getCurrentEvent()
      Returns the current DropTargetEvent. This may be called only inside of the validateDrop(Object, int, TransferData) or performDrop(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, and false 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 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
    • 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 a validateDrop(Object, int, TransferData) method
      Parameters:
      operation - the operation to be used for the drop.
      Since:
      3.5
      See Also:
    • 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
    • setSelectionFeedbackEnabled

      public void setSelectionFeedbackEnabled(boolean value)
      Sets whether selection feedback should be provided during dragging.
      Parameters:
      value - true if selection feedback is desired, and false 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, and false 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, and false 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, and false 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, 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