A quick glimpse into the product design world - here are some of the
attitudes I've seen on the product team related to this issue...
Attitude #1 - It's a usability problem to have the contents of menus be
particularly dynamic. People tend to learn what's on those menus, learn to
expect particular menu items to come right after/before other items, etc. If
you change the arrangement of the menus in response to some external state
you risk confusing people. Hence disabling a menu item when it can't be
used is usually more helpful than having it disappear.
Attitude #2 - Yeah, well, that's perhaps true for commands that
enable/disable relatively frequently. Like, say, a "Format Font" command
that can't be used when the selection is a Picture. It's much less true for
commands whose "enabledness" isn't likely to change very often. Like, say,
whether Outlook 2003 is installed or not. So for such commands it's
reasonable to consider having them disappear instead of gray out.
Attitude #3 - Disabled commands on menus are themselves somewhat confusing -
can a user actually tell why a particular command is disabled? Better to
hide the command entirely.
Attitude #4 - Disabled commands on menus are just plain ugly and we
shouldn't let it happen on asthetic grounds.
Attitude #5 - Menus need to always drop "snappily" without any significant
pause. Walking through all the commands on a menu figuring out whether
commands on it should be active or grayed out or hidden is surprisingly
CPU-expensive (it tends to mean asking lots of questions like "is
application X installed"). Diving into the sub-menus on the menu (and
further onto the sub-sub-menus on those sub-menus) takes even more time.
Starting up OneNote and dropping the File Menu to choose File Open shouldn't
force the user to wait (the very small pause, admittedly, on most speedy
machines) while we go figure out if a particular versionof Outlook
installed, just to decide whether or not the "Send To" menu item should be
active or disabled. That work should all be delayed until the user actually
expands the "Send To" sub-menu.
Attitude #6 - Having sub-menus themselves gray out just because eveything on
them is grayed out is a wacky idea. Even if all of the commands on a
particular sub-menu are disabled, might I not still want to be able to read
the list of commands on that menu just to see what's there? There's
something vaguely obnoxious and condescending about a disabled menu - it
sort of says "We're not going to let you look in this room and see what's
there."
Attitude #7 - Both grayed-out and disappeared commands are a mistake,
because they don't help a user understand why a particular commmand isn't
available. Instead all commands should be there all the time and if you
click on one that isn't immediately applicable you should get an error
message explaining why.
Obviously there's plenty of tension between some of these attitudes (none of
which is obviously wrong).
- Peter Engrav (MS, OneNote Dev Manager)