Class 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 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 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
      • 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
      • 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 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
      • 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