"Watch What I Do" Chapter 10
Uses of Demonstrational Techniques
Brad A. Myers
Garnet is a comprehensive user interface development environment in Lisp for
X/11 (Display Postscript and Macintosh versions are in progress). It helps
create graphical, highly-interactive, direct manipulation user interfaces.
Garnet contains many high-level tools, including the Gilt interface builder
[Myers 91d], the Lapidary interactive design tool [Myers 89b], the C32
spreadsheet system [Myers 91a], the Jade dialog box system [Vander Zanden 90],
and more to come. Garnet also contains a complete toolkit, which uses
constraints [Vander Zanden 91a], a prototype-instance object model, and a new
model for handling input [Myers 90c]. The toolkit also contains two complete
widget sets, one with the Motif look and feel.
Typical applications created with Garnet include: drawing programs similar to
Macintosh MacDraw, user interfaces for expert systems and other AI
applications, box and arrow diagram editors, graphical programming languages,
game user interfaces, simulation and process monitoring programs, user
interface construction tools, CAD/CAM programs, etc. Garnet is in the public
domain and is freely available. As of fall, 1992, over 30 projects around the
world are using the system regularly. You can get Garnet by anonymous FTP from
a.gp.cs.cmu.edu. Change to the directory /usr/garnet/garnet/
and retrieve the README file for instructions. Or you can send
electronic mail to firstname.lastname@example.org. Garnet stands for
Generating an Amalgam of Realtime, Novel
Editors and Toolkits.
One of the important goals of the Garnet project is to allow all aspects
of the user interface to be created without conventional programming. In
particular, we want to allow the user to draw example pictures to show
what the user interface will look like, and then demonstrate how the
user interface will respond to inputs from the end user. As a result,
demonstrational techniques are widely used in Garnet, mainly in the various
higher-level tools. This chapter discusses some of these. Other papers about
Garnet discuss the overall design [Myers 90d], the components, the programming
style [Myers 92a] [Myers 92e], and there is a complete reference manual [Myers
Garnet -- Lapidary, C32, Gilt
Uses and Users
Application domain: User Interface Development Environment
Intended Users: Primarily programmers
How does the user create, execute and modify programs?
Lapidary: Dialog boxes are used to establish graphical constraints on example objects, and the constraints will be generalized and applied to runtime application objects. Also, an example object can be used to demonstrate how an application object's properties should change in response to a mouse click.
C32: The user can copy and paste a formula from an example slot, and it will be generalized so that it will be applicable to the destination slot.
Gilt: To generate filter expressions, the user can give an example of a return value in the proper format and data type. The user can also demonstrate how certain values of one widget should enable or disable another widget. For styles, an example widget with the correct styles is created.
Feedback about capabilities and inferences:
Lapidary: Shows the inference in dialog boxes.
C32: Dialog boxes show the inferences, and the user must hit the "OK" button.
Gilt: When inferring a graphical style, the style is immediately applied, so the object's appearance will change. Also, the style name is displayed. For filter expressions, the inferred Lisp code is displayed.
Inferencing: Garnet applies fixed heuristics based on domain knowledge.
Note that the inferencing is based on resulting graphical objects, not on a
trace of actions.
Program constructs: Variables
Types and sources of information: Hard-wired into the various
C32: Information associating slots with physical locations on an object. Information about typical copy-paste transformations.
Machine, language, size, date: X/11 and Common Lisp. Various platforms.
back to ... Table of Contents Watch What I Do