The Patterns 51
Why
This pair of panels—a palette with which to create things, and a canvas on which to put
them—is so common that almost every user of desktop software has seen it. It’s a natural
mapping from familiar physical objects to the virtual on-screen world. And the palette
takes advantage of visual recognition: the most common icons (paintbrush, hand, mag-
nifying glass, etc.) are reused over and over again in different applications, with the same
meaning each time.
How
Present a large empty area to the user as a canvas. It might be in its own window, as in
Photoshop (Figure 2-20), or embedded in a single page with other tools. The user just
needs to see the canvas side by side with the palette. Place additional tools—property
panels, color swatches, and so on—to the right or bottom of the canvas, in small palette-
like windows or panels.
The palette itself should be a grid of iconic buttons. They can have text in them if the icons
are too cryptic; some GUI-builder palettes list the names of GUI components alongside
their icons, for instance. So does Visio, with its palettes of complex visual constructs tai-
lored for specific domains. But the presence of icons is necessary for users to recognize
the palette for what it is.
Place the palette to the left or top of the canvas. It can be divided into subgroups, and you
may want to use
Module Tabs or Collapsible Panels to present those subgroups.
Most palette buttons should create the pictured object on the canvas. But many builders
have successfully integrated other things, such as zoom mode and lassoing, into the pal-
ette. This started early; MacPaint mixed its modes into its palette (see Figure 2-24) and
people have learned what the arrow, hand, and other icons do.
The gestures used to create items on a palette vary from one application to another. Some
use drag-and-drop only; some use a single click on the palette and a single click on the
canvas; and some use
One-off Modes, Spring-Loaded Modes (see the previous edition of
this book for both of these patterns), and other carefully designed gestures. I have always
found that usability testing in this area is particularly important, since users’ expectations
vary greatly.
Examples
The Raven vector editor (Figure 2-21), by Aviary, and Sumo Paint (Figure 2-22) are two
web-based graphic editors that follow this pattern faithfully.