The Amulet user interface development environment makes it easier for programmers to create highly-interactive, graphical user interface software for Unix, Windows and the Macintosh. Amulet uses new models for objects, constraints, animation, input, output, commands, and undo. The object system is a prototype-instance model in which there is no distinction between classes and instances or between methods and data. The constraint system allows any value of any object to be computed by arbitrary code and supports multiple constraint solvers. Animations can be attached to existing objects with a single line of code. Input from the user is handled by "interactor" objects which support reuse of behavior objects. The output model provides a declarative definition of the graphics and supports automatic refresh. Command objects encapsulate all of the information needed about operations, including support for various ways to undo them. A key feature of the Amulet design is that all graphical objects and behaviors of those objects are explicitly represented at run-time, so the system can provide a number of high-level built-in functions, including automatic display and editing of objects, and external analysis and control of interfaces. Amulet integrates these capabilities in a flexible and effective manner. Index Terms-Toolkits, user interface tools, user interface development environments, user interface management systems (UIMSs).
Providing a structured graphics model and a constraint system makes the programming of graphical applications significantly easier. In a structured graphics model, each graphic element on the screen is represented by a real object in the object system, while a constraint system automatically maintains relationships among the objects. Although many research systems and a few commercial environments provide structured graphics and constraints, none scale up to large interfaces with thousands of objects and thousands of constraints. This paper presents four techniques to overcome this problem: automatic elimination of constraints that depend only on values that do not change, layout hints to help with refresh and hit detection, "virtual aggregates" that only pretend to allocate objects for their components, and compiling composite aggregates into a single object with a complex draw method. These have been implemented as part of the Garnet environment, and we have demonstrated that together they allow structured graphics and constraints to scale up to applications with tens of thousands of objects and constraints without compromising the ease-of-use.
The Garnet User Interface Development Environment contains a comprehensive set of tools that make it significantly easier to design and implement highly-interactive, graphical, direct manipulation user interfaces. The toolkit layer of Garnet provides a prototype-instance object system, automatic constraint maintenance, an efficient retainedobject graphics output model, a novel input model, two complete widget sets, and complete debugging tools. Garnet also contains a set of interactive user interface editors that aim to make it possible to create the user interface without programming.Instead, the user draws examples of the desired graphics and demonstrates their behaviors. The associated video provides an overview of the entire Garnet system.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.