Toolbox/Toolbar Requirements
by Mike Pinkerton
Last Modified 3/12/99
Overview
This document covers two related UI elements: Toolboxes and
Toolbars.
A Toolbar is a bar which contains arbitrary HTML (but
normally XUL elements). The look of the toolbar can be customizable
through CSS and is smart enough to wrap to multiple lines if there
are too many elements on it to fit within a single line. Toolbars can
live anywhere within a XUL window, not just at the top.
A Toolbox contains one or more toolbars and is used to
group multiple bars together so the user can rearrange, collapse, and
hide individual toolbars within the box. Within the toolbox, each
toolbar gets a "grippy" which is the mechanism for collapsing (by
clicking inside it) or rearranging (by dragging the grippy). When a
toolbar is collapsed, it appears only as a horizontal grippy in a
special area below all visible toolbars. This area is hidden when no
toolbars are collapsed. Clicking on the horizontal grippy associated
with the toolbar will make it reappear in its previous position.
Requirements
What We Are Doing For Toolboxes:
- Pick up style, colors, and backgrounds from stylesheets
- Specify grippy look via style sheet (background-image as well,
as long as it isn't of fixed size)
- Show or hide toolbars (4.x behavior)
- Be able to collapse down to a tab and expand by clicking on
that tab (4.x behavior)
- Toolbars can be rearranged within a toolbox but each toolbar
takes the entire horizontal space of the toolbox (can't have two
toolbars on same line) (4.x behavior)
- Allow toolbars to grow to a multiple rows if its content
cannot shrink to fit in the available space.
- The toolbox will be modifiable at runtime through the DOM APIs
(adding and removing toolbars, etc)
- Local/Remote merging will be done by hooking up a toolbox to
an RDF data source
- Toolbox content can be generated from an RDF data source (eg,
the toolbar list)
- Tooltips on collapsed grippies
What We Are Doing For Toolbars:
- Pick up style, colors, and backgrounds from stylesheets
- Each toolbar button should grow/shrink to fit the text. I.e.
when font changes, English->German, etc.
- Items can display images only, text only, or a mixture of both
(4.x behavior)
- Toolbar items should be able to specify they want to expand to
the available space (url bar, for example)
- Allow toolbars to grow to a multiple rows if its content
cannot shrink to fit in the available space.
- Allow specification of minimum/maximum width of toolbar
elements
- Toolbar items can be right justified (eg, throbber)
- Drag items between (or within) toolbars to rearrange
- Delete items from toolbars with drag and drop
- Items can have rollover feedback or not, specified by style
sheets
- Items can have tooltips
- The toolbar will be modifiable at runtime through the DOM APIs
(adding and removing items, etc)
- Local/Remote merging will be done by hooking up a toolbar to
an RDF data source (eg, for Personal Toolbar)
- Toolbar content can be generated from an RDF data source
- Can have context menus, activated by a context-click on any
empty space in the toolbar
What We Are NOT Doing:
- Toolbar buttons will not necessarily be the same size across a
toolbar.
- Grippies that represent collapsed toolbars will not be as wide
as the toolbar is tall (taking the toolbar height from before it
was collapsed as in 4.x). Instead they will be of a consistant
size.
- The animation will always remain on the main toolbar,
regardless of that toolbar's visibility or location. This is
different from 4.x Win32 behavior, but is how 4.x MacOS
behaved.
- Allowing the buttons to be arranged right-to-left (needed for
Arabic and Hebrew). This would need to be done by modifying the
XUL, or the RDF data source which generates the toolbar DOM.
maintained by Mike
Pinkerton (pinkerton@netscape.com)