This chapter describes user interface elements that allow the user to select discrete options or values. These elements are:
The first section tells you how to choose which of the elements listed above is best for your application. The rest of the chapter describes behavior and appearance guidelines for each element.
Choosing Which Element to Use
Table 5.1 provides some general tips on user interface element selection. More details are provided after the table.
Table 5.1 Choosing an element to present options
Can be simulated with Command Buttons if desired |
Choosing Several of Many Options
Check boxes (see Figure 5.1) are the only user interface element that allow the user to select several options at the same time. The other elements allow only one of the options to be selected. Therefore, if you have several options that are not mutually exclusive, check boxes are the element to use.

Choosing One from Many Options
If you want the user to choose only one from a set of options, there are several user interface elements you can use: push buttons, pop-up lists, selector triggers, or sliders (see Figure 5.2). Pop-up lists and sliders are very similar to their counterparts in desktop computers. Push buttons are analogous to radio buttons on a desktop computer, but they have a different look. Selector triggers are unique to Palm OS. A selector trigger looks like text surrounded by a dotted rectangle. The text displays the current selection. When the user taps the selector trigger, it displays a modal form that allows the user to change the selection.
Figure 5.2 Controls to choose one of many

The following sections discuss the pros and cons of each element.
Push Buttons
- In general, push buttons are the easiest of these elements to understand because they present all options on the screen at one time. Sliders can be equally easy to understand, but the use of sliders is limited to a few specific instances.
Push buttons are not easy to understand when there are only two choices (see Figure 5.3). Some users think that the highlighted (dark) button is the option that is not selected. They only realize which is the selected button when there are at least two deselected buttons to compare it with.
Figure 5.3 Two-choice push button

- In general, push buttons are the easiest element for a user to use when compared to pop-up lists and selector triggers.
- Use push buttons if there are between three and seven options that have short names. If there are more options or the names become long, push buttons become hard to read.
- Don't use push buttons if your application is going to be localized or if there's a possibility you'll add another push button in a future version of the application.
Because of the severe space limitations, push buttons don't scale well. If you can't leave room for button growth due to localization or a new feature, then it is best to use a pop-up list.
- Use push buttons to select among application views. See Figure 5.4.
Figure 5.4 Push buttons that select view

Pop-Up Lists
- Use pop-up lists when there are too many choices to display in a series of push buttons or you simply don't have room for push buttons.
- Use pop-up lists if the application is going to be localized or if there might be more options added in future versions.
- The more options a pop-up list presents, the more difficult and confusing it becomes to navigate. Try to limit yourself to one screenful of items in the pop-up list. Avoid creating pop-up lists that require the user to scroll more than one or two times. When users must scroll more than a couple of times, they tend to forget where they are in the list.
Sliders
- Use a slider to select one value from a continuous range of possible values. Sliders are best used when the setting is non-specific. For example, when setting the brightness or contrast on a screen, users do not know the specific value they want. They only know that they want the screen brighter or darker. Volume settings are also a good fit for sliders. Users do not know the numeric value of the decibel level they want; they only know that they want the sound louder or quieter.
- Sliders are only supported on Palm OS® 3.5 and later. If you want to support older versions of Palm OS, do not use sliders. An alternative if you're using a slider for numeric data is to create a spin box style of interface element. Use repeating buttons to increment or decrement the numeric value. The Date Book Preferences dialog uses such an element (see Figure 5.5).
Figure 5.5 An alternative to sliders

Selector Triggers
- Use a selector trigger and a modal form when you have so many options that a pop-up list would be too cumbersome.
For example, there are well over fifty possible time zones, which would make a very large pop-up list, so the Preferences application uses a selector trigger for the time zone setting. Tapping the trigger displays a modal form containing a list of time zones. Tapping OK on the form changes the time zone shown in the selector trigger to the time zone selected in the form's list.
- Use selector triggers when you want to limit user input to a particular format. Setting a date or a time of day, for example, requires a set format.
- Use selector triggers when the data has multiple elements that must be set at the same time. A date has a month, a day, and a year. A time has the hours, minutes, and an AM or PM designation.
Check Boxes
- Don't use check boxes to choose one of many items. Constructor for Palm OS allows you to create a group of check boxes that behave like push buttons, where selecting one check box deselects another, but such an interface is strongly discouraged. Users expect to be able to select more than one check box in a series.
Implementing a Combo Box
Desktop interfaces often support combo box elements, where the user can either select from an existing list of options or type in a new one. Combo boxes on the desktop often look like a pop-up list combined with a text field. Palm OS does not have a combo box element, but it supports several ways of implementing similar behavior.
It's usually best to use a selector trigger where you might use a combo box on a desktop application. Tapping the selector trigger displays a modal form that presents both the list and a text field. To fill in the text field, the user can either select from the list or write Graffiti® characters (see Figure 5.6).
Figure 5.6 Selector trigger as combo box

The selector trigger is a good choice when the following are true:
- Users do not access the form containing the selector trigger often.
- Users are more likely or just as likely to choose an option from the list of available choices than to write in a new one.
If you expect the form to be used frequently and you believe users will want to write in a new choice often, the selector trigger is not the best solution. The selector trigger implementation makes writing a new choice less convenient than a simple text field would. For example, consider implementing the expense type in the Expense application with a selector trigger and modal dialog. When users enter expenses, they often enter several in a row. If they have to tap a selector trigger, navigate a list, and tap OK to enter each expense, using the application can become tedious.
Another option is to use a command button in combination with a text field as shown in Figure 5.7. This style of user interface allows the user to enter text in the text field just as easily as selecting from the list.
Figure 5.7 Command button as combo box

The command button implementation of a combo box is a good choice when the list of available options is potentially quite large. In Figure 5.7, the To command button does phone lookup, and there may be hundreds of phone numbers from which to choose.
A third choice for implementing a combo box element is to use a pop-up list. Using a pop-up list element is a good idea when the following are true:
- The form is used so frequently that the extra taps required by the selector trigger make its use tedious.
- The available choices are far fewer than with the phone lookup example shown in Figure 5.7.
To allow the user to enter new items for the list, include an Edit command in the list, in the same way that the Categories pop-up list includes an Edit Categories command. See the section "Pop-Up Lists" for more information on implementing pop-up lists.
A pop-up list allows the user to select from the list more conveniently than a selector trigger does. Entering text is still slightly inconvenient. If you anticipate that users will want to add new items to the list often, you also may want to add a command to your interface that would display a modal dialog in which the user could add several items to the list at once.
Check Boxes
Check boxes (see Figure 5.8) display an on/off setting. Tapping a check box or its text content toggles the setting.
Use check boxes for two-state data or options, that is, for values that are either on or off, enabled or disabled.
Figure 5.8 Check box dimensions

Text describing option. Can be lengthy. Use title capitalization and bold font. |
Most check boxes have bold text to the right that describes the option. (This book refers to this text as the check box's text or text content.) The text should describe the "positive" state of the check box, that is, what happens when the check box is checked. The text content is part of the active area of the check box. The user can tap the text to toggle the check box.
Check boxes are not required to have text content. For example, the check boxes in each To Do List record do not.
Notice that some check boxes omit the text content to the right of the check box in favor of a label to the left. For example, the Memo Pad Details form in Figure 5.9 has a checkbox that sets whether the record is private. The label for this check box is to the left of the box to make it match the only other user interface element on this form. Placing the check box on the left is done at a cost: the check box's label is no longer part of the check box's tappable area. For this reason, it's unwise to arbitrarily choose to place check box labels to the left. Do so only if there is good reason.
Figure 5.9 A check box with a label to the left

Pop-Up Lists
A pop-up list allows a user to select one item from a series of items. It displays the currently selected item. A pop-up list is actually made of two user interface elements: a pop-up trigger (see Figure 5.10) and a list (see Figure 5.11).
Both push buttons and pop-up lists allow a user to select one item from a series of items. Pop-up lists are a little more difficult for users to navigate than push buttons, but they are often ideal for situations where there are several possible options from which the user can choose.

Table 5.3 Pop-up trigger details

or number of items in the list if < 13 items Use 0 for the Categories list. Its height is determined at run time. |
|
System Supplied Behavior
The pop-up list displays the current selection. If the user taps a pop-up list's arrow or its content, the list is displayed.
Pen Interaction
Tapping a list item unhighlights the current selection and highlights the item under the pen. Dragging the pen through the list highlights the item under the pen. Dragging the pen above or below the list causes the list to scroll if it contains more choices than are visible. If the pen is otherwise dragged outside the list, the selection is unchanged.
Scrollable Pop-Up Lists
If there are more choices than can be displayed, the system draws small arrows (scroll indicators) in the right margin next to the first and last visible choice. When the pen comes down and up on a scroll indicator, the list is scrolled. When the user scrolls down, the last visible item becomes the first visible item if there are enough items to fill the list. If not, the list is scrolled so that the last item of the list appears at the bottom of the list. The reverse is true for scrolling up. The scrolling hard keys on the handheld perform the same behavior. Scrolling doesn't change the current selection.
Look and Feel
Follow these guidelines for the behavior and appearance of a pop-up list.
Show Selection When List Pops Up
When the user taps the pop-up trigger, the list should display in such a way that the current selection is visible. If the list is large, try to adjust the scrolling so that the selection is in the center of the display. This way, the user has to do a minimum amount of scrolling to change the selection.
Present Items in a Logical Order
Position list items so that the most useful items are near the top. For example, if you are presenting a list of times of day, start the list with the most active part of the day, such as 8:00 AM. Do not start with midnight. If you enable incremental searching, as described below, present list items in alphabetical order.
Lists Do Not Execute Commands
On some desktop systems, pop-up lists can present a list of commands to the user. Such an interface is not allowed on Palm OS. Use command buttons or menus to execute commands.
Lists Are Not Hierarchical
Do not create a hierarchical pop-up list. Palm OS has no concept of a hierarchical structure for pop-up lists or menus because of the lack of screen space.
Use Incremental Search for Large Lists
Pop-up lists have an incremental search feature that the programmer can enable. This feature allows the user to select an item by writing Graffiti characters matching the first few characters in that item. Particularly if your list is large, consider enabling this feature; however, it is not widely known, so you should not rely on your users knowing about it. Enabling this feature requires the list to be presented in alphabetical order.
First List Item Is Default Selection
The initial selection for the list by default is the first item in the list. You can display a non-selection in the trigger, if applicable. For example, the Expense application defines no default expense type. Before an expense type is selected, the words "-Expense Type-" appear in the pop-up trigger. Use dashes in the default trigger to show that the item is a pop-up list. For example, the default trigger content might be "-Select-".
Provide a Label if Necessary
You can provide a label for the pop-up list if necessary, but doing so is not required. The content of the list trigger usually provides enough context for the user to understand the list's purpose.
Breaking the Rules
This section points out a few of the applications that break pop-up list guidelines and tells you if doing so is appropriate.
Commands in a Pop-Up List
In general, a list should not execute commands, but this rule can be broken if you want the user to edit the list (see Figure 5.12). For example, the Categories pop-up list often includes an Edit Categories item to allow the user to delete or add categories. If you want to present a series of command choices to the user, use command buttons or a menu.
Figure 5.12 Command in a pop-up list

Pop-Up Lists with No Trigger Arrow
In some cases, you may wish to forgo drawing the pop-up trigger's arrow. The Expense application does not display a pop-up trigger for its pop-up list (see Figure 5.13), and the To Do List application does not display a trigger for its priority list. They do not use the pop-up trigger arrow for the following reasons:
- The list sets a data field in the record, as opposed to setting a display option.
- The data field is set once for each record and rarely changed.
- The trigger detracts from the display of data.
- The pop-up list is a power-user feature. Each application uses the Details dialog as an alternate, more obvious way to set the field so that new users can find it.
If you want to omit the trigger arrow because it detracts from your data display, you may do so. You must provide an obvious method of setting the field for new users.
Figure 5.13 Pop-up trigger without arrow

Nonstandard Pop-Up Triggers
The section "Implementing a Combo Box" described three possible choices for implementing a combo box style element: a selector trigger with a modal form, a command button with a text field, and a pop-up list containing an Edit command.
To make it easy to add items to a pop-up list used as a combo box style element, some application designers have combined text fields with pop-up triggers that have nonstandard content. There are two competing styles of pop-up trigger used in this manner. Each style has its champions, but both have such deep design flaws that they are best avoided entirely.
Some designers use a pop-up trigger with no content (see Figure 5.14). If the user selects from the list that the trigger displays, the selection is copied into the text field appearing immediately to the right. If the user enters text in the field that does not match an item in the list, a new item is added to the list.
Figure 5.14 Pop-up list with no label

The advantage to this implementation is that it looks like a desktop combo box and it makes it easy to add a new item to the list. However, this design has two problems:
- Only the trigger is tappable. In a standard pop-up list, the user can tap either the trigger or its contents to see the list. Many users find the trigger alone too small to tap accurately.
- The only visual difference to indicate that the combo box element's usage differs from the standard pop-up list is the use of the dotted underline in the editable text field. Some users may find this difference too subtle and may wonder why tapping the text field does not display the pop-up list.
Other application designers use the text field's label as part of the pop-up list. For example, in Figure 5.15, the user can tap either the trigger to the left of the "Service" label or the "Service" label itself to select the network service displayed in the text field.
Figure 5.15 Pop-up list with static label

This implementation is not a good choice because many users expect the pop-up list to behave the same way the pop-up lists in the Address Book Edit form do; they expect the list to modify the word "Service," not the text field next to it.
Because both of these styles of combo box have usability problems, they are best avoided. For the particular form shown in Figure 5.14 and Figure 5.15, the selector trigger is the best fit because this form is used infrequently. If you have a form where the element is going to be used so frequently that you'd like to use a pop-up list instead, follow the recommendations in "Implementing a Combo Box": use a standard pop-up list. Include an Edit command in the pop-up list to allow the user to add items. To make it easy for users to add several items at once, include an extra command in your interface that displays a modal form where the user can freely edit the list items.
Push Buttons
Push buttons (see Figure 5.16) are analogous to radio buttons in a desktop application. They are designed to take less space than radio buttons—they do not need room for both the round button and the label next to it.
Both push buttons and pop-up lists allow a user to select one item from a series of items. Push buttons are easier to understand because they present all options on the screen at one time. A pop-up list hides all but the current selection. It is also easier to tap a push button than it is to navigate through a pop-up list.
Figure 5.16 Example push buttons

All push buttons in group should have same top (if horizontal row) |
|
Provide label if purpose of buttons not immediately apparent |
System Supplied Behavior
As long as you assign all of the push buttons the same group ID, the system ensures that the user can select only one button. If the user taps one button in the group, that button is highlighted, and the previously selected button is unhighlighted. Unlike a command button, a push button is not unhighlighted when the user releases the pen; a push button remains highlighted until another button in its group is selected.
Breaking the Rules
It's possible to create push buttons that aren't mutually exclusive by leaving the group ID unassigned. In fact, it's a common programming mistake. Because it is such a common mistake, such an interface is likely to look more like a bug than a feature to your users.
The Week view in Date Book's Change Repeat dialog uses non-exclusive push buttons to present the days of the week (see Figure 5.17). It's easy to see why this user interface element was chosen: it takes up far less screen space than a list of check boxes would. However, users expect items that look like push buttons to behave like push buttons. Many users will look at the dialog shown in Figure 5.17 with no days selected and believe that they cannot choose more than one day.
Figure 5.17 Non-exclusive push buttons

Selector Triggers
A selector trigger (see Figure 5.18) provides a value for a single field or option. Tapping it displays a modal form in which the user can change the value. When the form is dismissed, the selector trigger updates to show the newly selected value.

Table 5.6 Selector trigger details
System Supplied Behavior
The user taps the trigger once with the pen. When the user does so, Palm OS highlights the trigger momentarily while it is being pressed. Palm OS ensures that the trigger is not selected if the user drags the pen outside of the bounds of the trigger before releasing it.
Look and Feel
Follow these guidelines for the behavior and appearance of selector triggers.
Selector Triggers Display a Modal Form
Your application must ensure that the selector trigger displays a modal form and that upon return, the trigger's content changes to the value set using that modal form.
Do not use a selector trigger as a toggle button that toggles between states. Depending on the situation, a command button or a check box is more appropriate for this purpose.
Include a Label if Appropriate
It's usually appropriate to include a bold label that indicates what value the selector trigger sets. This label can be omitted if the selector trigger's placement or its setting make the trigger's purpose clear. The selector trigger in the Address Edit form's title bar is not labeled, for example, because its position and setting make it clear that it displays the category.
Breaking the Rules
This section points out a few of the applications that break selector trigger guidelines and tells you if doing so is appropriate.
Selector Triggers That Don't Update
The only triggers that are allowed not to update when the user has selected a value are triggers for password fields (see Figure 5.19). Password fields update from "Unassigned" to "Assigned" when the password is set the first time. From that point on, the selector trigger remains "Assigned" when the user changes the password.
Figure 5.19 Selector trigger for passwords

All other selector triggers must update to show the current selection or give some indication that the selection has changed. You can consider the password selector trigger's changing from "Unassigned" to "Assigned" as updating to show the current value at a much lower resolution than a normal selector trigger would. This is acceptable if you want the selector trigger to change some value that should remain hidden from view. If you want to create a trigger that doesn't update at all, consider using a command button instead.
Selector Triggers with No Modal Form
Some selector triggers do not display a modal form when tapped. The Address Edit and Memo Edit forms each use a selector trigger to display that record's category (see Figure 5.20). If you tap the selector trigger, the Category list is displayed rather than a modal form.
Figure 5.20 Selector trigger displaying a list

These two forms use a selector trigger for the category rather than a pop-up list to convey that the control performs a different function than the Category pop-up list the user sees on other forms. On other forms, the Category pop-up list simply filters the display of records. In contrast, the Category selector trigger on these forms changes the category in which the current record is filed, but does not change which record is displayed.
Why doesn't this Category selector trigger display a modal form that changes the record's category? Doing so would allow it to conform to the selector trigger interface guidelines, but it would increase the number of taps for this task from two taps to four. The application designers believe that minimizing the number of taps outweighs conforming to the guidelines in this instance. Keep in mind that novice users are more likely to set the record's category using the Details dialog.
That being said, the Category selector trigger on these two forms is widely considered to be an imperfect solution at best. Some users expect this control to be placed where it is and immediately understand its purpose. Other users confuse it with the Category pop-up list that controls the display on the main form.
Sliders
A slider (see Figure 5.21) represents a value that falls within a particular range. For example, a slider might represent a value that can be between zero and ten.

System Supplied Behavior
The slider has four attributes that determine its behavior. You set these when you create the slider:
- The minimum value the slider can represent
- The maximum value the slider can represent
- The initial value
- The page jump value, or the amount by which the value is increased or decreased when the user clicks to the left or right of the slider thumb
Palm OS updates both the slider appearance and slider value. When the user drags the thumb, the slider value updates accordingly. When the user taps the slider background to the left of the thumb, the slider value decreases by the page jump value and the thumb moves to the left the same amount. When the user taps to the right of the thumb, the slider value increases by the page jump value and the thumb moves to the right.
Palm OS supports two types of sliders: regular and feedback sliders. The difference between the two is entirely behavioral. If the user drags the thumb or holds down the pen within the slider bounds, the feedback slider continually updates the slider value and sends events as this happens. The regular slider waits until the user lifts the pen and then updates the slider value.
In most cases, a regular slider suffices. You only need a feedback slider if you want to provide further visual feedback to the user apart from the slider thumb moving. For example, if you have a field that shows the current value of the slider, you probably want to use a feedback slider (see Figure 5.22).

Look and Feel
Sliders are drawn using two bitmaps: one for the slider background, and the other for the thumb. If you use the default bitmaps, you should make the slider 15 pixels tall to allow room for the thumb, and you can make it as wide as you want.
The default bitmaps work well if the slider sets a numeric value. If your slider sets a more visual value, use a different background bitmap to show the user what dragging the thumb does. The brightness and contrast adjust forms each use a non-default bitmap (see Figure 5.23). If possible, make the bitmap as wide as it will display on the screen.
Figure 5.23 Non-default slider bitmap
