[Contents] [Index] [Next] [Previous]

Selection


Selection Models

4-1
Your system supports five selection models: single selection, browse selection, multiple selection, range selection, and discontiguous selection (Selection Models).

Each collection has one or more appropriate selection models. The model limits the kinds of choices the user can make in the collection. Some collections enforce a selection model, while others allow the user or application to change it.

Mouse-Based Single Selection

4-2
In a collection that uses single selection, when BSelect is clicked in a deselected element, the location cursor moves to that element, that element is selected, and any other selection in the collection is deselected (Mouse-Based Single Selection).

Single selection is the simplest selection model, used to select a single element. BSelect, the first mouse button, provides a consistent means of selecting an object within a group using the mouse.

Mouse-Based Browse Selection

4-3
In a collection that uses browse selection, when BSelect is released in a selectable element, that element is selected, and any other selection in the collection is deselected. As BSelect is dragged through selectable elements, each element under the pointer is selected, and the previously selected element is deselected. The selection remains on the element where BSelect is released, and the location cursor is moved there (Mouse-Based Browse Selection).

Browse selection is used to select a single element. It also allows the user to browse through the collection by dragging BSelect.

Mouse-Based Multiple Selection

4-4
In a collection that uses multiple selection, clicking BSelect on an unselected element adds that element to the current selection in the collection. Clicking BSelect on a selected element removes that element from the current selection in the collection. Clicking BSelect on an element moves the location cursor to that element (Mouse-Based Multiple Selection).

Multiple selection allows the user to select or deselect multiple elements of a collection, one at a time, by using BSelect Click.

Mouse-Based Range Selection

4-5
In a collection that uses range selection, pressing BSelect sets an anchor on the element, or at the position where BSelect was pressed, and deselects all elements in the collection. The anchor and the current position of the pointer determine the current range. As BSelect is dragged through the collection, the current range is highlighted. When BSelect is released, the anchor does not move, and all the elements within the current range are selected (Mouse-Based Range Selection).

Range selection allows the user to select multiple contiguous elements of a collection by pressing and dragging BSelect.

4-6
In a text-like collection that uses range selection, the anchor point is the text pointer position when BSelect is pressed, and the current range consists of all elements between the anchor point and the current text pointer position (Mouse-Based Range Selection).

In text-like collections, elements are ordered linearly, and a text pointer is always considered to be between elements at a point near the actual pointer position.

4-7
In a graphics-like or list-like collection that uses a marquee to indicate the range of a range selection, the current range consists of those elements that fall completely within the marquee. If there is an anchor element, the marquee is always made large enough to enclose it completely. Otherwise, an anchor point is used and is the point at which BSelect was pressed; the anchor point determines one corner of the marquee. If the collection is not arranged as a list or matrix, the marquee is extended to the pointer position. If the collection is arranged as a list or matrix, the marquee is either extended to completely enclose the element under the pointer or extended to the pointer position. Clicking BSelect on a selectable element makes it an anchor element, selects it, and deselects all other elements (Mouse-Based Range Selection).

A marquee, or highlighted rectangle, is often used to indicate the range of a selection in graphics-like and list-like collections.

4-8
In a collection that uses range selection, when the user presses BSelect, the anchor remains unchanged, and an extended range for the selection is determined, based on one of the following extension models (Mouse-Based Range Selection):
Reselect
The extended range is determined by the anchor and the current pointer position, in exactly the same manner as when the selection was initially made.
Enlarge Only
The selection can only be enlarged. The extended range is determined by the anchor and the current pointer position, but then is enlarged to include the current selection.
Balance Beam
A balance point is defined at the midpoint of the current selection. When the user presses BSelect on the opposite side of the balance point from the anchor, this model works exactly like the Reselect model. When the user presses BSelect or starts a navigation action modified by on the same side of the balance point as the anchor, this model moves the anchor to the opposite end of the selection and then works exactly like the Reselect model.

When the user releases BSelect, the anchor does not move, all the elements within the extended range are selected, and all the elements outside of it are deselected (Mouse-Based Range Selection).

BSelect provides a convenient means of extending the range of a selection.

Mouse-Based Discontiguous Selection

4-9
In a collection that uses discontiguous selection, the behavior of BSelect is exactly the same as in the range selection model. After the user sets the anchor with BSelect, BSelect works exactly as in the range selection model (Mouse-Based Discontiguous Selection).

Discontiguous selection is an extension of range selection that allows the user to select multiple discontiguous ranges of elements.

4-10
In a collection that uses discontiguous selection, when the current selection is not empty and the user clicks BSelect, the anchor and location cursor move to that point. If the current selection is not empty and the user clicks BSelect on an element, the selection state of that element is toggled, and that element becomes the anchor element (Mouse-Based Discontiguous Selection).

In discontiguous selection, BSelect Click provides a convenient means of moving the anchor and toggling the selection state of the element under the pointer.

4-11
In a collection that uses discontiguous selection, BSelect Motion toggles the selection state of a range of elements. The range itself is determined exactly as for BSelect Motion. Releasing BSelect toggles the selection state of the elements in the range according to one of two models (Mouse-Based Discontiguous Selection):
Anchor Toggle
Toggling is based on an anchor element. If the range is anchored by a point, and is not empty, the anchor element is set to the element within the range that is nearest to the anchor point. Toggling sets the selection state of all elements in the range to the inverse of the initial state of the anchor element.
Full Toggle
The selection state of each element in the extended range is toggled.

In discontiguous selection, BSelect provides a convenient means of toggling the selection state of elements in a range.

4-12
In a collection that uses discontiguous selection, after BSelect toggles a selection, BSelect or BSelect extends the range of toggled elements. The extended range is determined in exactly the same way as when BSelect is used to extend a range selection. When the user releases BSelect the selection state of elements added to the range is determined by the toggle model in use (either Anchor Toggle or Full Toggle). If elements are removed from the range, they either revert to their state prior to the last use of BSelect or change to the state opposite that of the elements remaining within the extended range (Mouse-Based Discontiguous Selection).

BSelect and BSelect provide a convenient means of extending the range of toggled elements.

Keyboard Selection

4-13
The selection models support keyboard selection modes according to the following rules (Keyboard Selection):

Selection must be available from the keyboard. In normal mode, used for making simple contiguous selections from the keyboard, the location cursor is never disjoint from the current selection. In add mode, used for making more complex and possibly disjoint selections, the location cursor can move independent of the current selection.

4-14
If a collection supports both normal mode and add mode, switches from one mode to the other. Mouse-based selection does not change when the keyboard selection mode changes. In editable components, add mode is a temporary mode that is exited when the user performs an operation on the selection or deselects the selection (Keyboard Selection).

provides a convenient means of switching between normal mode and add mode.

Keyboard-Based Single Selection

4-15
In a collection that uses single selection, the navigation keys move the location cursor independent from the selected element. If the user presses [Select] or on an unselected element, the element with the location cursor is selected, and any other selection in the collection is deselected (Keyboard-Based Single Selection).

Single selection supports only add mode. Pressing [Select] or is similar to clicking BSelect.

Keyboard-Based Browse Selection

4-16
In a collection that uses browse selection, the navigation keys move the location cursor and select the cursored element, deselecting any other element. If the application has deselected all elements or if the cursor is left disjoint from the selection, [Select] or selects the cursored element and deselects any other element (Keyboard-Based Browse Selection).

Browse selection supports only normal mode. A navigation operation is similar to dragging BSelect.

Keyboard-Based Multiple Selection

4-17
In a collection that uses multiple selection, the navigation keys move the location cursor independent from the current selection. [Select] or on an unselected element adds the element to the current selection. [Select] or on a selected element removes the element from the current selection (Keyboard-Based Multiple Selection).

Multiple selection supports only add mode. Pressing [Select] or is similar to clicking BSelect.

Keyboard-Based Range Selection

4-18
In a collection that uses range selection and is in normal mode, the navigation keys move the location cursor and deselect the current selection. If the cursor is on an element, it is selected. The anchor moves with the location cursor.

Text-like collections can use a different model in which the navigation keys leave the anchor at its current location, except that, if the current selection is not empty, it is deselected and the anchor is moved to the location of the cursor prior to navigation (Keyboard-Based Range Selection).

Range selection supports normal mode, and, if the collection also supports add mode, normal mode is the default.

4-19
In a collection that uses range selection, whether in normal mode or add mode, [Select] or (except in a Text component) moves the anchor to the cursor, deselects the current selection, and, if the cursor is on an element, selects the element. Unless the anchor is on a deselected item, [Select] or (except in Text) extends the selection from the anchor to the cursor, based on the extension model used by BSelect (Reselect, Enlarge Only, or Balance Beam) (Keyboard-Based Range Selection).

In range selection, pressing [Select] or is similar to clicking BSelect, and pressing [Select] or extends the range as with BSelect.

4-20
In a collection that uses range selection and is in normal mode, using in conjunction with the navigation keys extends the selection, based on the extension model used by BSelect. If the current selection is empty, the anchor is first moved to the cursor. The cursor is then moved according to the navigation keys, and the selection is extended based on the extension model used by BSelect (Keyboard-Based Range Selection).

In range selection, shifted navigation extends the selection in a similar manner to dragging BSelect.

4-21
In a collection that uses range selection and is in add mode, the navigation keys move the location cursor but leave the anchor unchanged. Shifted navigation moves the location cursor according to the navigation keys, and the selection is extended based on the extension model used by BSelect (Keyboard-Based Range Selection).

Shifted navigation in add mode is similar to shifted navigation in normal mode, except that when the selection is empty the anchor does not move to the cursor prior to navigation.

Keyboard-Based Discontiguous Selection

4-22
In a collection that uses discontiguous selection and is in normal mode, all keyboard operations have the same effect as in the range selection model (Keyboard-Based Discontiguous Selection).

Normal mode does not permit multiple discontiguous selections.

4-23
In a collection that uses discontiguous selection and is in add mode, [Select] or moves the anchor to the location cursor and initiates toggling. If the cursor is on an element, the selection state of that element is toggled, but the selection state of all other elements remains unchanged. [Select] or and shifted navigation operations extend the selection between the anchor and the location cursor, based on the toggle mechanism used by BSelect (Anchor Toggle or Full Toggle) (Keyboard-Based Discontiguous Selection).

Add mode permits use of the keyboard to make multiple discontiguous selections.

Canceling a Selection

4-24
Your application uses to cancel or undo any incomplete motion operation used for selection. Once the user presses to cancel a motion operation, the application ignores subsequent key and button releases until after all buttons and keys are released. while extending or toggling leaves the selection state of all elements as they were prior to the button press (Canceling a Selection).

allows the user to cancel an incomplete selection operation quickly and consistently.

Autoscrolling and Selection

4-25
If the user drags the pointer out of a scrollable collection during a motion-based selection operation, autoscrolling is used to scroll the collection in the direction of the pointer. If the user presses with BSelect pressed, the selection operation is canceled as described in Canceling a Selection (Autoscrolling and Selection).

Autoscrolling provides a convenient means of extending a selection to elements outside the viewport of a scrollable collection.

Selecting and Deselecting All Elements

4-26
In a collection that uses multiple, range, or discontiguous selection, [/] selects all the elements in the collection, places the anchor at the beginning of the collection, and leaves the location cursor at its previous position (Selecting and Deselecting All Elements).

[/] provides the user with a convenient means of selecting all of the objects in a collection.

4-27
In a collection that is in add mode, [\] deselects all the elements in the collection. In a collection that is in normal mode, [\] deselects all the elements in the collection, except the element with the location cursor if the location cursor is being displayed. In either mode, [\] leaves the location cursor at its current position and moves the anchor to the location cursor (Selecting and Deselecting All Elements).

[\] allows the user to deselect all of the selected objects quickly and uniformly.

Using Mnemonics for Elements

4-28
If your application supports mnemonics associated with selectable elements, typing a mnemonic while the collection has the keyboard focus is equivalent to moving the location cursor to the element and pressing [Select] or (Using Mnemonics for Elements).

Mnemonics within a collection of selectable elements provide an additional selection method.

Selection Actions

4-29
When the keyboard focus policy is explicit, the destination component is the editable component that last had the keyboard focus. When the keyboard focus policy is implicit, the destination component is the editable component that last received mouse button or keyboard input (Destination Component).

The destination component is used to identify the component on which certain operations, primarily data transfer operations, act. There is only one destination component at a time.

4-30
If the keyboard focus is in a component (or a Popup Menu of a component) that supports selections, operations that act on a selection act on the selection in that component (Operation Targets).

A selection operation acts on the component that has focus, if that component supports selections.

4-31
If the keyboard focus is in a component (or a Popup Menu of a component) that supports some operation that does not act on a selection, invoking the operation acts on that component (Operation Targets).

An operation that does not act on a selection acts on the component that has focus, if that component supports the operation.

4-32
Inserting or pasting elements into a selection, except for a primary transfer operation at the bounds of the primary selection, first deletes the selection if pending delete is enabled (Selection Operations).

Pending delete controls the conditions under which the selection is deleted. It is enabled by default.

4-33
In normal mode, inserting or pasting elements disjoint from the selection also deselects the selection, except for primary transfer operations whose source and destination are in the same collection. In add mode, the selection is not deselected (Selection Operations).

In add mode, a transfer operation that is disjoint from the selection does not affect the selection.

4-34
In editable list-like and graphics-like collections, deletes the selected elements (Selection Operations).

provides a consistent means of deleting the selection.

4-35
In editable list-like and graphics-like collections, and [BackSpace] behave as follows:

In text, and [BackSpace] provide a convenient way to delete the entire selection or single characters.

Transfer Models

4-36
If the move, copy, or link operation the user requests is not available, the transfer operation fails (Transfer Models).

Three transfer operations are generally available: copy, move, and link. The user requests one of these operations by pressing the buttons or keys appropriate for the type of transfer. In general, for mouse-based operations, the modifier forces a copy, forces a move, and forces a link. However, any requested transfer operation must fail if that operation is not available.

4-37
If a collection does not have a fixed insertion point, or keep elements ordered in a specific way, the insertion position for transferred data is determined as follows (Transfer Models):

The insertion position is the position in the destination where transferred data is placed. Some mouse-based transfer operations place data at the pointer position if possible. Other operations, including keyboard-based transfer, generally place the data at the location cursor.

Clipboard Transfer

4-38
Keyboard-based clipboard selection actions are available in every editable collection in your application (Clipboard Transfer).

Clipboard selection actions need to be available from the keyboard.

4-39
Your application uses [Cut] or and the Cut entry on the Edit Menu to cut the selected elements from an editable component to the clipboard (Clipboard Transfer).

[Cut] or and the Cut entry on the Edit Menu offer a consistent means of cutting the selection to the clipboard from the keyboard.

4-40
Your application uses [Copy] or and the Copy entry on the Edit Menu to copy the selected elements to the clipboard (Clipboard Transfer).

[Copy] or and the Copy entry on the Edit Menu offer a consistent means of copying the selection to the clipboard from the keyboard.

4-41
Your application uses [Paste] or to paste the contents of the clipboard into an editable component (Clipboard Transfer).

[Paste] or offers a consistent way of pasting the contents of the clipboard from the keyboard.

4-42
If Paste or Paste Link is invoked using a component's Popup Menu, the data is pasted at the insertion position of the component. However, if the Popup Menu is popped up over a selection, the selection is first deleted, even if pending delete is disabled, and the pasted data replaces it, if possible (Clipboard Transfer).

Popping up a Popup Menu over a selection indicates that a Paste or Paste Link operation should replace the selection.

4-43
If Paste or Paste Link is invoked from the Edit Menu or by a keyboard operation, and the insertion position in the target component is not disjoint from a selection, the pasted data replaces the selection contents if pending delete is enabled (Clipboard Transfer).

Pending delete determines whether the selection is deleted when the insertion position is not disjoint from the selection and Paste or Paste Link is invoked from the Edit Menu or by a keyboard operation.

Primary Transfer

4-44
In an editable collection, BTransfer Click, BTransfer Click, [Copy], and copy the primary selection to the insertion position, as defined in Transfer Models. (Note that the insertion position is usually different for mouse and keyboard operations.) (Primary Transfer)

These operations provide a convenient way for the user to force a copy operation.

4-45
In an editable collection, BTransfer Click, [Cut], and move the primary selection to the insertion position, as defined in Transfer Models. (Note that the insertion position is usually different for mouse and keyboard operations.) (Primary Transfer)

These operations provide a convenient way for the user to force a move operation.

4-46
In an editable collection, BTransfer Click places a link to the primary selection at the insertion position, as defined in Transfer Models (Primary Transfer).

BTransfer provides a convenient way for the user to force a link operation.

4-47
A Primary Move moves the primary selection as well as the elements selected; that is, the element moved to the destination becomes selected as the primary selection. Primary Copy and Primary Link do not select transferred data at the destination (Primary Transfer).

This rule provides the expected treatment of the selection in move, copy, and link operation.

Quick Transfer

4-48
All Text components support quick transfer (Quick Transfer).

Quick transfer is used to make a temporary selection and then immediately move, copy, or link that selection to the insertion position of the destination component. In Text quick transfer provides a convenient way to move, copy, or link text without disturbing the primary selection.

4-49
If a component supports quick transfer, BTransfer Motion or BTransfer Motion temporarily selects elements in the specified range and, on release, copies them to the insertion position of the destination component (Quick Transfer).

These operations provide a convenient way to perform a quick copy.

4-50
If a component supports quick transfer, BTransfer Motion temporarily selects elements in the specified range and, on release, moves them to the insertion position of the destination component (Quick Transfer).

This operation provides a convenient way to perform a quick cut.

4-51
If a component supports quick transfer, BTransfer Motion temporarily selects elements in the specified range and, on release, places a link to them at the insertion position of the destination component (Quick Transfer).

This operation provides a convenient way to perform a quick link.

4-52
Quick transfer does not disturb the primary selection or affect the clipboard, except when the destination of the transfer is within or on the boundaries of the primary selection and pending delete is enabled. In this case, quick transfer deletes the contents of the primary selection, leaving an empty primary selection, before pasting the transferred elements (Transfer Models).

Quick transfer is a secondary selection mechanism, so it cannot disrupt the primary selection. When the destination of the transfer is in the primary selection, quick transfer replaces the primary selection with the secondary selection.

4-53
With quick transfer, the range of the temporary selection is determined by using the same model as when BSelect Motion determines the range of a primary selection (Quick Transfer).

This rule provides consistency between primary selection and quick transfer operations.

4-54
If the user drags the pointer out of a scrollable collection while making the temporary selection, autoscrolling is used to scroll the collection in the direction of the pointer. If the user releases BTransfer with the pointer outside of the collection, or if the user presses with BTransfer pressed, the highlighting is removed and a transfer is not performed (Quick Transfer).

Autoscrolling provides a convenient means of extending a temporary selection to elements outside the viewport of a scrollable collection.

Drag Transfer

4-55
In a collection that supports selection, BTransfer Release forces a drag move operation. If a move is not possible, the operation fails (Drag Transfer).

This mechanism offers a convenient way for the user to force a move operation.

4-56
In a collection that supports selection, BTransfer Release forces a drag copy operation. If a copy is not possible, the operation fails (Drag Transfer).

This mechanism offers a convenient way for the user to force a copy operation.

4-57
In a collection that supports selection, BTransfer Release forces a drag link operation. If a link is not possible, the operation fails (Drag Transfer).

This mechanism offers a convenient way for the user to force a link operation.

4-58
When a drag move operation moves a selection within the same component, the selection moves along with the elements selected (Drag Transfer).

This mechanism offers a convenient way to move the selection within a component.

4-59
In text-like collections, initiating a drag within a selected region drags the entire text selection (Drag Transfer and Integrating Selection and Transfer).

To be consistent, drag and drop actions need to operate on the entire selection.

4-60
In list-like and graphics-like collections, initiating a drag on a selected element drags the entire selection (Drag Transfer and Integrating Selection and Transfer).

To be consistent, drag and drop actions need to operate on the entire selection.

4-61
In list-like and graphics-like collections, initiating a drag with BTransfer on an unselected element drags just that element and leaves the selection unaffected (Drag Transfer).

Unselected elements can be dragged without affecting the selection.

4-62
When a drag is initiated in an unselected region and the pointer is over two possible draggable elements, the drag uses the highest draggable element in the stacking order (Drag Transfer).

This guideline ensures the consistency of drag operations.

4-63
When your application starts a drag operation, the pointer is replaced with a drag icon (Drag Icons).

A drag icon provides visual feedback that a drag operation is in progress.

4-64
All drag icons used by your application include a source indicator (Drag Icons).

A source indicator gives a visual representation of the elements being dragged.

4-65
Pressing ends a drag and drop operation by canceling the drag in progress (During a Drag).

provides a consistent way for the user to cancel a drag operation.

4-66
Releasing BTransfer ends a drag and drop operation (Ending a Drag)

Releasing BTransfer offers a consistent means of ending a drag operation.

4-67
When BTransfer is released, the drop operation ordinarily occurs at the location of the hotspot of the drag icon pointer and into the highest drop site in the stacking order. However, if a drop occurs within a selection and pending delete is enabled, the transferred data replaces the contents of the entire selection (Ending a Drag).

This rule provides consistency in the treatment of mouse-based transfer operations.

4-68
After a successful transfer, the data is placed in the drop site, and any transfer icon used by your application is removed Drop Results.

A transfer icon can be used to represent the type of data being transferred during a drop operation. A successful drop operation results in the transfer of data.

4-69
After a failed transfer, the data remains at the drag source and is not placed in the drop site. Any transfer icon used by your application is removed (Drop Results).

A failed drop operation does not result in the transfer of data.