Direct manipulation user interfaces can be constructed by end-users, with no programming required. Users draw their GUIs with an intuitive drawing tool and declaratively define relationships and behavior.
EUPHORIA is a module of the The Programmers' Playground. This means that user interfaces are completely decoupled from their applications. The GUI and its underlying application can run on separate machines, allowing concurrent processing. This feature also makes EUPHORIA well suited to multi-user applications, where each user has a customized view of an application.
EUPHORIA uses a constraint solver that I have developed called UltraBlue. Constraints are used for both internal intraprocess communication, as well as user defined relationships between graphics objects. UltraBlue is efficient, using incremental updates of its constraint graph data structure, while at the same time intelligently avoiding cycles of constraints. Constraints in UltraBlue are also hierarchical, which means that different constraints can have different levels of preference. This gives users a high degree of control when specifying a series of constraints.
EUPHORIA provides high level mechanisms for dealing with collections of graphics objects. Imaginary objects are used to define sophisticated, indirect relationships between graphics objects. Widgets are user-definable encapsulated groupings of graphics objects, with a well-defined interfaces for controlling published attributes. Alternatives allow you to define different representations or ways of viewing a widget under different circumstances. Aggregate Mappings provide a mechanism for "mapping" a collection of information such as an array or set to a visualization of the elements.
The event system of EUPHORIA was custom made to allow high level graphics processing. Double buffering is utilized for smooth animation. Updates to the graphics window are synchronized and managed to minimize the amount of drawing needed to be done by the application. Graphics are actually manipulated in real-time, rather than using xor outlines during manipulation.
Events and updates are processed "concurrently", providing natural, "modeless" operations. For example, in most commerical applications when you select a menu, all other operations and animations come to a screeching halt! In EUPHORIA, all direct manipulation can be done at the same time as animation and updates from external applications.
EUPHORIA is written in X windows, which makes it usable on many different machines. Only a subset of the features of Xlib was utilized. Calls to this functionality are well encapsulated into a software component consisting of only about 1000 lines of code. It would not be difficult to port this component to another graphics package, such as the Macintosh OS.
EUPHORIA currently runs under X Windows on Solaris and Silicon Graphics IRIX operating systems. It is also being ported to Windows NT.