The Amulet user interface development environment uses hierarchical command objects to support the creation of highly-interactive graphical user interfaces. When input arrives or a widget is operated by the user, instead of invoking a call-back procedure as in most other toolkits, Amulet allocates a command object and calls its DO method. Unlike previous uses of command objects, Amulet organizes the commands into a hierarchy, so that low-level operations like dragging or selection invoke low-level commands, which in turn might invoke widget-level commands, which invoke high-level, application-specific commands, and so on. The top-level commands correspond to semantic actions of the program. The result is better modularization because different levels of the user interface are independent, and better code reuse because the lower-level commands, and even many high-level commands such as cut, copy, paste, text edit, and change-color, can be reused from the library. Furthermore, the commands in Amulet support a new form of Undo, where the user can select any previous operation and selectively undo it, repeat it on the same objects, or repeat it on new objects. In addition, operations like scrolling and selections can be undone or repeated, which can be very useful. Thus, the command objects in Amulet make it easier for developers by providing more reusable components, while at the same time providing new capabilities for users.
[1]
Henry Lieberman,et al.
Watch what I do: programming by demonstration
,
1993
.
[2]
David Lorge Parnas,et al.
Review of David L. Parnas' "Designing Software for Ease of Extension and Contraction"
,
2004
.
[3]
Brad A. Myers,et al.
Demonstrational interfaces: A step beyond direct manipulation
,
1992,
Computer.
[4]
Thomas Berlage,et al.
A selective undo mechanism for graphical user interfaces based on command objects
,
1994,
TCHI.
[5]
Richard N. Taylor,et al.
Chiron-1: a software architecture for user interface development, maintenance, and run-time support
,
1995,
TCHI.
[6]
Mark A. Linton,et al.
Unidraw: a framework for building domain-specific graphical editors
,
1990,
TOIS.
[7]
David E. Kieras,et al.
Automating interface evaluation
,
1994,
CHI '94.
[8]
Brad A. Myers,et al.
Extending Programming by Demonstration with Hierarchical Event Histories
,
1994,
EWHCI.
[9]
Roger B. Dannenberg,et al.
Garnet: comprehensive support for graphical, highly interactive user interfaces
,
1990,
Computer.
[10]
Brad A. Myers,et al.
A system-wide macro facility based on aggregate events: a proposal
,
1993
.
[11]
David A. Wilson,et al.
C++ Programming With Macapp
,
1990
.
[12]
Brad A. Myers.
A new model for handling input
,
1990,
TOIS.