Integrating multi-way and structural constraints into spreadsheet programming
William Joseph Rosener · 1994
Writing interactive graphical user interfaces has traditionally been a very time consuming and difficult process. To speed up the development process, many modern user interface development environments are using constraints to specify the graphical layout and behavior of objects. Constraints are relationships between objects that are defined once and then automatically maintained by the system. Most graphical user interface toolkits support single-output, one-way constraints. We have investigated how multi-output constraints, structural constraints, and multi-way constraints can be used to enhance the power and flexibility of the spreadsheet programming paradigm. These new constraints increase efficiency, allow more powerful relationships to be expressed, and facilitate maintaining consistency between data structures. Multi-output constraints can result in greater efficiency by allowing the reuse of computations and reducing the number of formula objects maintained by the system. Structural constraints allow the user to define relationships between the structure of objects. These constraints make it possible for a constraint to add, delete, or modify a structure. The ability to define structural relationships and have a constraint solver automatically modify objects to maintain these relationships can lead to a further reduction in the effort required to construct a graphical interface. Multi-way constraints allow any of the objects in the constraint to be changed in order for it to be satisfied. These constraints can greatly simplify maintaining consistency between application data and its display, and maintaining consistency between multiple views, because they allow information to flow both ways through a constraint. Finally, as a test of our extensions to the spreadsheet programming model, we have developed and implemented an object-oriented toolkit for creating highly interactive, direct manipulation, 3-dimensional user interfaces. The toolkit has experimentally been used in a graphics course and has substantially reduced the amount of time required to create applications involving the direct manipulation of 3D objects.