The Second Edition is out!
Visit to read excerpts and learn more.

One-Off Mode

One-off shape creation in Omnigraffle


When a mode is turned on, perform the operation once. Then switch back automatically into the default or previous mode.

Use when:

In the editor you build, users don't normally repeat or iterate over certain operations, such as object creation. Usually, a user performs the operation only once, and then he immediately wants to do something else, like manipulate the object he just created.


Users will find it annoying to switch into a mode, do one little thing, and then explicitly switch out of that mode again. Doing so often involves clicking on small "hit targets" in palette windows far away from the working canvas, which takes up time and energy. Too much "clickiness" in an interface is a known irritant.

Instead, the interface should do that which makes the user's job easier, even if it's not easy to program, or isn't consistent across all the palette items. Several builder programs use one-off modes, so your users will likely be familiar with the idea.

Also, modes are tricky. A user can forget which mode is currently active in a program, and take actions that have unintended consequences. When using one-off modes, that's less likely; the user can't get "stuck" in that mode.


The hardest part of implementing One-Off Mode is deciding which operations ought to use it. Object creation typically uses it. Zooming, lassoing, paint strokes (despite being "objects" in the programming sense) typically don't. Find out which graphical editors your users are most familiar with, and see what those editors do.

This is a design decision best made when you really know your users' work habits. If they do want to create several similar objects in a row, then having to go to the palette to start each individual object will irritate them.

Many applications that use a one-off mode have a "secret" version of the mode that allows multiple operations (thus behaving like a regular mode). You can often invoke it by holding down a key, like Shift, while clicking the mode's button, but it varies across applications.


An example walkthrough might clarify this concept. Consider a drawing tool in which mouse-clicking on the canvas normally selects objects underneath the mouse pointer.

  1. The user clicks the "Create rectangle" button on a palette. The UI goes into a special creation mode, indicated by a rectangle cursor. Now clicking on the canvas will place the object and not select anything.
  2. The user clicks down on the canvas, to place the upper-left corner.
  3. The user moves the mouse and releases the button to place the lower-right corner.
  4. The UI, having noted the click-drag-release and created the rectangle, leaves the rectangle-creation mode and goes back to the default mode, in which clicking means selection.
  5. The user is now free to select objects, move them, and resize them without having to go back to the palette to change modes.