			README for FileChooser
				   
			   George Ferguson
		      ferguson@cs.rochester.edu
				   
		       Last Change: 28 Jan 1993


Description

    This file documents the FileChooser widget, which provides an
    interface like that shown below (in ASCII) for selecting a file from a
    directory:

	    +==================================+
	    |+--------------------------------+|
	    ||     /parent/parent/dir         ||
	    |+--------------------------------+|
	    ||# File1                         ||
	    ||# File2                         ||
	    ||# Subdir/                       ||
	    ||# File3                         ||
	    ||#                               ||
	    |+--------------------------------+|
	    +==================================+

    The top component is a MenuButton that, when clicked on, presents a
    menu of the ancestor directories of the current directory. The bottom
    component is List that presents the contents of the current directory.
    The FileChooser widget's callbacks are called whenever the selection
    changes. Selecting a subdirectory causes its contents to be displayed.

    This widget is meant to function within, say, a Form, which would
    provide buttons and perhaps a Text item for entering new filenames.
    The test program FChooserT.c illustrates such usage.

    Use of the FileChooser widget requires the Dir package from the
    Free Widget Foundation (free-widgets-request@kazoo.cs.uiuc.edu).

Implementation Notes

    FileChooser is based on the FileSelector widget by Brian Totty
    (totty@cs.uiuc.edu). The major differences are as follows:
	- FileChooser does not provide any buttons or Text widgets,
	  just the directory menu and list of files. Thus it is meant
	  to be used within a larger application, for example, to
	  allow new filenames to be entered. Because of this, it does
	  not enforce any particular policy regarding selections.
	- FileChooser uses a MenuButton and a dynamically generated
	  SimpleMenu to present the ancestor directories, similar to
	  the Macintosh (tm) interface. This results in about a 50%
	  saving in screen real estate.

    FileChooser attempts to resize its children whenever it is
    resized. It makes both the MenuButton and the List as wide as the
    FileChooser, and makes the List occupy the entire bottom of the
    FileChooser (with a small gap below the MenuButton). The string
    being displayed in the MenuButton (the current directory) is
    adjusted if it is too long to fit in the given width: it is
    right-aligned, with a "<" at the left edge to indicate truncation.
    It would be nice if the "justify" resource of the MenuButton
    looked after this, but c'est la vie.
