Joel Spolsky recommends not disabling menu items in context where they can’t be used:
Instead, leave the menu item enabled. If there’s some reason you
can’t complete the action, the menu item can display a message
telling the user why.
This is why Spolsky is a Windows developer, not a Mac developer. Disabling menu items when they can’t be used is a fine practice — it means that the visual state of a menu item reflects the actual state of the command it represents. One can argue that this can be confusing for users who don’t understand why a particular menu item is currently disabled, but it’s a classic trade-off. Spolsky’s suggestion — that you leave all menu items enabled all the time and show an alert when they’re chosen but can’t be used — would be irritating as hell every time you ran into it. (I’m reminded of Mac apps which don’t supply any Help content but which leave the default Help menu in place, with an “AppName Help” menu item that does nothing but show an alert stating that “Help is not available for AppName.”)
Spolsky’s suggestion is also predicated on the assumption that the user is stupid. Better is to assume that the user is clever and curious and will be able to figure out for themself why a certain command is currently disabled.
★ Tuesday, 1 July 2008