5. A computer-implemented method of exposing commands in a software application program, the computer-implemented method comprising: automatically displaying, by a computer, a window on a display device, the window generated by the software application program, the software application program operating at the computer, the window containing a work area and a controls area, the work area containing a document, the controls area not initially containing a first context block; storing, by the computer, a plurality of context blocks at one or more computer-readable storage media, the plurality of context blocks including the first context block, each context block in the plurality of context blocks comprising Hyper-Text Markup Language (HTML) code that specifies a title and a set of selectable commands executed by the software application program, the title of identifying a task, the set of commands useful to a user in accomplishing the task; storing, by the computer, a table containing a plurality of entries, each entry in the table associating a context block in the plurality of context blocks with an individual visibility expression in a plurality of visibility expressions, each individual visibility expression in the plurality of visibility expressions defining conditions that describe one or more aspects of an interaction of the user with the document; storing, by the computer, each visibility expression in the plurality of visibility expressions as an individual tree data structure in a plurality of tree data structures, each individual tree data structure in the plurality of tree data structures comprising an overall set of nodes, each node in the overall set of nodes being an independent data structure, the overall set of nodes consisting of a root node and a set of child nodes, each node in the set of child nodes being a child of one other node in the overall set of nodes, the overall set of nodes consisting of a set of leaf nodes and a set of non-leaf nodes, no node in the overall set of nodes being a child of any node in the set of leaf nodes, the root node not being a child of any node in the overall set of nodes, each node in the overall set of nodes being associated with a value, each node in the overall set of nodes associated with a Boolean expression, the Boolean expression associated with each leaf node in the set of leaf nodes being dependent on different aspects of a current context of the user within the software application program, the Boolean expression associated with each non-leaf node in the set of non-leaf nodes taking as operands the values associated with each of the child nodes of the non-leaf node; automatically ascertaining, at the computer, that the user has changed a position of a cursor, the cursor being within the document; in response to ascertaining that the user has changed the position of the cursor, automatically changing, at the computer, the value associated with a first leaf node in a first tree data structure in the plurality of tree data structures, a first visibility expression in the plurality of visibility expressions stored as the first tree data structure, the plurality of entries containing a first entry, the first entry associating the first context block with the first visibility expression; automatically ascertaining, at the computer, that the user has selected text within the document; in response to ascertaining that the user has selected the text, automatically changing, at the computer, the value associated with a second leaf node in the first tree data structure; automatically ascertaining, at the computer, a type of the document; in response to ascertaining the type of the document, automatically changing, at the computer, the value associated with a third leaf node in the first tree data structure; each time a value associated with any child node changes, generating, at the computer, a notification to a parent node, the computer generating the notification in response to the change in the value associated with the child node, the parent node and the child node being nodes in the plurality of tree data structures, the child node being a child of the parent node; each time a recipient node receives a notification, evaluating, at the computer, the Boolean expression associated with the recipient node to ascertain whether the value associated with the recipient node changes, the computer evaluating the Boolean expression associated with the recipient node in response to the notification, the recipient node being a non-leaf node in the set of non-leaf nodes in the plurality of tree data structures; and displaying, by the computer, for the user, in the controls area of the window, the title specified by the first context block and the set of selectable commands specified by the first context block when the root node of the first tree data structure changes from a first value to a second value.
6. The computer-implemented method of claim 5 , wherein each visibility expression in the plurality of visibility expressions is a Boolean expression.