Human Interface Notes
_____________________________________________________________________________

Note #5    What "Cancel" Means
    
           Written by:  John Sullivan                            January 1990
_____________________________________________________________________________

"Cancel" means "dismiss this operation, with no side effects."  It does not
mean "done with the dialog box," "stop what you are doing no matter what,"
or anything else.
_____________________________________________________________________________

When to use Cancel

In alert or dialog boxes, use Cancel for the name of a button that closes the
alert or dialog box and returns the system to the state it was in before the
alert or dialog box was displayed.  When a lengthy operation is in progress, 
use Cancel for the name of a button that dismisses the operation and returns 
the machine to the state it was in before the operation began, with no side 
effects.


What to do the rest of the time

When it is impossible to return to the state that existed before an operation 
began, do not use the word Cancel.  Two common alternatives, useful in
different situations, are OK and Stop.

In alert or dialog boxes, use OK for the name of a button that closes the alert
or dialog box and accepts any changes made while it was displayed.  For
confirmation alerts (alerts that say, essentially, "Are you sure you want to
do this?") and many simple dialog boxes, it is better to use a word or two that
succinctly describes what accepting the alert or dialog box means, such as 
Revert or Change All.

When a lengthy operation is in progress, use Stop for the name of a button 
that halts the operation before its normal completion, accepting the possible 
side effects.  Stop may leave the results of partially-completed tasks around, 
but Cancel never does.


Some correct examples

Following is a series of examples of proper uses of Cancel 
and its cousins.

|--------------------------------------------------------------------|
| ================================================================== |
| |     /\            Revert to the last saved version             | |
| |    /  \           of "The Big Red Book"?                       | |
| |   / !  \                                                       | |
| |   ------                                                       | |
| |                                                                | |
| |                          ___________        #############      | |
| |                         /  Cancel   \     //    Revert   \\    | |                                                      
| |                         \___________/     \\_____________//    | |
| |                                             #############      | |
| |================================================================| |
|--------------------------------------------------------------------|

                     Figure  1 - Confirmation alert

The alert in Figure 1 uses Revert instead of OK, since Revert 
neatly sums up what accepting the alert means.                 
                     
|--------------------------------------------------------------------|
| ================================================================== |
| |                  Cat Detector (tm)  options                    | |
| |                                                                | |
| |    Pinpoint a purr at:      Cat licence price  (L):            | |
| |                                                                | |
| |    O  40 yards                           +                     | |
| |    @  60 yards                      15   |                     | |
| |    O  80 yards                           -                     | |
| |                           ___________        #############     | |                                              
| |                          /  Cancel   \     //     OK      \\   | |
| |                          \___________/     \\_____________//   | |
| |                                              #############     | |
| |================================================================| |
|--------------------------------------------------------------------|

          Figure 2 - More Complex dialog with Cancel and OK

The dialog box in Figure 2 uses OK because there is no succinct term to 
describe what accepting the changes in the dialog box means.

 |------------------------------------------------------------------|
 | ================================================================ |
 | |                            Custom Formats                    | |
 | |                           --------------                     | |
 | |      _______________________________        __________       | |
 | |      |##That Format ############|/\|       /   New    \      | |
 | |      |##########################|__|       \__________/      | |
 | |      |                          |  |        __________       | |
 | |      |  This Format             |  |       /  Remove  \      | |
 | |      |                          |  |       \__________/      | |
 | |      |  Yet Another Format      |  |        __________       | |
 | |      |                          |  |       /  Modify  \      | |
 | |      |                          |  |       \__________/      | |
 | |      |                          |  |        __________       | |
 | |      |                          |__|       /   OK     \      | |
 | |      |                          |\/|       \__________/      | |
 | |      |__________________________|__|                         | |
 | |                                                              | |
 | |==============================================================| |
 |------------------------------------------------------------------|

        Figure 3 - More complex dialog with OK instead of Cancel

The dialog box in Figure 3 uses OK because it doesn't throw away all the 
changes that were made since the dialog box was first drawn.  If the button
were named Cancel instead, clicking it would remove any formats created since 
the dialog box was drawn, bring back any formats removed since the dialog box
was drawn, and undo any changes that had been made by selecting a format and 
clicking Modify since the dialog box was drawn.
                  
        |-------------------------------------------------|
        | =============================================== |
        | |                                             | |
        | |  Inserting the file "Really long document"  | |
        | |  into "Wombat data" ...                     | |
        | | ________________________________  ________  | |
        | ||###### ////////////////////////| / Cancel \ | |
        | ||######/////////////////////////| \________/ | |
        | ||-------------------------------|            | |
        | |                                             | |
        | |=============================================| |
        |-------------------------------------------------|

           Figure 4 - Progress indicator that uses Cancel

The dialog box in Figure 4 uses Cancel because clicking the button leaves
the document named Wombat Data in the state it was in before the Insert 
File command was chosen.

        |-------------------------------------------------|
        | =============================================== |
        | |                                             | |
        | |  Inserting the file "Really long document"  | |
        | |  into "Wombat data" ...                     | |
        | | ________________________________  ________  | |
        | ||########///////////////////////| /  Stop  \ | |
        | ||########///////////////////////| \________/ | |
        | ||-------------------------------|            | |
        | |                                             | |
        | |=============================================| |
        |-------------------------------------------------|

            Figure 5 - Progress indicator that uses Stop

The dialog box in Figure 5 uses Stop because clicking the button stops 
inserting text into the document named Wombat Data, but it doesn't remove 
the text that has already been inserted.
