[net.cog-eng] A clever menu-traversal scheme

fcy@ihuxr.UUCP (Fred Yankowski) (01/06/84)

A recent article in *Software -- Practice and Experience*
describes an appealing scheme for providing a hierarchical
menu tree for user command selection.  As earlier net.cog-eng
articles have pointed out, two major problems with command
menus are that:

  1.  It is easy to become "lost" in the menu tree.

  2.  It is often a difficult and slow process to maneuver
      between remote parts or the menu tree.

The design presented (and implemented) by the authors
addresses both of these	problems using two related
techniques.

  1.  The users	current	position in the	tree is	always
      displayed	(on a bit-mapped device	in this	case) as the
      list of menu "nodes" from	the root of the	tree to	the
      current position.	 This list is presented	as a stack,
      with each	menu selection adding an item to the bottom
      of the downward-growing stack.  The menu choices
      available	at the current node are	displayed just below
      the bottom of this stack.

  2.  The system remembers the last selection made from	each
      node and makes it	the default when the node itself is
      next selected.  As a result, selecting one of the	top
      nodes in the tree	may result in a	default	path all the
      way to a "leaf" node.

The first problem mentioned above (location) is	nicely
solved by the stack-like display of the	current	position
which reminds the user exactly how the current node was
reached	and where alternate choices might have been made in
this path.  Maneuvering	within the tree	is simple and quick
given the following method for choosing	the next node.

Selection   Downward movement in the tree is accomplished by
	    selecting one of the menu items available at the
	    current node (ordinary enough).  However, the
	    defaults established at lower nodes	may cause
	    the	user's position	to advance several steps
	    down into the tree.	 This is safe because it is
	    very easy to back up (described next) and menu
	    traversal does not cause any side effects until
	    the	user commits to	a leaf node via	a separate
	    "trigger".

Rejection   The	user may "back up" in the menu tree by
	    canceling one of the values	in the path stack
	    mentioned earlier.	This "pops" the	stack back
	    to the node	above the cancelled node, providing
	    the	menu that included the cancelled node.
	    Default paths are *not* taken from this new
	    node.

The resulting mechanism	would seem to be very convenient and
natural	as there are only two traversal	operations:
selection and rejection.

The complete reference for the article is:

Publication:	 Software -- Practice and Experience
Authors:	 Apperley, M.D.	and Spence, R.
Article	title:	 Hierarchical Dialogue Structures in
		 Interactive Computer Systems
Volume:		 13, 1983.
Pages:		 777-790


			Fred Yankowski
			ihnp4!ihuxr!fcy
			AT&T - Bell Laboratories
			Naperville, Illinois