Appendix B. OSF/Motif Level One Certification Checklist
Prev |  | Next

## Appendix B. OSF/Motif Level One Certification Checklist

The OSF/Motif Level One Certification Checklist (Revision 1.2) provides the list of requirements for OSF/Motif application-level certification. In order for your application to be certified compliant, it must behave according to these requirements. You certify your own application by comparing its behavior with that specified in the Checklist. For each Checklist item, check Yes only if your application performs exactly as described for that item. If you have not implemented a specified type of behavior in any manner anywhere in your application, you may mark N/A (not applicable) for the items pertaining to that behavior.

The Checklist describes keys using a model keyboard mechanism. Wherever keyboard input is specified, the keys are indicated by the engravings that they have on the OSF/Motif model keyboard. Mouse buttons are described using a virtual button mechanism to better describe behavior independent from the number of buttons on the mouse. For more information on the model keyboard and virtual button mechanisms, consult the , "Preface" and Section 2.2.1, "Pointing Devices" of this guide.

By default, this Checklist assumes that your application is being designed for a left-to-right language environment in an English-language locale. Some sections of the Checklist may require appropriate changes for other locales.

As you compare the behavior of your application to the requirements in the Checklist, we recommend that you follow along in the OSF/Motif Style Guide (Revision 1.2). For each Checklist item, corresponding section numbers in the guide have been provided for your convenience. Each item in the Checklist is also followed by a brief explanation and/or justification. If you do not understand a particular item, refer to the appropriate section in the guide and check the glossary in the guide for any terms that are unclear.

## Preface

Yes N/A No |  |
___ ___ ___ 1-1: |  | Each of the nonoptional keys described on the OSF/Motif model keyboard is available either as specified or by using other keys or key combinations if the specified key is unavailable (Preface). The model keyboard does not correspond directly to any existing keyboard; rather, it assumes a keyboard with an ideal set of keys. However, to ensure consistency across applications, the nonoptional keys or substitutes for them must always be available.

## Input Models

### The Keyboard Focus Model

Yes N/A No |  |
___ ___ ___ 2-1: |  | Only one window at a time has the keyboard focus. The window that has the focus is highlighted. Within the window that has the keyboard focus, only one component at a time has the focus (Section 2.1, "The Keyboard Focus Model" ). The keyboard focus determines which component on the screen receives keyboard events. This rule prevents confusion about which window and component have the focus.
___ ___ ___ 2-2: |  | When your application uses an explicit focus policy, pressing BSelect does not move focus to a component that is not traversable or does not accept input (Section 2.1.2, "Explicit Focus" ). An explicit focus policy requires the user to explicitly select which window or component receives the keyboard focus. Generally, the user gives the focus to a window or component by pressing BSelect over it. However, this policy must not allow the user to give focus to a component that is not traversable or does not accept input.
___ ___ ___ 2-3: |  | When your application uses an explicit focus policy, the component with the keyboard focus is highlighted by a location cursor (Section 2.1.2, "Explicit Focus" ). The user needs to know the location of the keyboard focus to be able to control an application.

### The Input Device Model

Yes N/A No |  |
___ ___ ___ 2-4: |  | Your application supports methods of interaction for keyboard-only users. All features of your application are available from the keyboard (Section 2.2, "The Input Device Model" ). Some users may not have access to a pointing device. These users need to be able to access the full functionality of the application from the keyboard. Additionally, advanced users will be able to use the keyboard to perform some tasks more quickly than with a pointing device.
___ ___ ___ 2-5: |  | Your application uses the following bindings for mouse buttons (Section 2.2.1, "Pointing Devices" ): BSelect, used for selection, activation, and setting the location cursor, is the leftmost button, except for left-handed users, where it can be the rightmost button. BTransfer, used for moving and copying elements, is the middle mouse button, unless dragging is integrated with selection or the mouse has fewer than three buttons. BMenu, used for popping up Menus, is the rightmost button, except for left-handed users, where is can be the leftmost button, or unless the mouse has fewer than three buttons. If the mouse has one button, BMenu is bound to `<Alt>` BSelect. These bindings ensure a consistent interface for using standard mouse-based operations across applications.
___ ___ ___ 2-6: |  | Your application does not warp the pointer unless you have given the user a means of disabling the behavior (Section 2.2.4, "Warp Pointer Only If Explicitly Enabled" ). The pointer position is intended only as input to applications, not as an output mechanism. An application warps the pointer when it changes the pointer's position. This practice is confusing to users and reduces their sense of control over an application. Warping the pointer can also cause problems for users of absolute location pointing devices.

## Navigation

### Mouse-Based Navigation

Yes N/A No |  |
___ ___ ___ 3-1: |  | When the keyboard focus policy is explicit, pressing BSelect on a component moves focus to it, except for components, such as ScrollBars, that are used to adjust the size and location of other elements (Section 3.1, "Mouse-Based Navigation" ). BSelect provides a convenient mechanism for using the mouse to move focus when the keyboard focus policy is explicit.
___ ___ ___ 3-2: |  | When the pointer is on a Menu, your application uses BSelect Press to activate the Menu in a spring-loaded manner (Section 3.1, "Mouse-Based Navigation" ). A spring-loaded Menu is one that appears when the user presses a mouse button, remains on the screen for as long as the button is pressed, and disappears when the user releases the button. BSelect`,` the first mouse button, provides a means of activating spring-loaded Menus that is consistent across applications.
___ ___ ___ 3-3: |  | When the pointer is in an element with an inactive Popup Menu and the context of the element allows the Popup Menu to be displayed, your application uses BMenu Press to activate the Popup Menu in a spring-loaded manner (Section 3.1, "Mouse-Based Navigation" ). The availability of a Popup Menu can depend on the location of the pointer within an element, the contents of an element, or the selection state of an element. BMenu`,` the third mouse button, provides a consistent means of activating a spring-loaded Popup Menu.
___ ___ ___ 3-4: |  | If the user takes an action to post a Popup Menu, and a Menu can be posted for both an inner element and an outer element that contains the inner element, the Popup Menu for the internal element is posted (Section 3.1, "Mouse-Based Navigation" ). This specification ensures that the Popup Menu for an internal element is always accessible.
___ ___ ___ 3-5: |  | Once a Popup Menu is posted, BMenu behaves just as BSelect does for any Menu system (Section 3.1, "Mouse-Based Navigation" ). The specified operation of BMenu is for manipulating Popup Menus.
___ ___ ___ 3-6: |  | BSelect is also available from within posted Popup Menus and behaves just as in any Menu system (Section 3.1, "Mouse-Based Navigation" ). Once a Popup Menu is posted, the user can select an element from it using the standard selection mechanism, BSelect.
___ ___ ___ 3-7: |  | When a Menu is popped up or pulled down in a posted manner, your application places the location cursor on the Menu's default entry, or on the first entry in the Menu if there is no default entry (Section 3.1, "Mouse-Based Navigation" ). A posted Menu remains visible until it is explicitly unposted. Placing the location cursor on the default entry allows the user to select the default operation easily. When there is no default entry, placing the location cursor on the first entry yields uniform behavior across applications.
___ ___ ___ 3-8: |  | Your application removes a spring-loaded Menu system when the mouse button that activated it is released, except when the button is released on a CascadeButton in the Menu hierarchy (Section 3.1, "Mouse-Based Navigation" ). The concept of a spring-loaded Menu system requires that the Menu disappear when the mouse button is released.
___ ___ ___ 3-9: |  | While a spring-loaded Menu system is popped up or pulled down, moving the pointer within the Menu system moves the location cursor to track the pointer (Section 3.1, "Mouse-Based Navigation" ). Once a spring-loaded Menu system has appeared on the screen, the user needs to be able to maneuver the location cursor through the Menu system using the mouse.
___ ___ ___ 3-10: |  | When a spring-loaded Menu system is popped up or pulled down and the pointer rests on a CascadeButton, the associated Menu is pulled down and becomes traversable. The associated Menu is removed, possibly after a short delay, when the pointer moves to a Menu item outside of the Menu or its CascadeButton (Section 3.1, "Mouse-Based Navigation" ). The user needs to be able to use the mouse to access all of the associated Menus of a Menu system. This feature allows the user to move quickly to any Menu in a Menu system.
___ ___ ___ 3-11: |  | When a spring-loaded Menu system that is part of the MenuBar is pulled down, moving the pointer to any other element on the MenuBar unposts the current Menu system and posts the Pulldown Menu associated with the new element (Section 3.1, "Mouse-Based Navigation" ). This feature of a spring-loaded Menu system allows the user to browse quickly through all of the Menus attached to a MenuBar.
___ ___ ___ 3-12: |  | When a spring-loaded Menu system is popped up or pulled down, and the button that activated the Menu system is released within a component in the Menu system, that component is activated. If the release is on a CascadeButton or an OptionButton, the associated Menu is activated in a posted manner if it was not posted prior to the associated button press (Section 3.1, "Mouse-Based Navigation" ). Releasing the mouse button that activated a spring-loaded Menu provides a means of activating a Menu element that is consistent across applications.
___ ___ ___ 3-13: |  | When the pointer is in an area with a Popup Menu, your application uses BMenu Click to activate the Menu in a posted manner if it was not posted prior to the BMenu Click (Section 3.1, "Mouse-Based Navigation" ). BMenu Click provides a means of posting a Popup Menu that is consistent across applications.
___ ___ ___ 3-14: |  | Once a Pulldown or Option Menu is posted, BSelect Press in the Menu system causes the Menu to behave as a spring-loaded Menu (Section 3.1, "Mouse-Based Navigation" ). This feature of a posted Pulldown or Option Menu allows the user to switch easily between using a posted Menu and a spring-loaded Menu.
___ ___ ___ 3-15: |  | If a button press unposts a Menu and that button press is not also passed to the underlying component, subsequent events up to and including the button release are not passed to the underlying component (Section 3.1, "Mouse-Based Navigation" ). When a button press unposts a Menu, the press can be passed to the underlying component. Whether or not it is passed to the underlying component, the press can have additional effects, such as raising and giving focus to the underlying window. If the press is not passed to the underlying component, events up to and including the release must not be passed to that component.
___ ___ ___ 3-16: |  | Once a Popup Menu is posted, BSelect Press or BMenu Press in the Menu system causes the Menu to behave as a spring-loaded Menu (Section 3.1, "Mouse-Based Navigation" ). This feature of a posted Popup Menu allows the user to switch easily between using a posted Menu and a spring-loaded Menu.

### Keyboard-Based Navigation

Yes N/A No |  |
___ ___ ___ 3-17: |  | In a Text component, the text cursor is shown differently when the component does and does not have the keyboard focus (Section 3.2.1, "Location Cursor" ). In a Text component, the text cursor serves as the location cursor and therefore must indicate whether or not the component has keyboard focus.
___ ___ ___ 3-18: |  | If a Text component indicates that it has lost the keyboard focus by hiding the text cursor and if the component subsequently regains the focus, the cursor reappears at the same position it had when the component lost focus (Section 3.2.1, "Location Cursor" ). To ensure predictability, it is important that the text cursor not change position when a Text component loses and then regains the keyboard focus.
___ ___ ___ 3-19: |  | If a small component, such as a Sash, indicates that it has the keyboard focus by filling, no other meaning is associated with the filled state (Section 3.2.1, "Location Cursor" ). This rule reduces possible confusion about the significance of filling in a small component.
___ ___ ___ 3-20: |  | All components are designed and positioned within your application so that adding and removing each component's location cursor do not change the amount of space that the component takes up on the screen (Section 3.2.1, "Location Cursor" ). For visual consistency, the sizes and positions of components should not change when keyboard focus moves from one component to another.
___ ___ ___ 3-21: |  | `<Ctrl> <Tab>` moves the location cursor to the next field, and `<Ctrl> <Shift> <Tab>` moves the location cursor to the previous field. Unless `<Tab>` and `<Shift> <Tab>` are used for internal navigation within a field, `<Tab>` also moves the location cursor to the next field, and `<Shift> <Tab>` also moves the location cursor to the previous field (Section 3.2.3, "Component Navigation" ). These keys provide a consistent means of navigating among fields in a window.
___ ___ ___ 3-22: |  | `<Tab>` (if not used for internal navigation) and `<Ctrl> <Tab>` move the location cursor forward through fields in a window according to the following rules (Section 3.2.3, "Component Navigation" ): If the next field is a control, `<Tab>` (if not used for internal navigation) and `<Ctrl> <Tab>` move the location cursor to that control. If the next field is a group, `<Tab>` (if not used for internal navigation) and `<Ctrl> <Tab>` move the location cursor to a traversable component within the group. If the next field contains no traversable components, `<Tab>` (if not used for internal navigation) and `<Ctrl> <Tab>` skip the field. These rules ensure the consistent operation of`<Tab>` (if not used for internal navigation) and `<Ctrl> <Tab>` across applications.
___ ___ ___ 3-23: |  | `<Shift> <Tab>` (if not used for internal navigation) and `<Ctrl> <Shift> <Tab>` move the location cursor backward through fields in the order opposite to that of `<Tab>` (if not used for internal navigation) and `<Ctrl> <Tab>` (Section 3.2.3, "Component Navigation" ). These rules result in the uniform operation of`<Shift> <Tab>` (if not used for internal navigation) and `<Ctrl> <Shift> <Tab>` across applications.
___ ___ ___ 3-24: |  | When a window acquires focus, the location cursor is placed on the control that last had focus in the window, providing that all the following conditions are met (Section 3.2.3, "Component Navigation" ): The window uses an explicit keyboard focus policy. The window acquires the focus through keyboard navigation or through a button press other than within the client area of the window. The window had the focus at some time in the past. The control that last had focus in the window is still traversable. This rule ensures that when the user returns to a window after navigating away, the focus returns to the component where the user left it.
___ ___ ___ 3-25: |  | Field navigation wraps between the first and last fields in the window. (Section 3.2.3, "Component Navigation" ). This feature of field navigation provides the user with a convenient way to move through all of the fields in a window.
___ ___ ___ 3-26: |  | When `<Down arrow>` and `<Up arrow>` are used for component navigation within a field, they behave according to the following rules (Section 3.2.3, "Component Navigation" ): In a left-to-right language environment, `<Down arrow>` moves the location cursor through all traversable controls in the field, starting at the upper left and ending at the lower right, then wrapping to the upper left. If the controls are aligned in a matrix-like arrangement, `<Down arrow>` first traverses one column from top to bottom, then traverses the column to its right, and so on. In a right-to-left language environment, `<Down arrow>` moves the location cursor through all traversable controls, starting at the upper right and ending at the lower left. `<Up arrow>` moves the location cursor through all traversable controls in the field in the order opposite to that of `<Down arrow>`. These rules ensure a consistent means of navigating among components using the directional keys.
___ ___ ___ 3-27: |  | When `<Right arrow>` and `<Left arrow>` are used for component navigation within a field, they behave according to the following rules (Section 3.2.3, "Component Navigation" ): In a left-to-right language environment, `<Right arrow>` moves the location cursor through all traversable controls in the field, starting at the upper left and ending at the lower right, then wrapping to the upper left. If the controls are aligned in a matrix-like arrangement, `<Right arrow>` first traverses one row from left to right, then traverses the row below it, and so on. In a right-to-left language environment, `<Right arrow>` moves the location cursor through all traversable controls, starting at the lower left and ending at the upper right. `<Left arrow>` moves the location cursor through all traversable controls in the field in the order opposite to that of `<Right arrow>`. These rules ensure a consistent means of navigating among components using the directional keys.
___ ___ ___ 3-28: |  | If a control uses `<Right arrow>` and `<Left arrow>` for internal navigation, `<Begin>` moves the location cursor to the leftmost edge of the data or the leftmost element in a left-to-right language environment. In a right-to-left language environment, `<Begin>` moves the location cursor to the rightmost edge of the data or the rightmost element (Section 3.2.3, "Component Navigation" ). This rule permits convenient navigation to the left or right edge of the data or the left or right element in a control.
___ ___ ___ 3-29: |  | If a control uses `<Right arrow>` and `<Left arrow>` for internal navigation, `<End>` moves the location cursor to the rightmost edge of the data or the rightmost element in a left-to-right language environment. In a right-to-left language environment, `<End>` moves the location cursor to the leftmost edge of the data or the leftmost element (Section 3.2.3, "Component Navigation" ). This rule permits convenient navigation to the left or right edge of the data or the left or right element in a control.
___ ___ ___ 3-30: |  | If a control uses `<Up arrow>` and `<Down arrow>` for internal navigation, `<Ctrl> <Begin>` moves the location cursor to one of the following (Section 3.2.3, "Component Navigation" ): The first element The topmost edge of the data In a left-to-right language environment, the topmost left edge of the data; in a right-to-left language environment, the topmost right edge of the data This rule permits convenient navigation to the beginning of the data in a control.
___ ___ ___ 3-31: |  | If a control uses `<Up arrow>` and `<Down arrow>` for internal navigation, `<Ctrl> <End>` moves the location cursor to one of the following (Section 3.2.3, "Component Navigation" ): The last element The bottommost edge of the data In a left-to-right language environment, the bottommost right edge of the data; in a right-to-left language environment, the bottommost left edge of the data This rule permits convenient navigation to the end of the data in a control.

### Menu Traversal

Yes N/A No |  |
___ ___ ___ 3-32: |  | If the user traverses to a Menu while the keyboard focus policy is implicit, the focus policy temporarily changes to explicit and reverts to implicit whenever the user traverses out of the Menu system (Section 3.3, "Menu Traversal" ). Menus must always be traversable, even when the keyboard focus policy is generally implicit.
___ ___ ___ 3-33: |  | Your application uses `<F10>` to activate the MenuBar system if it is inactive. The location cursor is placed on the first traversable CascadeButton in the MenuBar. If there are no traversable CascadeButtons, the key does nothing (Section 3.3, "Menu Traversal" ). `<F10>` provides a consistent means of traversing to the MenuBar using the keyboard.
___ ___ ___ 3-34: |  | When the keyboard focus is in an element with an inactive Popup Menu and the context of the element allows the Popup Menu to be displayed, your application uses `<Menu>` to activate the Popup Menu. The location cursor is placed on the default item of the Menu, or on the first traversable item in the Popup Menu if there is no default item (Section 3.3, "Menu Traversal" ). `<Menu>` provides a uniform way of activating a Popup Menu from the keyboard.
___ ___ ___ 3-35: |  | When the keyboard focus is in an OptionButton, your application uses `<Select>` or `<Space>` to post the Option Menu. The location cursor is placed on the previously selected item in the Option Menu; or, if the Option Menu has been pulled down for the first time, the location cursor is placed on the default item in the Menu. If there is an active Option Menu, `<Enter>`,`<Return>`,`<Select>`,or `<Space>` selects the current item in the Option Menu, unposts the Menu system, and returns the location cursor to the OptionButton (Section 3.3, "Menu Traversal" ). These keys provide a means of posting an Option Menu from the keyboard that is consistent across applications.
___ ___ ___ 3-36: |  | Your application uses `<Down arrow>`,`<Left arrow>`,`<Right arrow>`,and `<Up arrow>` to traverse through the items in a Menu system (Section 3.3, "Menu Traversal" ). The `<Down arrow>`,`<Left arrow>`,`<Right arrow>`,and`<Up arrow>` directional keys provide a consistent means of navigating among items in a Menu system.
___ ___ ___ 3-37: |  | When a Menu traversal action traverses to the next or previous component in a Menu or MenuBar, the order of traversal and the wrapping behavior are the same as that of the corresponding component navigation action within a field, as described in Section 3.2.3, "Component Navigation" (Section 3.3, "Menu Traversal" ). This specification provides consistency between Menu traversal and component navigation within a field.
___ ___ ___ 3-38: |  | If your application uses any 2-dimensional Menus, they do not contain any CascadeButtons (Section 3.3, "Menu Traversal" ). CascadeButtons in a 2-dimensional Menu would restrict the user's ability to navigate to all of the elements of the Menu using the keyboard.
___ ___ ___ 3-39: |  | When focus is on a component in a Menu or MenuBar system, `<Down arrow>` behaves in the following way (Section 3.3, "Menu Traversal" ): If the component is in a vertical or 2-dimensional Menu, traverse down to the next traversable component, wrapping within the Menu if necessary. If the component is in a MenuBar, and the component with the keyboard focus is a CascadeButton, post its associated Pulldown Menu and traverse to the default entry in the Menu or, if the Menu has no default, to the first traversable entry in the Menu. This rule results in consistent operation of the directional keys in a Menu or MenuBar system.
___ ___ ___ 3-40: |  | When focus is on a component in a Menu or MenuBar system, `<Up arrow>` behaves in the following way (Section 3.3, "Menu Traversal" ): If the component is in a vertical or 2-dimensional Menu, this action traverses up to the previous traversable component, wrapping within the Menu if necessary, and proceeding in the order opposite to that of `<Down arrow>`. This rule results in consistent operation of the directional keys in a Menu or MenuBar system.
___ ___ ___ 3-41: |  | When focus is on a component in a Menu or MenuBar system, `<Left arrow>` behaves in the following way (Section 3.3, "Menu Traversal" ): If the component is in a MenuBar or 2-dimensional Menu, but not at the left edge, traverse left to the previous traversable component. If the component is at the left edge of a MenuBar, wrap within the MenuBar. If the component is at the left edge of a vertical or 2-dimensional Menu that is the child of a vertical or 2-dimensional Menu, unpost the current Menu and traverse to the parent CascadeButton. If the component is at the left edge of a vertical or 2-dimensional Menu that is the child of a MenuBar, unpost the current Menu and traverse left to the previous traversable entry in the MenuBar. If that entry is a CascadeButton, post its associated Pulldown Menu and traverse to the default entry in the Menu or, if the Menu has no default, to the first traversable entry in the Menu. This rule results in consistent operation of the directional keys in a Menu or MenuBar system.
___ ___ ___ 3-42: |  | When focus is on a component in a Menu or MenuBar system, `<Right arrow>` behaves in the following way (Section 3.3, "Menu Traversal" ): If the component is a CascadeButton in a vertical Menu, post its associated Pulldown Menu and traverse to the default entry in the Menu or, if the Menu has no default, to the first traversable entry in the Menu. If the component is in a MenuBar or 2-dimensional Menu, but not at the right edge, traverse right to the next traversable component. If the component is at the right edge of a MenuBar, wrap within the MenuBar. If the component is not a CascadeButton and is at the right edge of a vertical or 2-dimensional Menu, and if the current Menu has an ancestor CascadeButton (typically in a MenuBar) from which `<Down arrow>` posts its associated Pulldown Menu, unpost the Menu system pulled down from the nearest such ancestor CascadeButton and traverse right from that CascadeButton to the next traversable component. If that component is a CascadeButton, post its associated Pulldown Menu and traverse to the default entry in the Menu or, if the Menu has no default, to the first traversable entry in the Menu. This rule results in consistent operation of the directional keys in a Menu or MenuBar system.
___ ___ ___ 3-43: |  | All Menu traversal actions, with the exception of Menu posting, traverse to TearOffButtons in the same way as for other Menu entries (Section 3.3, "Menu Traversal" ). Traversal of TearOffButtons needs to be consistent with traversal of other Menu items.
___ ___ ___ 3-44: |  | If your application uses `<F10>`,`<Menu>`,or `<Cancel>` to unpost an entire Menu system and an explicit focus policy is in use, the location cursor is moved back to the component that had it before the Menu system was posted (Section 3.3, "Menu Traversal" ). Returning the location cursor to the component that had it previously allows the user to resume a task without disruption.

### Scrollable Component Navigation

Yes N/A No |  |
___ ___ ___ 3-45: |  | Any scrollable components within your application support the appropriate navigation and scrolling operations. Your application uses the page navigation keys `<PageUp>`,`<PageDown>`,`<PageLeft>` or `<Ctrl> <PageUp>`,and `<PageRight>` or `<Ctrl> <PageDown>` for scrolling the visible region by a page increment (Section 3.4, "Scrollable Component Navigation" ). A user needs to be able to view and access the entire contents of a scrollable component.
___ ___ ___ 3-46: |  | When scrolling by a page, your application leaves at least one unit of overlap between the old and new pages (Section 3.4, "Scrollable Component Navigation" ). The overlap between one page and the next yields visual continuity for the user.
___ ___ ___ 3-47: |  | Any keyboard operation that moves the cursor to or in the component, or that inserts, deletes, or modifies items at the cursor location scrolls the component so that the cursor is visible when the operation is complete (Section 3.4, "Scrollable Component Navigation" ). The user needs to be able to see the results of moving the location cursor or operating on the contents of the scrollable component.
___ ___ ___ 3-48: |  | If a mouse-based scrolling action is in progress, `<Cancel>` cancels the scrolling action and returns the scrolling device to its state prior to the start of the scrolling operation (Section 3.4, "Scrollable Component Navigation" ). `<Cancel>` provides a convenient way for the user to cancel a scrolling operation.

## Selection

### Selection Models

Yes N/A No |  |
___ ___ ___ 4-1: |  | Your system supports five selection models: single selection, browse selection, multiple selection, range selection, and discontiguous selection (Section 4.1, "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

Yes N/A No |  |
___ ___ ___ 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 (Section 4.1.1, "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

Yes N/A No |  |
___ ___ ___ 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 (Section 4.1.2, "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

Yes N/A No |  |
___ ___ ___ 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 (Section 4.1.3, "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

Yes N/A No |  |
___ ___ ___ 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 (Section 4.1.4, "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 (Section 4.1.4, "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 (Section 4.1.4, "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 `<Shift>` BSelect, the anchor remains unchanged, and an extended range for the selection is determined, based on one of the following extension models (Section 4.1.4, "Mouse-Based Range Selection" ):

1. 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 `<Shift>` BSelect on the opposite side of the balance point from the anchor, this model works exactly like the Reselect model. When the user presses `<Shift>` BSelect or starts a navigation action modified by `<Shift>` 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 (Section 4.1.4, "Mouse-Based Range Selection" ). `<Shift>` BSelect provides a convenient means of extending the range of a selection.

#### Mouse-Based Discontiguous Selection

Yes N/A No |  |
___ ___ ___ 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, `<Shift>` BSelect works exactly as in the range selection model (Section 4.1.5, "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 `<Ctrl>` BSelect, the anchor and location cursor move to that point. If the current selection is not empty and the user clicks `<Ctrl>` BSelect on an element, the selection state of that element is toggled, and that element becomes the anchor element (Section 4.1.5, "Mouse-Based Discontiguous Selection" ). In discontiguous selection, `<Ctrl>` 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, `<Ctrl>` BSelect Motion toggles the selection state of a range of elements. The range itself is determined exactly as for BSelect Motion. Releasing `<Ctrl>` BSelect toggles the selection state of the elements in the range according to one of two models (Section 4.1.5, "Mouse-Based Discontiguous Selection" ):

1. 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,`<Ctrl>` 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 `<Ctrl>` BSelect toggles a selection, `<Shift>` BSelect or `<Ctrl> <Shift>` BSelect extends the range of toggled elements. The extended range is determined in exactly the same way as when `<Shift>` BSelect is used to extend a range selection. When the user releases `<Ctrl> <Shift>` 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 `<Ctrl>` BSelect or change to the state opposite that of the elements remaining within the extended range (Section 4.1.5, "Mouse-Based Discontiguous Selection" ). `<Shift>` BSelect and`<Ctrl> <Shift>` BSelect provide a convenient means of extending the range of toggled elements.

#### Keyboard Selection

Yes N/A No |  |
___ ___ ___ 4-13: |  | The selection models support keyboard selection modes according to the following rules (Section 4.1.6, "Keyboard Selection" ): Single selection supports only add mode. Browse selection supports only normal mode. Multiple selection supports only add mode. Range selection supports normal mode. If it also supports add mode, normal mode is the default. Discontiguous selection supports both normal mode and add mode. Normal mode is the default. 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, `<Shift> <F8>` 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 (Section 4.1.6, "Keyboard Selection" ). `<Shift> <F8>` provides a convenient means of switching between normal mode and add mode.

Keyboard-Based Single Selection

Yes N/A No |  |
___ ___ ___ 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 `<Space>` 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" in Chapter 4 ). Single selection supports only add mode. Pressing`<Select>` or `<Space>` is similar to clicking BSelect.

Keyboard-Based Browse Selection

Yes N/A No |  |
___ ___ ___ 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 `<Space>` selects the cursored element and deselects any other element ("Keyboard-Based Browse Selection" in Chapter 4 ). Browse selection supports only normal mode. A navigation operation is similar to dragging BSelect.

Keyboard-Based Multiple Selection

Yes N/A No |  |
___ ___ ___ 4-17: |  | In a collection that uses multiple selection, the navigation keys move the location cursor independent from the current selection. `<Select>` or `<Space>` on an unselected element adds the element to the current selection. `<Select>` or `<Space>` on a selected element removes the element from the current selection ("Keyboard-Based Multiple Selection" in Chapter 4 ). Multiple selection supports only add mode. Pressing`<Select>` or `<Space>` is similar to clicking BSelect.

Keyboard-Based Range Selection

Yes N/A No |  |
___ ___ ___ 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" in Chapter 4 ). 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 `<Space>` (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, `<Shift> <Select>` or `<Shift> <Space>` (except in Text) extends the selection from the anchor to the cursor, based on the extension model used by `<Shift>` BSelect (Reselect, Enlarge Only, or Balance Beam) ("Keyboard-Based Range Selection" in Chapter 4 ). In range selection, pressing`<Select>` or `<Space>` is similar to clicking BSelect, and pressing`<Shift> <Select>` or `<Shift> <Space>` extends the range as with `<Shift>` BSelect.
___ ___ ___ 4-20: |  | In a collection that uses range selection and is in normal mode, using `<Shift>` in conjunction with the navigation keys extends the selection, based on the extension model used by `<Shift>` 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 `<Shift>` BSelect ("Keyboard-Based Range Selection" in Chapter 4 ). In range selection, shifted navigation extends the selection in a similar manner to dragging`<Shift>` 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 `<Shift>` BSelect ("Keyboard-Based Range Selection" in Chapter 4 ). 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

Yes N/A No |  |
___ ___ ___ 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" in Chapter 4 ). Normal mode does not permit multiple discontiguous selections.
___ ___ ___ 4-23: |  | In a collection that uses discontiguous selection and is in add mode, `<Select>` or `<Space>` 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. `<Shift> <Select>` or `<Shift> <Space>` and shifted navigation operations extend the selection between the anchor and the location cursor, based on the toggle mechanism used by `<Ctrl>` BSelect (Anchor Toggle or Full Toggle) ("Keyboard-Based Discontiguous Selection" in Chapter 4 ). Add mode permits use of the keyboard to make multiple discontiguous selections.

#### Canceling a Selection

Yes N/A No |  |
___ ___ ___ 4-24: |  | Your application uses `<Cancel>` to cancel or undo any incomplete motion operation used for selection. Once the user presses `<Cancel>` to cancel a motion operation, the application ignores subsequent key and button releases until after all buttons and keys are released. `<Cancel>` while extending or toggling leaves the selection state of all elements as they were prior to the button press (Section 4.1.7, "Canceling a Selection" ). `<Cancel>` allows the user to cancel an incomplete selection operation quickly and consistently.

#### Autoscrolling and Selection

Yes N/A No |  |
___ ___ ___ 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 `<Cancel>` with BSelect pressed, the selection operation is canceled as described in Section 4.1.7, "Canceling a Selection" (Section 4.1.8, "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

Yes N/A No |  |
___ ___ ___ 4-26: |  | In a collection that uses multiple, range, or discontiguous selection, `<Ctrl> </>` 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 (Section 4.1.9, "Selecting and Deselecting All Elements" ). `<Ctrl> </>` 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, `<Ctrl> <\>` deselects all the elements in the collection. In a collection that is in normal mode, `<Ctrl> <\>` deselects all the elements in the collection, except the element with the location cursor if the location cursor is being displayed. In either mode, `<Ctrl> <\>` leaves the location cursor at its current position and moves the anchor to the location cursor (Section 4.1.9, "Selecting and Deselecting All Elements" ). `<Ctrl> <\>` allows the user to deselect all of the selected objects quickly and uniformly.

#### Using Mnemonics for Elements

Yes N/A No |  |
___ ___ ___ 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 `<Space>` (Section 4.1.10, "Using Mnemonics for Elements" ). Mnemonics within a collection of selectable elements provide an additional selection method.

### Selection Actions

Yes N/A No |  |
___ ___ ___ 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 (Section 4.2.1, "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 (Section 4.2.2, "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 (Section 4.2.2, "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 (Section 4.2.3, "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 (Section 4.2.3, "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, `<Delete>` deletes the selected elements (Section 4.2.3, "Selection Operations" ). `<Delete>` provides a consistent means of deleting the selection.
___ ___ ___ 4-35: |  | In editable text-like collections, `<Delete>` and `<BackSpace>` behave as follows: If the selection is not empty and the control is in normal mode, the selection is deleted. If the selection is not empty, the control is in add mode, and the cursor is not disjoint from the selection, the selection is deleted. If the selection is not empty and the control is in add mode, but the cursor is disjoint from the selection, `<Delete>` deletes one character forward, and `<BackSpace>` deletes one character backward. If the selection is empty, `<Delete>` deletes one character forward, and `<BackSpace>` deletes one character backward. In text,`<Delete>` and `<BackSpace>` provide a convenient way to delete the entire selection or single characters.

### Transfer Models

Yes N/A No |  |
___ ___ ___ 4-36: |  | If the move, copy, or link operation the user requests is not available, the transfer operation fails (Section 4.3, "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`<Ctrl>` forces a copy, `<Shift>` forces a move, and `<Ctrl> <Shift>` 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 (Section 4.3, "Transfer Models" ): For BTransfer-based primary and drag transfer operations, the insertion position is the position at which the user releases BTransfer. In a text-like collection, the insertion position for other transfer operations is the location cursor, and the data is pasted before it. In a list-like collection, the insertion position for other transfer operations is the element with the location cursor, and the data is pasted before it. 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

Yes N/A No |  |
___ ___ ___ 4-38: |  | Keyboard-based clipboard selection actions are available in every editable collection in your application (Section 4.3.1, "Clipboard Transfer" ). Clipboard selection actions need to be available from the keyboard.
___ ___ ___ 4-39: |  | Your application uses `<Cut>` or `<Shift> <Delete>` and the Cut entry on the Edit Menu to cut the selected elements from an editable component to the clipboard (Section 4.3.1, "Clipboard Transfer" ). `<Cut>` or`<Shift> <Delete>` 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 `<Ctrl> <Insert>` and the Copy entry on the Edit Menu to copy the selected elements to the clipboard (Section 4.3.1, "Clipboard Transfer" ). `<Copy>` or`<Ctrl> <Insert>` 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 `<Shift> <Insert>` to paste the contents of the clipboard into an editable component (Section 4.3.1, "Clipboard Transfer" ). `<Paste>` or`<Shift> <Insert>` 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 (Section 4.3.1, "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 (Section 4.3.1, "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

Yes N/A No |  |
___ ___ ___ 4-44: |  | In an editable collection, BTransfer Click, `<Ctrl>` BTransfer Click, `<Alt> <Copy>`,and `<Alt> <Ctrl> <Insert>` copy the primary selection to the insertion position, as defined in Section 4.3, "Transfer Models." (Note that the insertion position is usually different for mouse and keyboard operations.) (Section 4.3.2, "Primary Transfer" ). These operations provide a convenient way for the user to force a copy operation.
___ ___ ___ 4-45: |  | In an editable collection, `<Shift>` BTransfer Click, `<Alt> <Cut>`,and `<Alt> <Shift> <Delete>` move the primary selection to the insertion position, as defined in Section 4.3, "Transfer Models." (Note that the insertion position is usually different for mouse and keyboard operations.) (Section 4.3.2, "Primary Transfer" ) These operations provide a convenient way for the user to force a move operation.
___ ___ ___ 4-46: |  | In an editable collection, `<Ctrl> <Shift>` BTransfer Click places a link to the primary selection at the insertion position, as defined in Section 4.3, "Transfer Models." (Section 4.3.2, "Primary Transfer" ). `<Ctrl> <Shift>` 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 (Section 4.3.2, "Primary Transfer" ). This rule provides the expected treatment of the selection in move, copy, and link operation.

#### Quick Transfer

Yes N/A No |  |
___ ___ ___ 4-48: |  | All Text components support quick transfer (Section 4.3.3, "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, `<Alt>` BTransfer Motion or `<Alt> <Ctrl>` BTransfer Motion temporarily selects elements in the specified range and, on release, copies them to the insertion position of the destination component (Section 4.3.3, "Quick Transfer" ). These operations provide a convenient way to perform a quick copy.
___ ___ ___ 4-50: |  | If a component supports quick transfer, `<Alt> <Shift>` BTransfer Motion temporarily selects elements in the specified range and, on release, moves them to the insertion position of the destination component (Section 4.3.3, "Quick Transfer" ). This operation provides a convenient way to perform a quick cut.
___ ___ ___ 4-51: |  | If a component supports quick transfer, `<Alt> <Ctrl> <Shift>` 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 (Section 4.3.3, "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 (Section 4.3.3, "Quick Transfer" ). 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 (Section 4.3.3, "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 `<Cancel>` with BTransfer pressed, the highlighting is removed and a transfer is not performed (Section 4.3.3, "Quick Transfer" ). Autoscrolling provides a convenient means of extending a temporary selection to elements outside the viewport of a scrollable collection.

#### Drag Transfer

Yes N/A No |  |
___ ___ ___ 4-55: |  | In a collection that supports selection, `<Shift>` BTransfer Release forces a drag move operation. If a move is not possible, the operation fails (Section 4.3.4, "Drag Transfer" ). This mechanism offers a convenient way for the user to force a move operation.
___ ___ ___ 4-56: |  | In a collection that supports selection, `<Ctrl>` BTransfer Release forces a drag copy operation. If a copy is not possible, the operation fails (Section 4.3.4, "Drag Transfer" ). This mechanism offers a convenient way for the user to force a copy operation.
___ ___ ___ 4-57: |  | In a collection that supports selection, `<Ctrl> <Shift>` BTransfer Release forces a drag link operation. If a link is not possible, the operation fails (Section 4.3.4, "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 (Section 4.3.4, "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 (Section 4.3.4, "Drag Transfer" and Section 4.3.5, "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 (Section 4.3.4, "Drag Transfer" and Section 4.3.5, "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 (Section 4.3.4, "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 (Section 4.3.4, "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" in Chapter 4 ). 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" in Chapter 4 ). A source indicator gives a visual representation of the elements being dragged.
___ ___ ___ 4-65: |  | Pressing `<Cancel>` ends a drag and drop operation by canceling the drag in progress ("During a Drag" in Chapter 4 ). `<Cancel>` 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" in Chapter 4 ). 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" in Chapter 4 ). 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" in Chapter 4 ). 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" in Chapter 4 ). A failed drop operation does not result in the transfer of data.

## Component Activation

### Basic Activation

Yes N/A No |  |
___ ___ ___ 5-1: |  | Your application uses BSelect to activate a button (Section 5.1, "Basic Activation" ). BSelect`,` the first mouse button, provides a consistent means of activating a button using the mouse.
___ ___ ___ 5-2: |  | When a button has the focus, your application uses `<Select>` or `<Space>` to activate the button (Section 5.1, "Basic Activation" ). `<Select>` and`<Space>` provide a uniform way of selecting a button. Selecting a button is equivalent to activating the button.
___ ___ ___ 5-3: |  | When an activatable Menu entry has the focus, your application uses `<Select>`,`<Space>`,`<Enter>`,or `<Return>` to activate the entry (Section 5.1, "Basic Activation" ). `<Select>`,`<Space>`,`<Enter>`, and`<Return>` offer a consistent means of activating a Menu entry using the keyboard.
___ ___ ___ 5-4: |  | When BSelect is pressed over a button, the appearance of the button changes to indicate that releasing BSelect will activate the button. If while BSelect is pressed the pointer is moved outside of the button, the visual state is restored. If while BSelect is still pressed the pointer is moved back inside of the button, the visual state is again changed to indicate the pending activation. If BSelect is pressed and released within a button, the button is activated, regardless of whether the pointer has moved out of the button while it was pressed (Section 5.1, "Basic Activation" ). The visual state of a button offers a cue to the user about whether or not the button will be activated when the mouse button is released.
___ ___ ___ 5-5: |  | If a selectable element of a collection is activatable, BSelect Click, `<Select>`,and `<Space>` (except in Text) select it. BSelect Click 2 selects and activates it (Section 5.1, "Basic Activation" ). This rule provides for consistent integration of activation and selection in a collection where elements can be both selected and activated.

### Accelerators

Yes N/A No |  |
___ ___ ___ 5-6: |  | If your application uses accelerators, the component with the accelerator displays the accelerator key or key combination following the Label of the component (Section 5.2, "Accelerators" ). An accelerator is a key or key combination that invokes the action of some component regardless of the position of the location cursor when the accelerator is pressed. So that the user knows that there is an accelerator associated with a component, the accelerator needs to be displayed.
___ ___ ___ 5-7: |  | If a button with an accelerator is within a primary or secondary window, or within a Pulldown Menu system from its MenuBar, it is activatable whenever the input focus is in the window or the MenuBar system. If a button with an accelerator is within a Popup Menu system, it is activatable whenever the focus is in the Popup Menu system or the component with the Popup Menu (Section 5.2, "Accelerators" ). An accelerator must be activatable from the window or component associated with the accelerator.

### Mnemonics

Yes N/A No |  |
___ ___ ___ 5-8: |  | If your application uses mnemonics, the Label for the component with the mnemonic contains the character that is its mnemonic. If the Label does not naturally contain the character, the mnemonic is placed in parentheses following the Label (Section 5.3, "Mnemonics" ). A mnemonic is a single character that can be associated with any component that contains a text Label. Mnemonics provide a fast way of selecting a component from the keyboard. So that the user knows that there is a mnemonic associated with a selection, the mnemonic is underlined in the Label of the selection by the toolkit. In order for a mnemonic to be underlined, the Label for a selection needs to contain the mnemonic character. Putting the mnemonic in parentheses following the Label provides visual consistency.
___ ___ ___ 5-9: |  | All mnemonics are case insensitive for activation (Section 5.3, "Mnemonics" ). The user must be able to activate a mnemonic by pressing either the lowercase or the uppercase variant of the mnemonic key.
___ ___ ___ 5-10: |  | When the location cursor is within a Menu or a MenuBar, pressing the mnemonic key of a component within that Menu or MenuBar moves the location cursor to the component and activates it. If a mnemonic is used for an OptionButton or for a CascadeButton in a MenuBar, pressing `<Alt>` and the mnemonic anywhere in the window or its Menus moves the cursor to the component with that mnemonic and activates it (Section 5.3, "Mnemonics" ). A mnemonic is generally activatable when the location cursor is within the component that contains the mnemonic. Pressing `<Alt>` and the mnemonic provides a way to activate a visible mnemonic when the location cursor is within the window that contains the mnemonic.

### TearOff Activation

Yes N/A No |  |
___ ___ ___ 5-11: |  | Activating a TearOffButton tears off the Menu that contains the button (Section 5.4, "TearOff Activation" ). A TearOffButton is like a PushButton with the special interaction of tearing off the Menu from its CascadeButton. TearOffButtons use the same basic activation as other buttons.
___ ___ ___ 5-12: |  | When a Menu with a TearOffButton is posted, pressing BTransfer in the TearOffButton starts a TearOff action. As long as BTransfer is held, a representation of the Menu follows the movement of the pointer. Releasing BTransfer ends the TearOff action by unposting the Menu system, creating a new window at the current pointer location that contains the contents of the Menu, and giving focus to the new window in explicit pointer mode (Section 5.4, "TearOff Activation" ). BTransfer, the second mouse button, provides a consistent means of activating a TearOffButton.

### Help Activation

Yes N/A No |  |
___ ___ ___ 5-13: |  | Your application uses `<Help>` on a component to invoke any context-sensitive help for the component or its nearest ancestor with context-sensitive help available (Section 5.5, "Help Activation" ). `<Help>` offers the user a consistent mechanism for invoking context-sensitive help.

### Default Activation

Yes N/A No |  |
___ ___ ___ 5-14: |  | If your application uses default PushButtons in a window, the current default PushButton is highlighted. When the focus is on a PushButton, its action is the default action, and the PushButton shows default highlighting. If the default action in a window varies, some PushButton always has default highlighting, except when there is no current default action (Section 5.6, "Default Activation" ). Placing emphasis on the default PushButton in a DialogBox provides the user with a visual cue about the expected reply to the dialog.
___ ___ ___ 5-15: |  | When focus is in a window with a default action, `<Enter>` and `<Ctrl> <Return>` invoke the default action. If focus is in a component other than multiline Text, `<Return>` also invokes the default action. These actions have no other effect on the component with the focus, unless the default action has some effect on that component (Section 5.6, "Default Activation" ). These rules ensure that the means of invoking a default action are consistent across applications.
___ ___ ___ 5-16: |  | Except in the middle of a button motion operation, `<Cancel>` anywhere in a DialogBox is equivalent to activating the Cancel PushButton in the DialogBox (Section 5.6, "Default Activation" ). `<Cancel>` provides a uniform means of canceling a DialogBox from the keyboard.

### Expert Activation

Yes N/A No |  |
___ ___ ___ 5-17 |  | If your application supports expert activation, expert actions exist only as shortcuts to application features that are available through another mechanism (Section 5.7, "Expert Activation" ). Expert activation, using mouse double-clicking on buttons, provides a convenient way for experienced users to perform certain tasks quickly. However, new users and keyboard-only users need to be able to perform the same tasks.
___ ___ ___ 5-18: |  | When the focus is on a button used for expert activation, no default action is available, unless the default and expert actions are the same (Section 5.7, "Expert Activation" ). This rule minimizes possible confusion between default and expert activation.
___ ___ ___ 5-19: |  | If a component with an expert action is selectable, activating the expert action first selects the component and then performs the expert action (Section 5.7, "Expert Activation" ). A user needs to be able to select a component, even if it has an expert action associated with it.

### Previewing and Autorepeat

Yes N/A No |  |
___ ___ ___ 5-20: |  | If your application supports activation preview using BSelect, the previewing information is removed when the user releases BSelect (Section 5.8, "Previewing and Autorepeat" ). Activation preview presents the user with additional information that describes the effect of activating a button. This information cannot interfere with the normal operation of the application.

### Cancel Activation

Yes N/A No |  |
___ ___ ___ 5-21: |  | Pressing `<Cancel>` stops the current interaction in the following contexts (Section 5.9, "Cancel Activation" ): During a mouse-based selection or drag operation, it cancels the operation. During a mouse-based scrolling operation, it cancels the scrolling action and returns the system to its state prior to the start of the scrolling operation. Anywhere in a DialogBox that has a Cancel PushButton, it is equivalent to activating that PushButton, except during a mouse-based selection or drag operation. In a Pulldown Menu, it either dismisses the Menu and moves the location cursor to the CascadeButton used to pull it down, or unposts the entire Menu system. In a Popup Menu, Option Menu, TearOff Menu, or MenuBar, it unposts the Menu system. When the focus is in a torn off Menu window, it closes the torn off Menu window. These guidelines for`<Cancel>` ensure the consistent operation of the key across applications.

## Application Design Principles

### Layout

#### MainWindow

Yes N/A No |  |
___ ___ ___ 6-1: |  | Your application has at least one MainWindow ("MainWindow" in Chapter 6 ). A MainWindow contains a client area and, optionally, a MenuBar, a command area, a message area, and ScrollBars. The client area contains the framework of the application. The use of a MainWindow ensures interapplication consistency.
___ ___ ___ 6-2: |  | If your application has multiple MainWindows that serve the same primary function, each window closes and iconifies separately ("MainWindow" in Chapter 6 ). For example, a text editor might allow the user to edit multiple documents, each in its own MainWindow. Each window is then treated as a separate application and can be closed or iconified when it is not being used.
___ ___ ___ 6-3: |  | If your application has multiple MainWindows that serve different primary functions, each window iconifies separately ("MainWindow" in Chapter 6 ). For example, a debugger might provide separate MainWindows for editing source code, examining data values, and viewing results. Each window can be iconified when it is not being used, but it is up to the application to decide whether each window closes separately or whether closing one window closes the entire application.

#### MenuBar

| Note: These requirements apply only in a left-to-right language environment in an English-language locale. You need to make the appropriate changes for other locales.

Yes N/A No |  |
___ ___ ___ 6-4: |  | If your application has a MenuBar, it is a horizontal bar at the top edge of the application, just below the title area of the window frame, if present ("MenuBar" in Chapter 6 ). A MenuBar organizes the most common features of an application. It contains a list of Menu topics in CascadeButtons; each button is associated with a distinct Pulldown Menu containing commands that are grouped by common functionality. The use of a MenuBar yields consistency across applications.
___ ___ ___ 6-5: |  | The MenuBar for your application contains only CascadeButtons ("MenuBar" in Chapter 6 ). When other buttons are included as topics in a MenuBar, they inhibit Menu browsing.
___ ___ ___ 6-6: |  | If any of the common Menus are present in the MenuBar, they are arranged in the following order with respect to each other, ranging from left to right across the MenuBar ("MenuBar" in Chapter 6 ):
     File Menu
       Selected Menu
       Edit Menu
       View Menu
       Options Menu
       Help Menu
If a File Menu is present, it is the first Menu and is placed at the far left of the MenuBar. If a Help Menu is present, it is the last Menu and is placed at the far right of the MenuBar. The ordering of common Menus in the MenuBar ensures consistency among applications. You can omit any of these Menus if they are not relevant to the application. You can also intersperse other, application-specific, Menus among these Menus.

File Menu Contents

| Note: These requirements apply only in a left-to-right language environment in an English-language locale. You need to make the appropriate changes for other locales.

Yes N/A No |  |
___ ___ ___ 6-7: |  | If your application uses a File Menu, it contains the following choices, with the specified functionality, when the actions are actually supported by your application ("File Menu Contents").

1. New |  | Creates a new file. If the current client area will be used to display the new file, your application clears the existing data from the client area. If changes made to the current file will be lost, your application displays a DialogBox, asking the user about saving changes. Has the mnemonic N.
   Open... |  | Opens an existing file by prompting the user for a filename with a DialogBox. If changes made to the current file will be lost, your application displays a DialogBox asking the user about saving changes. Has the mnemonic O.
   Save |  | Saves the currently opened file without removing the existing contents of the client area. If the file has no name, your application displays a DialogBox, prompting the user to enter a filename. Has the mnemonic S.
   Save As... |  | Saves the currently opened file under a new name by prompting the user for a filename with a DialogBox. If the user tries to save the file using an existing name, your application displays a DialogBox that warns the user about a possible loss of data. Does not remove the existing contents of the client area. Has the mnemonic A.
   Print |  | Schedules a file for printing. If your application needs specific information in order to print, it displays a DialogBox, requesting the information from the user. In this case, the Menu entry is followed by an ellipsis (Print...). Has the mnemonic P.
   Close |  | Closes the current primary window and its associated secondary windows. If your application uses only a single primary window or multiple dependent primary windows, this action is not supplied. Has the mnemonic C.
   Exit |  | Ends the current application and all windows associated with it. If changes made to the current file will be lost, your application displays a DialogBox, asking the user about saving changes. Has the mnemonic X. The use of a File Menu with these common file operations yields consistency across applications.

Edit Menu Contents

| Note: These requirements apply only in a left-to-right language environment in an English-language locale. You need to make the appropriate changes for other locales.

Yes N/A No |  |
___ ___ ___ 6-8: |  | If your application uses an Edit Menu, it contains the following choices, with the specified functionality, when the actions are actually supported by your application ("Edit Menu Contents"):

1. Undo |  | Reverses the most recently executed action. Has the mnemonic U.
   Cut |  | Removes the selected portion of data from the client area and puts it on the clipboard. Has the mnemonic T.
   Copy |  | Copies the selected portion of data from the client area and puts it on the clipboard. Has the mnemonic C.
   Copy Link |  | Copies a link of the selected portion of data from the client area and puts it on the clipboard. Has the mnemonic K.
   Paste |  | Pastes the contents of the clipboard into the client area. Has the mnemonic P.
   Paste Link |  | Pastes a link of the data represented by the contents of the clipboard into the client area. Has the mnemonic L.
   Clear |  | Removes a selected portion of data from the client area without copying it to the clipboard and does not compress the remaining data. Has the mnemonic E.
   Delete |  | Removes a selected portion of data from the client area without copying it to the clipboard. Has the mnemonic D.
   Select All |  | Sets the primary selection to be all the elements in a component of the client area.
   Deselect All |  | Removes from the primary selection all the elements in a component of the client area.
   Select Pasted |  | Sets the primary selection to the last element or elements pasted into a component of the client area.
   Reselect |  | Sets the primary selection to the last selected element or elements in a component of the client area. This action is available only in components that do not support persistent selections and only when the current selection is empty.
   Promote |  | Promotes to the primary selection the current selection of a component of the client area. This action is available only for components that support persistent selections. The use of an Edit Menu with these common editing operations yields consistency across applications.

___ ___ ___ 6-9: |  | If your application uses accelerators for Undo, Cut, Copy, and Paste in an Edit Menu, it uses either one or both of the models presented in the following two tables ("Edit Menu Contents").

Table B-1. Edit Menu Accelerators, Model 1

Edit Menu Item | Accelerator
Undo | `<Alt>` `<BackSpace>`
Cut | `<Shift>` `<Delete>`
Copy | `<Ctrl>` `<Insert>`
Paste | `<Shift>` `<Insert>`

Table B-2. Edit Menu Accelerators, Model 2

Edit Menu Item | Accelerator
Undo | `<Ctrl>` `<Z>`
Cut | `<Ctrl>` `<X>`
Copy | `<Ctrl>` `<C>`
Paste | `<Ctrl>` `<V>`

These models provide consistent sets of accelerators for common editing operations in an Edit Menu.

Help Menu Contents

| Note: These requirements apply only in a left-to-right language environment in an English-language locale. You need to make the appropriate changes for other locales.

Yes N/A No |  |
___ ___ ___ 6-10: |  | If your application uses a Help Menu, it contains either of the following two sets of choices, with the specified functionality, when the actions are actually supported by your application ("Help Menu Contents"):

1. On Context |  | Initiates context-sensitive help by changing the shape of the pointer to the question pointer, described in Section 2.2.2, "Pointer Shapes." When the user moves the pointer to a component and presses BSelect, any available context-sensitive help for the component is presented, and the pointer returns to its original shape. Has the mnemonic C. If this action uses an accelerator, it is `<Shift> <Help>`.
   On Help |  | Provides information on how to use your application's help facility. Has the mnemonic H.
   On Window |  | Provides general information about the window from which help was requested. Has the mnemonic W.
   On Keys |  | Provides information about your application's use of function keys, mnemonics, and keyboard accelerators. Has the mnemonic K.
   Index |  | Provides an index for all help information in your application. Has the mnemonic I.
   Tutorial |  | Provides access to your application's tutorial. Has the mnemonic T.
   On Version |  | Provides at least the name and version of your application. Has the mnemonic V. If your application uses a Help Menu, and it does not use the previous set of choices, the Help Menu contains the following choices, with the specified functionality, when the actions are actually supported by your application ("Help Menu Contents"):
   Context-Sensitive Help |  | Initiates context-sensitive help by changing the shape of the pointer to the question pointer, described in Section 2.2.2, "Pointer Shapes." When the user moves the pointer to a component and presses BSelect, any available context-sensitive help for the component is presented and the pointer returns to its original shape. Has the mnemonic C. If this action uses an accelerator, it is `<Shift> <Help>`.
   Overview |  | Provides general information about the application window from which help was requested. Has the mnemonic O.
   Index |  | Provides an index for all help information in your application. Has the mnemonic I.
   Keyboard |  | Provides information about your application's use of function keys, mnemonics, and keyboard accelerators. Has the mnemonic K.
   Tutorial |  | Provides access to your application's tutorial. Has the mnemonic T.
   Using Help |  | Provides information on how to use your application's help facility. Has the mnemonic H.
   Product Information |  | Provides at least the name and version of your application. Has the mnemonic P. The use of a Help Menu with these common help operations yields consistency across applications.

#### Popup Menus

| Note: These requirements apply only in a left-to-right language environment in an English-language locale. You need to make the appropriate changes for other locales.

Yes N/A No |  |
___ ___ ___ 6-11: |  | If your application uses any of the common Popup Menu actions, the actions function according to the following specifications ("Popup Menus" in Chapter 6 ):

1. Properties |  | Displays a properties DialogBox that the user can use to set the properties of the component.
   Undo |  | Reverses the most recently executed action.
   Primary Move |  | Moves the contents of the primary selection to the component. This action is available only in editable components.
   Primary Copy |  | Copies the contents of the primary selection to the component. This action is available only in editable components.
   Primary Link |  | Places a link to the primary selection in the component. This action is available only in editable components.
   Cut |  | Cuts elements to the clipboard. If the Menu is popped up in a selection, cuts the entire selection to the clipboard.
   Copy |  | Copies elements to the clipboard. If the Menu is popped up in a selection, copies the entire selection to the clipboard.
   Copy Link |  | Copies a link of elements to the clipboard. If the Menu is popped up in a selection, copies a link to the entire selection to the clipboard.
   Paste |  | Pastes the contents of the clipboard to the component. This action is available only in editable components.
   Paste Link |  | Pastes a link of the contents of the clipboard to the component. This action is available only in editable components.
   Clear |  | Removes a selected portion of data from the client area without copying it to the clipboard. If the Menu is popped up in a selection, deletes the selection.
   Delete |  | Removes a selected portion of data from the client area without copying it to the clipboard. If the Menu is popped up in a selection, deletes the selection.
   Select All |  | Sets the primary selection to be all of the elements in the collection with the Popup Menu.
   Deselect All |  | Deselects the current selection in the collection with the Popup Menu.
   Select Pasted |  | Sets the primary selection to be the last element or elements pasted into the collection with the Popup Menu.
   Reselect |  | Sets the primary selection to be the last selected element or elements in the component with the Popup Menu. This action is available only in components that do not support persistent selections and only when the current selection is empty.
   Promote |  | Promotes the current selection to the primary selection. It is available only in components that support persistent selections. The use of Popup Menus with these common actions yields consistency across applications.

___ ___ ___ 6-12: |  | When a Popup Menu is popped up in the context of a selection, any action that acts on elements acts on the entire selection ("Popup Menus" in Chapter 6 ). In the context of a selection, Popup Menu actions affect the entire selection.

#### DialogBoxes

Yes N/A No |  |
___ ___ ___ 6-13: |  | InformationDialogs do not interrupt the user's interaction with your application ("MessageDialog"). An InformationDialog conveys information to the user that does not require immediate attention, so it does not need to be modal.

#### Menu Design

Yes N/A No |  |
___ ___ ___ 6-14: |  | If your application uses a TearOffButton in a Menu, the TearOffButton is the first element in the Menu (Section 6.2.3, "Menu Design" ). When a TearOffButton is activated, the Menu changes into a DialogBox. The TearOffButton needs to be the first item in the Menu so that the entire contents of the Menu are torn off.
___ ___ ___ 6-15: |  | All Menus are wide enough to accommodate their widest elements (Section 6.2.3, "Menu Design" ). The ability to see the full Label of each Menu element allows the user to browse through a Menu.

#### DialogBox Design

| Note: These requirements apply only in a left-to-right language environment in an English-language locale. You need to make the appropriate changes for other locales.

Yes N/A No |  |
___ ___ ___ 6-16: |  | If your application uses common DialogBox actions, the actions have the following specified functionality ("Common DialogBox Actions" in Chapter 6 ):

1. Yes |  | Indicates an affirmative response to a question posed in the DialogBox.
   No |  | Indicates a negative response to a question posed in the DialogBox.
   OK |  | Applies any changes made to components in the DialogBox and dismisses the DialogBox.
   Apply |  | Applies any changes made to components in the DialogBox.
   Retry |  | Causes the task in progress to be attempted again.
   Stop |  | Ends the task in progress at the next possible breaking point.
   Pause |  | Causes the task in progress to pause.
   Resume |  | Causes a task that has paused to resume.
   Reset |  | Cancels any user changes that have not been applied to your application. Resets the status of the DialogBox to the state since the last time the DialogBox action was applied or to the initial state of the DialogBox.
   Cancel |  | Closes the DialogBox without performing any DialogBox actions not yet applied to your application. Pressing `<Cancel>` anywhere in the DialogBox, except during a cancelable drag operation, also performs the action of this button.
   Help |  | Provides any help for the DialogBox. The use of common actions provides a consistent way for the user to respond quickly to DialogBoxes and get back to primary application tasks.

#### Designing Drag and Drop

Yes N/A No |  |
___ ___ ___ 6-17: |  | If your application provides any drag and drop help DialogBoxes, they contain a Cancel button for canceling the drag and drop operation in progress ("Providing Help on Drop Sites" in Chapter 6 ). The Cancel button in the help DialogBox provides a convenient way for the user to cancel a drag and drop operation.

### Interaction

Yes N/A No |  |
___ ___ ___ 6-18: |  | A WarningDialog allows the user to cancel the destructive action about which it is providing a warning ("Providing Warnings" in Chapter 6 ). The user needs to have a way to cancel an operation that can cause destructive results.

## Controls, Groups, and Models

### CheckButton

Yes N/A No |  |
___ ___ ___ 7-1: |  | If your application uses CheckButtons, each button graphically indicates its state (Chapter 9, "Controls, Groups, and Models Reference Pages" ). A CheckButton is used to select settings that are not mutually exclusive. The user needs to know whether the button is set or not.
___ ___ ___ 7-2: |  | When the user presses BSelect in a CheckButton, the CheckButton is armed. If the CheckButton was previously unset, it is shown in the set state. If the CheckButton was previously set, it is shown in the unset state (Chapter 9, "Controls, Groups, and Models Reference Pages" ). BSelect Press arms a CheckButton and shows the result of activating it by releasing BSelect.
___ ___ ___ 7-3: |  | When the user releases BSelect in the same CheckButton that the press occurred in: If the CheckButton was previously unset, it is set. If the CheckButton was previously set, it is unset. In all cases the CheckButton is disarmed, and, if the CheckButton is in a Menu, the Menu is unposted (Chapter 9, "Controls, Groups, and Models Reference Pages" ). BSelect Release activates a CheckButton.
___ ___ ___ 7-4: |  | When the user presses `<Enter>` or `<Return>` in a CheckButton, if the CheckButton is in a window with a default action, the default action is activated. If the CheckButton is in a Menu: If the CheckButton was previously unset, it is set. If the CheckButton was previously set, it is unset. In both cases, the CheckButton is disarmed, and the Menu is unposted (Chapter 9, "Controls, Groups, and Models Reference Pages" ). `<Enter>` and`<Return>` perform the default action of a window or activate a CheckButton in a Menu.
___ ___ ___ 7-5: |  | When the user presses `<Select>` or `<Space>` in a CheckButton, if the CheckButton was previously unset, it is set. If the CheckButton was previously set, it is unset. In both cases, the CheckButton is disarmed, and, if the CheckButton is in a Menu, the Menu is unposted (Chapter 9, "Controls, Groups, and Models Reference Pages" ). `<Select>` and`<Space>` activate a CheckButton.

### CommandBox

Yes N/A No |  |
___ ___ ___ 7-6: |  | If your application uses a CommandBox, it is composed of a Text component with a command line prompt for text input and a List component for a command history area. The List uses either the single selection or browse selection model (Chapter 9, "Controls, Groups, and Models Reference Pages" ). This specification ensures the consistent appearance and operation of a CommandBox across applications.
___ ___ ___ 7-7: |  | When an element of a CommandBox List is selected, its contents are placed in the Text area (Chapter 9, "Controls, Groups, and Models Reference Pages" ). This specification provides a convenient way of selecting a previously entered command.
___ ___ ___ 7-8: |  | The List navigation actions `<Up arrow>`,`<Down arrow>`,`<Ctrl> <Begin>`,and `<Ctrl> <End>` are available from the Text component for moving the cursored element within the List and thus changing the contents of the Text (Chapter 9, "Controls, Groups, and Models Reference Pages" ). These actions provide a convenient way to choose a command from the List while focus remains in the Text component.
___ ___ ___ 7-9: |  | The default action of the CommandBox passes the command in the Text area to the application for execution and adds the command to the end of the List (Chapter 9, "Controls, Groups, and Models Reference Pages" ). Maintaining a history of commands provides a convenient means of entering often-used commands.

### FileSelectionBox

Yes N/A No |  |
___ ___ ___ 7-10: |  | If your application uses a FileSelectionBox, it is composed of at least the following components (Chapter 9, "Controls, Groups, and Models Reference Pages" ): A Text component for displaying and editing a directory mask used to select files to be displayed. The directory mask is a string specifying the base directory to be examined and a search pattern. A List component for displaying filenames. The List uses either the single selection or browse selection model. A List component for displaying subdirectories. The List uses either the single selection or browse selection model. A Text component for displaying and editing a filename. A group of PushButtons, labeled OK, Filter, Cancel, and Help. This specification ensures the uniform appearance of a FileSelectionBox across applications.
___ ___ ___ 7-11: |  | Your application allows the user to select a new directory to examine by scrolling through the List of directories and selecting the desired directory or by editing the directory mask. Selecting a new directory from the directory List does not change the search pattern (Chapter 9, "Controls, Groups, and Models Reference Pages" ). The method for selecting a new directory to examine needs to be consistent across applications.
___ ___ ___ 7-12: |  | Your application allows the user to select a new search pattern by editing the directory mask (Chapter 9, "Controls, Groups, and Models Reference Pages" ). The method for specifying a new search pattern needs to be uniform across applications.
___ ___ ___ 7-13: |  | The List navigation actions `<Up arrow>`,`<Down arrow>`,`<Ctrl> <Begin>`,and `<Ctrl> <End>` are available from the Text components for moving the cursored element within each List and thus changing the contents of the Text. The contents of the directory Text correspond to the contents of the directory List, and the contents of the filename Text correspond to the contents of the filename List (Chapter 9, "Controls, Groups, and Models Reference Pages" ). These actions provide a convenient way to choose a directory or filename from the corresponding List while focus remains in the Text component.
___ ___ ___ 7-14: |  | The FileSelectionBox initiates a directory and file search when any of the following occurs (Chapter 9, "Controls, Groups, and Models Reference Pages" ): The FileSelectionBox is initialized. The user activates the Filter PushButton. The user double-clicks or presses `<Enter>` or `<Return>` on an item in the directory List. The user presses `<Enter>` or `<Return>` while the directory mask Text edit area has the keyboard focus. The method for initiating a search needs to be uniform across applications.
___ ___ ___ 7-15: |  | Your application allows the user to select a file by scrolling through the List of filenames and selecting the desired file or by entering the filename directly into the file selection Text component. Selecting a file from the List causes that filename to appear in the file selection Text area (Chapter 9, "Controls, Groups, and Models Reference Pages" ). The method for selecting a file needs to be consistent across applications.
___ ___ ___ 7-16: |  | Your application allows the user to select a new file as many times as desired. Your application does not make use of the selection until one of the following occurs (Chapter 9, "Controls, Groups, and Models Reference Pages" ): The user activates the OK PushButton. The user presses `<Enter>` or `<Return>` while the filename Text component has the keyboard focus. The user presses `<Enter>` or `<Return>` while the location cursor is on an item in the file List. The user double-clicks BSelect on an item in the file List. This specification results in the uniform operation of a FileSelectionBox across applications.
___ ___ ___ 7-17: |  | The FileSelectionBox initiates a directory and file search when the FileSelectionBox is initialized, the user activates the Filter PushButton, the user double-clicks BSelect or presses `<Enter>` or `<Return>` on an item in the directory List, or the user presses `<Enter>` or `<Return>` while the directory mask Text edit area has the keyboard focus (Chapter 9, "Controls, Groups, and Models Reference Pages" ). This specification ensures the consistent operation of a directory and file search in a FileSelectionBox.

### List

Yes N/A No |  |
___ ___ ___ 7-18: |  | Within a List component, your application uses `<Up arrow>` to move the location cursor to the previous item in the List and `<Down arrow>` to move the location cursor to the next item in the List. In a scrollable List, `<Left arrow>` scrolls the List one character to the left, and `<Right arrow>` scrolls the List one character to the right (Chapter 9, "Controls, Groups, and Models Reference Pages" ). The arrow keys provide a consistent means of moving the location cursor within a List component.
___ ___ ___ 7-19: |  | Within a List component, your application uses `<Ctrl> <Begin>` to move the location cursor to the first item in the List and `<Ctrl> <End>` to move the location cursor to the last item in the List. In a scrollable List, `<Begin>` moves the horizontal scroll region so that the leftmost edge of the List is visible, and `<End>` moves the horizontal scroll region so that the rightmost edge of the List is visible (Chapter 9, "Controls, Groups, and Models Reference Pages" ). These keys offer a convenient mechanism for moving the location cursor quickly through a List.
___ ___ ___ 7-20: |  | Within a scrollable List, `<PageUp>` moves the location cursor to the item one page up in the List, and `<PageDown>` moves the location cursor to the item one page down in the List. In a scrollable list, `<PageLeft>` or `<Ctrl> <PageUp>` scrolls the List one page to the left, and `<PageRight>` or `<Ctrl> <PageDown>` scrolls the List one page to the right (Chapter 9, "Controls, Groups, and Models Reference Pages" ). These keys offer a convenient mechanism for paging through a List.
___ ___ ___ 7-21: |  | Within a List component, your application uses BSelect Click 2 to select the item that was double-clicked and then initiate any default action for the window (Chapter 9, "Controls, Groups, and Models Reference Pages" ). Double-clicking using BSelect provides a consistent way of activating the default action for a List.

### OptionButton

Yes N/A No |  |
___ ___ ___ 7-22: |  | If your application uses OptionButtons, the Label for the button is the last selection made from the OptionButton (Chapter 9, "Controls, Groups, and Models Reference Pages" ). An OptionButton is used to post an Option Menu which allows the user to select from a number of choices. The Label of an OptionButton needs to display the most recent selection from the associated Option Menu.
___ ___ ___ 7-23: |  | When the user presses BSelect in an OptionButton, the associated Option Menu is posted (Chapter 9, "Controls, Groups, and Models Reference Pages" ). BSelect Press is a consistent way of activating an OptionButton.
___ ___ ___ 7-24: |  | When the user releases BSelect within the same OptionButton that the press occurred in, the associated Option Menu is posted if it was not posted at the time of the press. When the user releases BSelect outside of the OptionButton, the associated Option Menu is unposted (Chapter 9, "Controls, Groups, and Models Reference Pages" ). BSelect Release posts or unposts an Option Menu, depending on whether the release occurs inside the OptionButton and whether the Option Menu was posted at the time of the press.
___ ___ ___ 7-25: |  | When the user presses `<Select>` or `<Space>` in an OptionButton, the associated Option Menu is posted (Chapter 9, "Controls, Groups, and Models Reference Pages" ). `<Select>` or`<Space>` posts an Option Menu from the keyboard.

### PanedWindow

Yes N/A No |  |
___ ___ ___ 7-26: |  | If your application uses PanedWindows, they are composed of any number of groups of components, called Panes, each separated by a Sash and a Separator. The Panes, Sashes, and Separators are grouped linearly, either horizontally or vertically. A Sash is the handle on a Separator between two Panes that is used to adjust the position of the Separator (Chapter 9, "Controls, Groups, and Models Reference Pages" ). This specification ensures the consistent appearance of a PanedWindow across applications.

### Panel

Yes N/A No |  |
___ ___ ___ 7-27: |  | The `<Down arrow>`,`<Left arrow>`,`<Right arrow>`,and `<Up arrow>` directional keys navigate among components in a Panel (Chapter 9, "Controls, Groups, and Models Reference Pages" ). A Panel group organizes a collection of basic controls in a horizontal, vertical, or 2-dimensional layout. The directional keys are used to navigate among the controls.

### PushButton

Yes N/A No |  |
___ ___ ___ 7-28: |  | When the user presses BSelect in a PushButton, the PushButton is armed. When the user releases BSelect in the same PushButton that the press occurred in, the PushButton is disarmed and activated. When the user releases BSelect outside the PushButton, the PushButton is disarmed but not activated (Chapter 9, "Controls, Groups, and Models Reference Pages" ). BSelect provides a consistent means of activating a PushButton.
___ ___ ___ 7-29: |  | When the user presses `<Enter>` or `<Return>` in a PushButton that is in a window with a default action, the PushButton is activated. When the user presses `<Enter>` or `<Return>` in a PushButton in a Menu, the PushButton is activated and the Menu is unposted (Chapter 9, "Controls, Groups, and Models Reference Pages" ). `<Enter>` and`<Return>` activate a DialogBox or a PushButton in a Menu.
___ ___ ___ 7-30: |  | When the user presses `<Select>` or `<Space>` in a PushButton, the PushButton is activated. If the PushButton is in a Menu, the Menu is unposted (Chapter 9, "Controls, Groups, and Models Reference Pages" ). `<Select>` and`<Space>` activate a PushButton. ``

### RadioButton

Yes N/A No |  |
___ ___ ___ 7-31: |  | If your application uses RadioButtons, each button graphically indicates its state (Chapter 9, "Controls, Groups, and Models Reference Pages" ). RadioButtons are used to represent a panel of mutually exclusive selections. The user needs to know which button in the panel is set.
___ ___ ___ 7-32: |  | When the user presses BSelect in a RadioButton, the RadioButton is armed. If the RadioButton was previously unset, it is shown in the set state (Chapter 9, "Controls, Groups, and Models Reference Pages" ). BSelect Press arms a RadioButton and shows the result of activating it by releasing BSelect.
___ ___ ___ 7-33: |  | When the user releases BSelect in the same RadioButton that the press occurred in and the RadioButton was previously unset, it is set, and any other RadioButton in the same Panel that was previously set is unset. The RadioButton is disarmed, and, if the RadioButton is in a Menu, the Menu is unposted (Chapter 9, "Controls, Groups, and Models Reference Pages" ). BSelect Release activates a RadioButton.
___ ___ ___ 7-34: |  | When the user presses `<Enter>` or `<Return>` in a RadioButton, if the RadioButton is in a window with a default action, the default action is activated. If the RadioButton is in a Menu (Chapter 9, "Controls, Groups, and Models Reference Pages" ): If the RadioButton was previously unset, it is set, and any other RadioButton in the same Panel that was previously set is unset. The RadioButton is disarmed, and the Menu is unposted. `<Enter>` and`<Return>` perform the default action of a window or activate a RadioButton in a Menu.
___ ___ ___ 7-35: |  | When the user presses `<Select>` or `<Space>` in a RadioButton, if the RadioButton was previously unset, it is set, and any other RadioButton in the same Panel that was previously set is unset. The RadioButton is disarmed, and, if the RadioButton is in a Menu, the Menu is unposted (Chapter 9, "Controls, Groups, and Models Reference Pages" ). `<Select>` and`<Space>` activate a RadioButton.

### Sash

Yes N/A No |  |
___ ___ ___ 7-36: |  | Within a PanedWindow, your application uses a Sash to adjust the position of a Separator, which adjusts the sizes of the Panes next to it. As a Sash is moved, the Pane in the direction of the Sash movement gets smaller and the opposite Pane gets larger by an equal amount (Chapter 9, "Controls, Groups, and Models Reference Pages" ). This specification results in the uniform operation of a PanedWindow across applications.
___ ___ ___ 7-37: |  | Within a Sash, BSelect Motion or BTransfer Motion causes the Sash to track the movement of the pointer. In a vertically oriented PanedWindow, the Sash tracks the vertical position of the pointer. In a horizontally oriented PanedWindow, the Pane tracks the horizontal position of the pointer (Chapter 9, "Controls, Groups, and Models Reference Pages" ). BSelect`,` the first mouse button, and BTransfer`,` the second mouse button, provide a consistent means of moving a Sash in a PanedWindow using the mouse.
___ ___ ___ 7-38: |  | `<Up arrow>` and `<Down arrow>` (for a Sash that can move vertically) and `<Left arrow>` and `<Right arrow>` (for a Sash that can move horizontally) move the Sash one increment in the specified direction (Chapter 9, "Controls, Groups, and Models Reference Pages" ). The arrow keys offer a uniform means of moving a Sash in a PanedWindow.
___ ___ ___ 7-39: |  | `<Ctrl> <Up arrow>` and `<Ctrl> <Down arrow>` (for a Sash that can move vertically) and `<Ctrl> <Left arrow>` and `<Ctrl> <Right arrow>` (for a Sash that can move horizontally) move the Sash one large increment in the specified direction (Chapter 9, "Controls, Groups, and Models Reference Pages" ). These keys provide a convenient way of moving a Sash quickly in a PanedWindow.

### Scale

Yes N/A No |  |
___ ___ ___ 7-40: |  | If a Scale has arrow buttons, your application uses BSelect Press in an arrow button to move the slider one increment in the direction of the side of the slider on which the button was pressed and autorepeats until the button is released (Chapter 9, "Controls, Groups, and Models Reference Pages" ). BSelect Press provides a consistent means of adjusting a Scale component using the mouse.
___ ___ ___ 7-41: |  | In a Scale trough, if the Scale has tick marks, BSelect Press moves the slider one major tick mark in the direction of the side of the slider on which the trough was pressed and autorepeats until the button is released. If the Scale does not have tick marks, BSelect Press in the trough moves the slider one large increment in the direction of the side of the slider on which the trough was pressed and autorepeats until the button is released (Chapter 9, "Controls, Groups, and Models Reference Pages" ). BSelect Press provides a consistent means of adjusting a Scale component using the mouse.
___ ___ ___ 7-42: |  | Within a Scale slider, BSelect Motion causes the slider to track the position of the pointer. In a vertical Scale, the slider tracks the vertical position of the pointer. In a horizontal Scale, the slider tracks the horizontal position of the pointer (Chapter 9, "Controls, Groups, and Models Reference Pages" ). BSelect Motion offers a convenient way to adjust a Scale component precisely using the mouse.
___ ___ ___ 7-43: |  | Within a Scale slider or trough, BTransfer Motion positions the slider to the point of the button press and then causes the slider to track the position of the pointer. In a vertical Scale, the slider tracks the vertical position of the pointer. In a horizontal Scale, the slider tracks the horizontal position of the pointer (Chapter 9, "Controls, Groups, and Models Reference Pages" ). BTransfer Motion provides another convenient way to adjust a Scale component precisely using the mouse.
___ ___ ___ 7-44: |  | If a mouse-based sliding action is in progress, `<Cancel>` cancels the sliding action and returns the slider to its position prior to the start of the sliding operation (Chapter 9, "Controls, Groups, and Models Reference Pages" ). `<Cancel>` provides a consistent way for the user to cancel a mouse-based sliding action.
___ ___ ___ 7-45: |  | In a vertical Scale, `<Up arrow>` and `<Down arrow>` move the slider one increment in the specified direction. In a horizontal Scale, `<Left arrow>` and `<Right arrow>` move the slider one increment in the specified direction (Chapter 9, "Controls, Groups, and Models Reference Pages" ). The arrow keys provide a uniform way of adjusting the slider in a Scale component using the keyboard.
___ ___ ___ 7-46: |  | In a vertical Scale, `<Ctrl> <Up arrow>` and `<Ctrl> <Down arrow>` move the slider one large increment in the specified direction. In a horizontal Scale, `<Ctrl> <Left arrow>` and `<Ctrl> <Right arrow>` move the slider one large increment in the specified direction (Chapter 9, "Controls, Groups, and Models Reference Pages" ). These keys provide a convenient way of adjusting the slider in a Scale component quickly using the keyboard.
___ ___ ___ 7-47: |  | Your application uses `<Begin>` or `<Ctrl> <Begin>` to move the slider to its minimum value. `<End>` or `<Ctrl> <End>` moves the slider to its maximum value (Chapter 9, "Controls, Groups, and Models Reference Pages" ). These keys provide a convenient mechanism for setting a Scale to its minimum or maximum value using the keyboard.

### ScrollBar

Yes N/A No |  |
___ ___ ___ 7-48: |  | Within a ScrollBar, your application uses BSelect Press in an arrow button to move the slider one increment in the direction of the side of the slider on which the button was pressed and autorepeats until the button is released (Chapter 9, "Controls, Groups, and Models Reference Pages" ). BSelect Press provides a consistent means of adjusting a ScrollBar using the mouse.
___ ___ ___ 7-49: |  | In the trough of a ScrollBar, BSelect Press moves the slider one page in the direction of the side of the slider on which the trough was pressed and autorepeats until the button is released (Chapter 9, "Controls, Groups, and Models Reference Pages" ). BSelect Press provides a consistent means of adjusting a ScrollBar using the mouse.
___ ___ ___ 7-50: |  | Within a ScrollBar slider, BSelect Motion causes the slider to track the position of the pointer. In a vertical ScrollBar, the slider tracks the vertical position of the pointer. In a horizontal ScrollBar, the slider tracks the horizontal position of the pointer (Chapter 9, "Controls, Groups, and Models Reference Pages" ). BSelect Motion offers a convenient way to adjust a ScrollBar precisely using the mouse.
___ ___ ___ 7-51: |  | Within a ScrollBar slider or trough, BTransfer Motion positions the slider to the point of the button press and then causes the slider to track the position of the pointer. In a vertical ScrollBar, the slider tracks the vertical position of the pointer. In a horizontal ScrollBar, the slider tracks the horizontal position of the pointer (Chapter 9, "Controls, Groups, and Models Reference Pages" ). BTransfer Motion offers another convenient way to adjust a ScrollBar precisely using the mouse.
___ ___ ___ 7-52: |  | If a mouse-based scrolling action is in progress, `<Cancel>` cancels the scrolling action and returns the slider to its position prior to the start of the scrolling operation (Chapter 9, "Controls, Groups, and Models Reference Pages" ). `<Cancel>` provides a consistent way for the user to cancel a mouse-based scrolling action.
___ ___ ___ 7-53: |  | In a vertical ScrollBar, `<Up arrow>` and `<Down arrow>` move the slider one increment in the specified direction. In a horizontal ScrollBar, `<Left arrow>` and `<Right arrow>` move the slider one increment in the specified direction (Chapter 9, "Controls, Groups, and Models Reference Pages" ). The arrow keys provide a uniform means of adjusting a ScrollBar using the keyboard.
___ ___ ___ 7-54: |  | In a vertical ScrollBar, `<Ctrl> <Up arrow>` and `<Ctrl> <Down arrow>` move the slider one large increment in the specified direction. `<Ctrl> <Left arrow>` and `<Ctrl> <Right arrow>` move the slider one large increment in the specified direction (Chapter 9, "Controls, Groups, and Models Reference Pages" ). These keys provide a convenient way of adjusting a ScrollBar quickly using the keyboard.
___ ___ ___ 7-55: |  | Your application uses `<PageUp>` and `<PageDown>` to move the slider in a vertical ScrollBar one page in the specified direction. `<PageLeft>` or `<Ctrl> <PageUp>` and `<PageRight>` or `<Ctrl> <PageDown>` move the slider in a horizontal ScrollBar one page in the specified direction (Chapter 9, "Controls, Groups, and Models Reference Pages" ). These keys allow for the convenient movement of the slider in a ScrollBar using the keyboard.
___ ___ ___ 7-56: |  | Your application uses `<Begin>` or `<Ctrl> <Begin>` to move the slider to the minimum value. `<End>` or `<Ctrl> <End>` moves the slider to the maximum value (Chapter 9, "Controls, Groups, and Models Reference Pages" ). These keys offer a convenient mechanism for setting a ScrollBar to its minimum or maximum value using the keyboard.

### SelectionBox

Yes N/A No |  |
___ ___ ___ 7-57: |  | If your application uses a SelectionBox, it is composed of at least a Text component for the selected alternative and a List component above the Text component for presenting alternatives. The List uses either the single selection or browse selection model. Selecting an element from the List places the selected element in the Text component (Chapter 9, "Controls, Groups, and Models Reference Pages" ). This specification ensures the consistent appearance and operation of a SelectionBox across applications.
___ ___ ___ 7-58: |  | The List navigation actions `<Up arrow>`,`<Down arrow>`,`<Ctrl> <Begin>`,and `<Ctrl> <End>` are available from the Text component for moving the cursored element within the List and thus changing the contents of the Text (Chapter 9, "Controls, Groups, and Models Reference Pages" ). These actions provide a convenient way to choose an element from the List while focus remains in the Text component.

### Text

Yes N/A No |  |
___ ___ ___ 7-59: |  | In a multiline Text component, `<Up arrow>` moves the location cursor up one line, and `<Down arrow>` moves the location cursor down one line. In a single-line Text component, `<Up arrow>` navigates upward to the previous component, and `<Down arrow>` navigates downward to the next component, if the Text component is designed to act like a basic control (Chapter 9, "Controls, Groups, and Models Reference Pages" ). The up and down arrow keys provide a uniform means of navigation within Text components.
___ ___ ___ 7-60: |  | `<Left arrow>` moves the location cursor left one character, and `<Right arrow>` moves the location cursor right one character (Chapter 9, "Controls, Groups, and Models Reference Pages" ). The left and right arrow keys offer a consistent way of navigating within Text components.
___ ___ ___ 7-61: |  | In a Text component used generally to hold multiple words, `<Ctrl> <Right arrow>` moves the location cursor to the right by a word, and `<Ctrl> <Left arrow>` moves the location cursor to the left by a word (Chapter 9, "Controls, Groups, and Models Reference Pages" ). `<Ctrl> <Right arrow>` and`<Ctrl> <Left arrow>` provide a uniform way of navigating by words in a Text component. Moving right by a word means that the location cursor is placed before the first character that is not a space, tab, or newline character after the next space, tab, or newline. Moving left by a word means that the location cursor is placed after the first space, tab, or newline character preceding the first previous character that is not a space, tab, or newline.
___ ___ ___ 7-62: |  | In a Text component used generally to hold multiple words, `<Begin>` moves the location cursor to the beginning of the line, and `<End>` moves the location cursor to the end of the line (Chapter 9, "Controls, Groups, and Models Reference Pages" ). These keys allow the user to move quickly to the beginning or end of a line of text in a Text component.
___ ___ ___ 7-63: |  | In a multiline Text component, `<Ctrl> <Begin>` moves the location cursor to the beginning of the file, and `<Ctrl> <End>` moves the location cursor to the end of the file (Chapter 9, "Controls, Groups, and Models Reference Pages" ). These keys permit the user to move quickly to the beginning or end of a file in a Text component.
___ ___ ___ 7-64: |  | Your application uses `<Space>` or `<Shift> <Space>` to insert a space in a Text component. Modifying these with `<Ctrl>` invokes the normal selection function (Chapter 9, "Controls, Groups, and Models Reference Pages" ). This specification ensures that selection is available from the keyboard in a Text component.
___ ___ ___ 7-65: |  | `<Return>` in a multiline Text component inserts a carriage return. `<Enter>` or `<Ctrl> <Return>` invokes the default action (Chapter 9, "Controls, Groups, and Models Reference Pages" ). This specification ensures that activation is available from the keyboard in a Text component.
___ ___ ___ 7-66: |  | In a multiline Text component, `<Tab>` is used for tabbing. In a single-line Text component, `<Tab>` is used either for tabbing or to move to the next field (Chapter 9, "Controls, Groups, and Models Reference Pages" ). `<Tab>` is used for tabbing in multiline Text.
___ ___ ___ 7-67: |  | If a Text component supports replace mode, `<Insert>` toggles between insert mode and replace mode. By default, the component starts in insert mode, where the location cursor is between two characters. In insert mode, typing a character inserts the character at the position of the location cursor. In replace mode, the location cursor is on a character. Typing a character replaces the current character with that newly entered character and moves the location cursor to the next character, selecting it (Chapter 9, "Controls, Groups, and Models Reference Pages" ). These rules ensure the uniform operation of a Text component with a replace mode.
___ ___ ___ 7-68: |  | Your application uses BSelect Click 2 to select text a word at a time (Chapter 9, "Controls, Groups, and Models Reference Pages" ). Double clicking with the first mouse button provides a convenient mechanism for selecting words in a Text component.

Prev | Table of Contents | Next
Appendix A. OSF/Motif Widgets and Components Correspondence |  | Glossary