Heh, heh - you said "tool"
I've been reading a lot of rants like this one recently, where at some point or another the author complains about Apple's Safari browser not using NSToolbar. I'm here to tell you, folks: NSToolbar sucks.
The first reason NSToolbar sucks, and most likely the one that caused Safari not to use it, is that it's too big. I know you can set all sorts of options to make it smaller (icon only, text only, small icons), but by default it's ginormous. Safari's browser window was obviously designed to waste as little vertical real estate as possible and in that it succeeds admirably. Any design using NSToolbar would have wasted twice as much space by default, and most users don't change defaults.
The second reason for suckage is that toolbar items offer no prior warning as to what exactly they're going to do when you click on one. The AirPort Admin Utility's main window, for instance, has a toolbar item named "Other". I don't know about you, but I've never wanted to other my AirPort Base Station; the concept just doesn't appeal to me. "Other" actually presents a sheet that allows one to pick which other Base Station to configure, but it's not as if there's an ellipsis in the toolbar item's name to tell me that a sheet/dialog is going to appear before any othering actually occurs.
Lastly, Apple has gotten this strange idea in their heads that NSToolbar is an appropriate control for navigational use. Quick, go to System Preferences and tell me which pane is selected. Bzzt! System Preferences can actually be in one of two states, neither of which is actually reflected by the toolbar itself: it can either be showing a list of all available preference panes, or it can be showing a particular preference pane. In neither case does the actual static appearance of the toolbar change, so the only way to divine the current state of System Preferences is to read the window title. This particular toolbar could easily draw the current preference pane's name in bold or highlight its icon, but that sound you just heard was the other shoe dropping: toolbars can actually behave in at least two unrelated ways, yet they offer no indication thereto. You see, toolbars can either be used as an actual toolbar, where dragging has no effect and configuration is accomplished via control-clicking, or they can be used as a repository for dragged items, where no further configuration is possible. Since System Preferences's toolbar acts in the latter fashion, it couldn't indicate the current pane since its icon probably isn't visible.
And this is the control Safari should have used for its browser windows?
Posted by ned at February 16, 2003 05:03 PM