[ Previous | Next | Contents | Glossary | Home | Search ]
Motif and CDE 2.1 Style Guide Reference


Drag-and-Drop Transfer

Reference

Description

Drag-and-drop transfer is a user interaction in which a user drags source elements to a target element on which they are dropped.

When to Use

Required
Support dragging any object represented as an icon.

Required
Support dropping onto objects represented as icons.

Required
If a control supports any form of data transfer with its contents used as a source, then those contents can be the source of a drag-and-drop operation.

Required
If a control allows any form of data transfer to the control, it can be used as a target for a drag-and-drop operation.

Guidelines

Required
Make the source of a drag-and-drop transfer the element or selection on which the drag was initiated.

Required
Make the target of a drag-and-drop transfer the control on which the drop was performed; if the control holds a selection scope, then it is the insertion point within that scope.

Required
The default operation for a drag-and-drop transfer must be a move, except in the following cases:

  1. When the source is not editable, make copy the default.

  2. When the destination is an external device (for example, a printer, diskette, or mail out basket), make copy the default.

  3. When the destination is an application that manipulates the data (for example, a compiler), consider making copy the default.

  4. Required
    The default operation for a drag-and-drop transfer may be overridden by Ctrl and/or Shift modifiers when the TRANSFER button is released.

    Recommended
    Allow users to control whether nonselectable elements such as labels can be dragged or not.

    Recommended
    Make any basic function available through a drag-and-drop transfer also available through predefined shortcut keys, menus, push buttons, or secondary windows. That is, provide drag-and-drop transfer as a shortcut to functions that are accessible through other interface controls supported within your application. Do not provide any basic operation that is supported solely through a drag-and-drop transfer.

    Use the following guidelines when TRANSFER is a separate mouse button from SELECT.

    Required
    Initiate a drag when the user presses the TRANSFER button and then moves the mouse on selections and elements that can be dragged.

    Required
    If the user uses the TRANSFER button to drag an element that has not been selected, drag only that element without affecting any existing selection.

    Required
    Drag all selected elements in the scope when the user presses the SELECT button and then moves the mouse on a selection.

    Required
    Initiate a drag when the user clicks Alt TRANSFER on a selection or an element that can be dragged.

    Required
    Whether the TRANSFER button is integrated with SELECT on MB1 or not, when the user clicks SELECT, optionally augmented with Shift and/or Ctrl, the effect should be the same.

    Required
    When the user multi-clicks (or multi-presses) the SELECT button, optionally augmented with Shift Ctrl, the effect should be the same whether the TRANSFER button is integrated with SELECT on MB1 or not.

    Use the following guidelines when the TRANSFER button is the same button as SELECT.

    Required
    When the user presses MB1 and moves the pointer on a selection, drag all selected elements in the scope.

    Required
    When the user presses MB1 on an element that can be activated or toggled (other than a tear-off choice), activate or toggle the element; do not allow dragging.

    Required
    When the user presses MB1 and moves the pointer on an element that cannot be selected (other than a tear-off choice), do not allow dragging.

    Required
    If the MENU button is bound to a mouse button other than MB1, when the user clicks Alt MB1, optionally augmented with Shift and/or Ctrl, on a selection or an element that can be dragged, initiate a drag.

    Required
    Whether the TRANSFER button is integrated with SELECT on MB1 or not, support the same effect when the user presses SELECT and moves the pointer, optionally augmented with Shift and/or Ctrl, in the background (or on unselected text) of a scope that supports area or range selection techniques.

    Optional
    When the TRANSFER button is integrated with SELECT on MB1 in a nontextual scope that supports neither area nor range selection techniques, pressing MB1 and moving the pointer, optionally augmented with Shift and/or Ctrl, in the background can be used either for dragging the entire selection scope or for panning.

    Required
    When the TRANSFER button is integrated with SELECT on MB1, when the user presses MB1 and moves the pointer, optionally augmented with Shift and/or Ctrl, on an unselected element for dragging, the effect should be equivalent to the user clicking the SELECT button (without modifiers) on the element (using whatever selection model is in force) and then dragging the selection.

    Required
    When the TRANSFER button is integrated with SELECT on MB1 in a nontextual scope, treat pressing MB1 and moving on an unselected element as a selection technique if the following is true:

    1. Area or range selection techniques are supported and the scope is densely populated (in other words, there is not much background space available)

    2. Different selection techniques are used (for example, touch versus area techniques) depending upon whether MB1 is pressed on an element versus in the background

      Otherwise, allow the user to press MB1 and move the pointer on an unselected element for dragging.

    3. Recommended
      When the TRANSFER button is integrated with SELECT on MB1, then treat pressing Shift MB1 and moving the pointer on an unselected element as a selection technique only if adjustment selection techniques can be used in the scope and if the scope is densely populated. Otherwise, allow pressing Shift MB1 and moving the pointer for dragging.

      Recommended
      When the TRANSFER button is integrated with SELECT on MB1, treat pressing Ctrl MB1 and moving the pointer on an unselected element as a selection technique only if group selection techniques can be used in the scope, if Ctrl forces use of toggle mode instead of select mode, and if the scope is densely populated. Otherwise, allow pressing Ctrl MB1 and moving the pointer for dragging.

      Recommended
      When the TRANSFER button is integrated with SELECT on MB1, allow the user to press Ctrl Shift MB1 and move the pointer on an unselected element for dragging.

      Recommended
      If the drag pointer's source indicator consists of a graphic image of the source and if the operation is a move, hide the source, especially if the operation indicator is used.

      Recommended
      When a user pauses on an icon (for a time that the user can set) during a drag-and-drop operation, display and raise the window used to view the corresponding object.

      Required
      The application that contains the source elements of a drag-and-drop operation may limit drops to windows that it manages. It may also treat elements of its own or other applications as invisible for the purpose of determining the target.

      Required
      When a drag is completed, a drop should be performed at the pointer location as follows:

      1. Where the pointer is when the TRANSFER button is released, if it was pressed while the drag was in progress

      2. Where the pointer is when the TRANSFER button is clicked, if it was not pressed while the drag was in progress

      3. Where the user presses Return or Enter

        In any case, the state of the Ctrl and Shift modifiers at the time of the drops determines the operation to be performed.

      4. Required
        When a drag is in progress and the user presses Cancel, cancel the drag.

        Recommended
        When a drag is in progress and the user presses Help, post a Help dialog that describes the result of a drop at the pointer location. The Help dialog should allow the drop to be performed (if it would likely succeed) or canceled (via a Cancel choice) or additional Help to be obtained (via a Help choice).

        Recommended
        If different operations can be performed as a result of a drop (for example move, copy, or link), provide push buttons labeled with all the choices in the Help dialog.

        Optional
        The Help dialog can contain a Resume choice if the drag can be resumed.

        Required
        When the user attempts to drop an element on an element that does not support the operation, cancel the drag or display a message dialog similar to the one that would be used if Help were pressed at that location.

        Required
        When a user drops a source element onto the same position it currently occupies, the application should not perform an action.

        Required
        If the source elements of a drag-and-drop move operation are selected, select the elements transferred to the target scope if the source and target scopes are the same.

        Required
        If the source elements of a drag-and-drop move operation are selected, select the elements transferred to the target scope if the target uses normal mode and allows the number of elements transferred to be selected.

        Required
        Move focus to the target control in a drag-and-drop operation.

        Recommended
        If the user drops an element at an inappropriate drop site, design your application to display a "snap back" effect and to display an error message indicating the reason the drop was not allowed. Within the error message, state the context of the error (for example, trying to perform action A on object B), what happened (for example, could not connect to system X), and how to correct the problem (for example, direct the user to press the Help push button for information).

        Recommended
        When the user selects the target of a drag-and-drop link operation, make a link (in an application-specific manner) from the selected elements to the source elements.

        Essential Related Topics

        For more information, see the Context-Sensitive Help, Copy To (Dialog Choice), Drag/Move (Action Choice), Direct Manipulation, Emphasis (Cue), Move To (Dialog Choice), Pointer, and Window Menu reference pages.

        Supplemental Related Topics

        For more information, see the Data Transfer, Keyboard (Device), Mouse (Device), Pointer (Predefined), and Pop-Up Menu (Menu Type) reference pages.


        [ Previous | Next | Contents | Glossary | Home | Search ]