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

Common Client Areas


Your application is presented in windows. The windows can be either MainWindows, DialogBoxes, or Menus. The contents of these windows are the application client areas. Some of these client areas have common features that are described in this section. The following subsections describe in detail the contents of the MainWindow and the common MainWindow areas:

Following this is a description of some common Popup Menus and DialogBoxes. These common client areas provide a familiar base for users new to your application to begin working.

MainWindow

A MainWindow with its client areas is shown below.

MainWindows contain the framework for your application. The principal component of a MainWindow is typically a scrollable work area. The application can also provide a group of useful controls, arranging these along the top, bottom, or side of the work area.

In a text editing application, a MainWindow usually contains the text. In a spreadsheet application, a MainWindow usually contains the spreadsheet. In a mail browsing application, a MainWindow usually contains a list of mail messages and an area for viewing a message. Every application must have at least one MainWindow.

Some applications may want more than one MainWindow; for example, applications with more than one primary function, like the query and update features of a database, and applications with more than one instance of the same primary function, like a graphics editor working on multiple figures. When an application has multiple MainWindows that serve the same primary function, each window should be treated as a separate application. Each window must close and iconify separately. When an application has multiple MainWindows that serve different primary functions, each window must be iconifiable separately, but it is up to the application to decide whether each closes separately or whether closing one window closes the entire application. You should take special care to identify, using the window manager title bar or a prominent internal Label, which DialogBoxes belong to each MainWindow.

Command Area

Even though user interface applications are oriented toward direct manipulation of graphical elements, your application can provide an area for a user to enter a typed command. This can be particularly useful when updating an existing command-based application to an application based on a graphical user interface.

If your application includes a command area, it should run from border to border across the MainWindow. If the MainWindow includes a message area at the bottom, the command area should be placed just above the message area; otherwise, it should be placed at the bottom of the MainWindow.

The command area often consists of one or both of the following components:

Message Area

Your application can provide a message area in the MainWindow for presenting application messages. Your application should not use a message area for warnings or messages requiring immediate action. These should be displayed in a DialogBox.

The message area can be used to provide brief help, either in response to a request from the user or, as the focus changes, to indicate the purpose of the component with the focus.

If your application includes a message area, it should run from border to border across the bottom of the MainWindow, below any ScrollBars or the command area. Your application can display and remove the message area as needed.

ScrollBars

An application can use ScrollBars in its MainWindow to provide a means for viewing an area larger than the MainWindow. Your application defaults should place ScrollBars on the bottom and right sides of the application. (ScrollBar placement can be a user preference.) You should place ScrollBars below the MenuBar and above any command or message area. ScrollBars should not scroll the MenuBar, command area, or message area. The ScrollBars can be displayed and removed as needed.

MenuBar

A MenuBar is a basic group that organizes the most common features of an application. The MenuBar must be a horizontal bar at the top edge of the application just below the title area of the window frame. The MenuBar contains a list of Menu topics in CascadeButtons with Pulldown Menus connected to them. A MenuBar must contain only CascadeButtons, because other buttons inhibit Menu browsing. Each Menu topic should have a single-letter mnemonic indicated by underlining.

The following Pulldown Menus provide general functions common to most applications. Remember that these Menu guidelines, like all the guidelines in this OSF/Motif Style Guide, apply only in a left-to-right language environment in an English-language locale. You need to make the appropriate changes for other locales.

File
The File Menu should contain components for performing actions on the files, such as opening, saving, closing, and printing. It should also contain components for performing actions on the application as a whole, such as quitting. If the Label File is not appropriate to the context of your application, you can choose a different, more appropriate Label. The File Menu should have a mnemonic of F.
Selected
The Selected Menu should contain components for performing actions on the objects represented by the current selection of the application, such as opening or printing a selected item. This Menu is often similar to the File Menu, except that it acts on the objects denoted by the current selection. For example, in a directory browser, Open in the File Menu could (using a DialogBox) prompt the user for the name of a directory to open for browsing, while Open in the Selected Menu opens the file whose icon is currently selected in the browser. The Selected Menu should not contain editing functions normally found in the Edit Menu. The Selected Menu should have a mnemonic of S.
Edit
The Edit Menu should contain components for performing actions on the current data of the application, such as an undo action or making global substitutions in a block of text. It should also include components for interacting with the system clipboard, such as cut, copy, and paste. The Edit Menu should have a mnemonic of E.
View
The View Menu should contain components for changing the user's view on the data. Components in the View Menu should not actually change the data. The exact contents of the View Menu are application specific but can include components that change the appearance of the data, the amount of data that is displayed, or the order in which the data is displayed. The View Menu should have a mnemonic of V.
Options
The Options Menu should contain components for a user to customize the application. The exact contents of the Options Menu are application specific. The Options Menu should have a mnemonic of O.
Help
The Help Menu should contain components that provide user help facilities. The components in the Help Menu usually bring up a DialogBox with help information. Every application should have a Help Menu. The Help Menu should have a mnemonic of H.

While we recommend that you include the common Menus in the MenuBar of your application, your choice of Menu titles and items depends on the nature of your application. If your application requires it, you should design more relevant titles and selections, but do not change the meanings of items used in the common Menus.

If any of the common Menus are present, they must be arranged in the following order with respect to each other, ranging from left to right across the MenuBar in a left-to-right language environment:

File Menu
Selected Menu
Edit Menu
View Menu
Options Menu
Help Menu

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. However, if a File Menu is present, it must be the first Menu and must be placed at the far left of the MenuBar. If a Help Menu is present, it must be the last Menu and must be placed at the far right of the MenuBar.

The recommended contents of the File, Edit, and Help Menus follow. The contents of the Selected, View, and Options Menus are application specific and are not specified here. Each of these common Menus can contain a TearOffButton.

File Menu Contents

A sample File Menu is shown below. The common Menu contents are described following the figure. Note that you should only include those functions actually supported by your application. The File Menu can contain a TearOffButton.

New
Must create a new file. This operation must clear existing data from the client area. If completion of the operation will obliterate current changes to the file, you must display a DialogBox, asking the user about saving changes. This action must have the mnemonic N.
Open...
Must open an existing file. This operation must prompt the user for the name of the file with a DialogBox. The title bar should be updated with the name of the newly opened file. If completion of the operation will obliterate current changes to the file, you must display a DialogBox, asking the user about saving changes. This DialogBox should be displayed after the user selects a new file. This action must have the mnemonic O.
Save
Must save the currently opened file without removing the existing contents of the client area. If the currently opened file has no name, Save must prompt for a filename with a DialogBox. This action must have the mnemonic S.
Save As...
Must save the currently opened file under a new name without removing the existing contents of the client area. This operation must prompt for the name of the file with a DialogBox. If the user tries to save the new file under an existing name, Save As must alert the user with a DialogBox if a possible loss of data would occur. This action must have the mnemonic A.
Print
Must schedule a file for printing. If your application requires specific printing information before printing, the operation must first request that information with a DialogBox, and the entry title must be followed by an ellipsis. Printing information can also be specified for the application in the Options Menu. This action must have the mnemonic P.
Close
Can be supplied in applications that have multiple independent primary windows. This action must not be supplied in applications with a single primary window or multiple dependent primary windows. This action must only close the current primary window and its associated secondary windows; that is, the window family. This action must have the mnemonic C. You can include this action even though it is similar to the Close action in the window Menu. This ensures that users have a way to close the primary window even if they are not running a compliant window manager. Applications must prompt the user to save any unsaved changes if the action would cause loss of data.
Exit
Must end the current application and all windows associated with it. This action is equivalent to closing all primary windows of the application. This action must have the mnemonic X. You should include this action even though it is similar to the Close action in the window Menu. This ensures that users have a way to end the application even if they are not running a compliant window manager. Applications must prompt the user to save any unsaved changes if the action would cause loss of data. If your application does not have a File Menu, put Exit at the end of the first Pulldown Menu.

You should include Menu items in the order described. If you add new Menu items, you should insert them near similar elements.

Edit Menu Contents

A sample Edit Menu is shown below. The common Menu contents are described following the figure. Note that you should only include those functions actually supported by your application. The Edit Menu can contain a TearOffButton.

Undo Alt+Backspace
Must reverse the most recently executed action. To provide a visual cue to the user, the Undo selection title should be dynamically modified to indicate what is being undone. For example, if the most recently executed action was a paste, the action name would be Undo paste. Your application should be able to undo all of the actions in the Edit Menu. This action must have the mnemonic U.
Cut Shift+Del
Must remove the selected portion of data from the client area to the clipboard. This action must choose the component to act on by following the rules in Operation Targets for operations that act on selections. This action must have the mnemonic T.
Copy Ctrl+Ins
Must copy the selected portion of data to the clipboard without removing the original data from the client area. This action must choose the component to act on by following the rules in Operation Targets for operations that act on selections. This action must have the mnemonic C.
Copy Link
Must copy a link of the selected portion of data to the clipboard without removing the original data from the client area. This action must choose the component to act on by following the rules in Operation Targets for operations that act on selections. This action must have the mnemonic K.
Paste Shift+Ins
Must paste the contents of the clipboard into a client area. This action must choose the component to act on by following the rules in Operation Targets for operations that do not act on selections. This action must have the mnemonic P.
Paste Link
Must paste a link of the data represented by the contents of the clipboard into a client area. This action must choose the component to act on by following the rules in Operation Targets for operations that do not act on selections. This action must have the mnemonic L.
Clear
Must remove a selected portion of data from the client area without copying it to the clipboard. The remaining data is not compressed to fill the space that was occupied by the cleared data. This action must choose the component to act on by following the rules in Operation Targets for operations that act on selections. This action must have the mnemonic E.
Delete
Must remove a selected portion of data from the client area without copying it to the clipboard. This action must choose the component to act on by following the rules in Operation Targets for operations that act on selections. This action must have the mnemonic D.
Select All Ctrl+/
Must make the primary selection consist of all the elements in a component of the client area. This action must choose the component to act on by following the rules in Operation Targets for operations that do not act on selections. If the action uses an accelerator, it should be [/].
Deselect All Ctrl+\
Must remove from the primary selection all the elements in a component of the client area. This action must choose the component to act on by following the rules in Operation Targets for operations that do not act on selections. If the action uses an accelerator, it should be [\].
Select Pasted
Must make the primary selection consist of the last element or elements pasted into a component of the client area. This action must choose the component to act on by following the rules in Operation Targets for operations that do not act on selections.
Reselect Alt+Insert
Must make the primary selection consist of the last selected element or elements in a component of the client area. This action must choose the component to act on by following the rules in Operation Targets for operations that do not act on selections. The action must be available only in components that do not support persistent selections and only when the current selection is empty. If the action uses an accelerator, it should be .
Promote Alt+Insert
Must promote to the primary selection the current selection of a component of the client area. This action must choose the component to act on by following the rules in Operation Targets for operations that act on selections. This action must only be available for components that support persistent selections. If the action uses an accelerator, it should be .

You should include Menu items in the order described. If you add new Menu items, you should insert them near similar elements.

If you use accelerators for Undo, Cut, Copy, and Paste, you must use either one or both of the models presented in the following two tables.

Edit Menu Accelerators, Model 1
Edit Menu Item Accelerator
Undo <Alt> <BackSpace>
Cut <Shift> <Delete>
Copy <Ctrl> <Insert>
Paste <Shift> <Insert>
Edit Menu Accelerators, Model 2
Edit Menu Item Accelerator
Undo <Ctrl> <Z>
Cut <Ctrl> <X>
Copy <Ctrl> <C>
Paste <Ctr>> <V>

In addition, if your keyboard has [Undo], [Cut], [Copy], and [Paste] keys, these should be supported as accelerators for the corresponding Menu items as well.

Help Menu Contents

There are two acceptable models for the contents of the Help Menu. This guide allows either model.

A sample of the first model for the Help Menu is shown below. The common Menu contents for this model are described following the figure. Note that you should only include those functions actually supported by your application. The Help Menu can contain a TearOffButton.

On Context Shift+Help
Must initiate context-sensitive help by changing the shape of the pointer to the question pointer described in Pointer Shapes. When the user moves the pointer to the component help is wanted on and presses BSelect, any available context-sensitive help for the component must be presented, and the pointer reverts from the question pointer. This action must have the mnemonic C. If the action uses an accelerator, it must be .
On Help
Must provide information on how to use the application's help facility. This action must have the mnemonic H.
On Window
Must provide general information about the window from which help was requested. This action must have the mnemonic W.
On Keys
Must provide information about the application's use of function keys, mnemonics, and keyboard accelerators. This action must have the mnemonic K.
Index
Must provide an index for all help information in the application. This action must have the mnemonic I. The index can provide search capabilities.
Tutorial
Must provide access to the application's tutorial. This action must have the mnemonic T.
On Version
Must provide the name and version of the application. This action must have the mnemonic V. It can provide other information as well.

A sample of the second model for the Help Menu is shown below. The common Menu contents in the model are described following the figure. Note that you should only include those functions actually supported by your application. The Help Menu can contain a TearOffButton.

Context-Sensitive Help Shift+Help
Must initiate context-sensitive help by changing the shape of the pointer to the question pointer described in Pointer Shapes. When the user moves the pointer to the component help is wanted on and presses BSelect, any available context-sensitive help for the component must be presented, and the pointer reverts from the question pointer. This action should be followed by a separator. This action must have the mnemonic C. If the action uses an accelerator, it must be .
Overview
Must provide general information about the application window from which help was requested. This action must have the mnemonic O.
Index
Must provide an index for all help information in the application. This action must have the mnemonic I. The index can provide search capabilities.
Keyboard
Must provide information about the application's use of function keys, mnemonics, and keyboard accelerators. This action must have the mnemonic K.
Tutorial
Must provide access to the application's tutorial. This action must have the mnemonic T.
Using Help
Must provide information on how to use the application's help facility. This action must have the mnemonic H.
Product Information
Must provide the name and version of the application. This action must have the mnemonic P. It can provide other information as well.

Applications should place additional Help Menu items between Index and Using Help.

Help is usually provided in DialogBoxes but can also appear in the message area. You should include Menu items in the order described. If you add new Menu items, you should insert them near similar elements.

Popup Menus

A Popup Menu is a Menu that is associated with another element. It is usually hidden from the user and is posted using BMenu and . It is used to organize actions that are specific to its associated element, but it should not be the only place in an application where those actions are available; that is, Popup Menus should be a redundant element of a user interface whose main purpose is to provide the experienced user with a quick way to perform common tasks on individual elements.

The following common actions provide general functions common to Popup Menus in many applications. While we recommend that you include these common actions in your Popup Menus consistently with the descriptions here, your choice of items depends on the nature of your application. If your application requires it, you should design more relevant titles and selections, but do not change the meanings of items used in the common Popup Menus.

Even within a single control, such as a Canvas, the contents of a Popup Menu can depend on the position within the control, or the state of the elements at that position, such as whether the Menu is popped up from within a selected range of elements. When BMenu is used to pop up the Menu, the location of the pointer when BMenu is pressed is what matters. When is used to pop up the Menu, what matters is the position of the location cursor within the control.

Note that you should include only those functions actually supported by your application. Remember that these Menu guidelines, like all the guidelines in this guide, apply only in a left-to-right language environment in an English-language locale. You need to make the appropriate changes for other locales.

Properties
Must display a properties DialogBox that the user can use to set the properties of the component. If the Menu is popped up over a selection, it can display the properties of the selection. If the Menu is popped up over an unselected item, it can display the properties of that item. If the Menu is popped up over the background, it should display the properties of the collection, except over a part of the background considered to be in the selection. This action should have the mnemonic S.
Undo Alt+Backspace
Must reverse the most recently executed action. To provide a visual cue to the user, the Undo selection title should be dynamically modified to indicate what is being undone. For example, if the most recently executed action was a paste, the action name would be Undo paste. This action should have the mnemonic U. This action should have the same accelerator as the corresponding entry in the Edit Menu.
Primary Move Alt+Shift+Delete
Must move the contents of the primary selection to the component. This action must only be used in an editable component. If the action uses an accelerator, it should be , [X], or both. In addition, if the keyboard has a [Cut] key, this action should support [Cut] as an accelerator. If more than one format can be moved from the primary selection, Primary Copy can cascade a Menu of possible transfer formats, in which case it should not have an accelerator.
Primary Copy Alt+Ctrl+Insert
Must copy the contents of the primary selection to the component. This action must only be used in an editable component. If the action uses an accelerator, it should be , [C], or both. In addition, if the keyboard has a [Copy] key, this action should support [Copy] as an accelerator. If more than one format can be copied from the primary selection, Primary Copy can cascade a Menu of possible transfer formats, in which case it should not have an accelerator.
Primary Link
Must place a link to the primary selection in the component. This action must only be used in an editable component. If the link can be viewed in more than one way, Primary Link can cascade a Menu of possible viewing representations.
Cut
Must cut elements to the clipboard and can mark them for use in a subsequent Paste Link operation. If the Menu is popped up in a selection, the entire selection must be cut. If the Menu is popped up over an unselected element, just that element should be cut. If the Menu is popped up in the background, the entire collection can be cut. This action should have the mnemonic T.
Copy
Must copy elements to the clipboard and can mark them for use in a subsequent Paste Link operation. If the Menu is popped up in a selection, the entire selection must be copied. If the Menu is popped up over an unselected element, just that element should be copied. If the Menu is popped up in the background, the entire collection can be copied. This action should have the mnemonic C.
Copy Link
Must copy a link of elements to the clipboard and can mark them for use in a subsequent Paste Link operation. If the Menu is popped up in a selection, a link to the entire selection must be copied. If the Menu is popped up over an unselected element, a link to just that element should be copied. If the Menu is popped up in the background, a link to the entire collection can be copied. This action should have the mnemonic K.
Paste Shift+Insert
Must paste the contents of the clipboard to the component. This action must only be used in an editable component. This action should have the mnemonic P. This action should have the same accelerator as the corresponding entry in the Edit Menu.
Paste Link
Must paste a link of the contents of the clipboard to the component. This action must only be used in an editable component. This action should have the mnemonic L.
Clear
Must remove a selected portion of data from the client area without copying it to the clipboard. If the Menu is popped up in a selection, it must delete the selection. If the Menu is popped up over an unselected element, it should delete that element. If the Menu is popped up over the background, except over a part of the background considered to be in the selection, it can delete all the elements. The remaining data is not compressed to fill the space that was occupied by the cleared data. This action should have the mnemonic E.
Delete
Must remove a selected portion of data from the client area without copying it to the clipboard. If the Menu is popped up in a selection, it must delete the selection. If the Menu is popped up over an unselected element, it should delete that element. If the Menu is popped up over the background, except over a part of the background considered to be in the selection, it can delete all the elements. This action should have the mnemonic D.
Select All Ctrl+/
Must make the primary selection consist of all the elements in the collection with the Popup Menu. If the action uses an accelerator, it should be [/].
Deselect All Ctrl+\
Must deselect the current selection in the collection with the Popup Menu. If the action uses an accelerator, it should be \.
Select Pasted
Must make the primary selection consist of the last element or elements pasted into the collection with the Popup Menu.
Reselect Alt+Insert
Must make the primary selection consist of the last selected element or elements in the component with the Popup Menu. The action must be available only in components that do not support persistent selections and only when the current selection is empty. If the action uses an accelerator, it should be .
Promote Alt+Insert
Must promote the current selection to the primary selection. This action must only be available in components that support persistent selections. If the action uses an accelerator, it should be .

If an action invoked from a Popup Menu, such as Primary Copy, inserts or pastes data in a collection, the data must be pasted at the insertion position of the component. However, if the Popup Menu is popped up over a selection of an editable collection, the selection must first be deleted, even if pending delete is disabled, and the pasted data must replace it.

If an action invoked from a Popup Menu acts on a group of elements, it behaves according to the following rules:

Appropriate words, such as Selection or words denoting the type of a single element of the collection as a whole, should be added to a Label to specify which elements are affected. For example, if a Popup Menu contains the entry Copy Selection, the current selection is copied to the clipboard regardless of where in the collection the Menu is popped up.

A Popup Menu item should have an accelerator only if the result of typing the accelerator would be equivalent to popping up the Menu by pressing and then selecting the Menu item. If Cut Selection is included in a Popup Menu, it should use the same accelerators as Cut in the Edit Menu. If Copy Selection is included in a Popup Menu, it should use the same accelerators as Copy in the Edit Menu.

DialogBoxes

Applications use DialogBoxes to interact with the user about application details not directly related to the primary purpose of the application. Applications display DialogBoxes only when needed to convey a message to the user, or when the user requests it to provide input to the application. They follow the same general layout guidelines as a MainWindow. Additional guidelines for DialogBox design are given in DialogBox Design, as well as in the reference section in Controls, Groups, and Models Reference Pages.

The following DialogBoxes provide general functions common to many applications.

CommandDialog

A CommandDialog should be used to enter keyboard commands. It should not interrupt the user's interaction with the application; that is, it should not be modal. It should include a CommandBox as shown below.

FileSelectionDialog

A FileSelectionDialog should be used to enter the name of a file for processing. It should not interrupt the user's interaction with the application; that is, it should not be modal. It should include a FileSelectionBox as shown below.

PromptDialog

A PromptDialog should be used to prompt the user for input. It can interrupt the user's interaction with the application; that is, it can be application modal. It should include a message, a text input area, and one of the following button arrangements as shown below.

OK Cancel
OK Cancel Help
OK Apply Cancel
OK Apply Cancel Help
OK Apply Reset Cancel
OK Apply Reset Cancel Help

SelectionDialog

A SelectionDialog should be used to allow a user to make a selection from a list of choices. It can interrupt the user's interaction with the application; that is, it can be application modal. It should contain a SelectionBox as shown below.

MessageDialog

A MessageDialog should be used to convey a message to the user. It should include a message and one of the following button arrangements:

OK
OK Help
OK Cancel
OK Cancel Help
Yes No
Yes No Help
Yes No Cancel
Yes No Cancel Help
Cancel
Cancel Help
Retry Cancel
Retry Cancel Help

There are a number of different types of MessageDialogs: ErrorDialog, InformationDialog, QuestionDialog, WorkingDialog, and WarningDialog.

An ErrorDialog should be used to convey a message about a user error. It should stop user interaction with the application until it is dismissed; that is, it should be application modal. It should include an error symbol, a message, and one of the following button arrangements as shown below.

OK Cancel
OK Cancel Help

An InformationDialog should be used to convey information to the user. It must not interrupt the user's interaction with the application; that is, it must not be modal. It should include an information symbol, a message, and one of the following button arrangements as shown below.

OK
OK Help

A QuestionDialog should be used to get a user response to a question. It should interrupt the user's interaction with the application; that is, it should be application modal. It should include a question symbol, a message, and one of the following button arrangements as shown below

Yes No
Yes No Help
Yes No Cancel
Yes No Cancel Help

A WarningDialog should be used to alert the user to a possible danger. It should interrupt the user's interaction with the application; that is, it should be application modal. It should contain a warning symbol, a message, and one of the following button arrangements as shown in below.

Yes No
Yes No Help
OK Cancel
OK Cancel Help

A WorkingDialog should be used to show work in progress and give the user an opportunity to cancel the operation. It should not interrupt the user's interaction with the application; that is, it should not be modal. It should contain a working symbol, a message, and any of the following sets of buttons in order as shown below.

Close
Cancel or Stop
Pause Resume
Help

A WorkingDialog should also include a progress indicator if that information is available.