CS 66-460
Introduction to Graphical Human Machine Interfaces
An Overview of User Interface Software
Advanced Techniques
WEDNESDAY, MARCH 19, 1997
Instructor: G. Bowden Wise
Rensselaer Polytechnic Institute
Spring 1997
Software tools can reduce the effort required to build GUIs:
- Toolkits
- Virtual Toolkits
- Application Frameworks
- Interface Builders
- Prototyping Tools
We still have a long way to go to help with things like:
- the ``insides of applcation windows''
e.g., drawing application specific objects
- maintaining relationships in the interface
e.g., widget layout, views and data couplings, etc
- cross-platform development
- built-in support for help, undo, abort
- automatic creation of parts of the interface from a specification
- evaluation of a resulting interface
Advanced Techniques
Research is showing promise for novel approaches:
- Demonstrational interfaces
- allow the user interface designer to draw example graphics
of the interface, and then to demonstrate the interactive
behaviors to show how the interface should react to the user
- Constraint systems
- Relationships between objects are declared once and then
maintained by the system
Motivation:
Need for Interactive, Graphical Tools
Direct Manipulation
- Allows the manipulation of objects by directly moving objects
with the mouse and setting properties
- Example: Interface builders, VisualBasic
- Limited to the static parts of the interface
- No way to point at objects created or drawn by the user
Interactive Tools Improves Productivity
- Frameworks can improve productivity by factors of 3-5
- Interactive editors (e.g., interface builders) improve productivity
by factors of 10-50 (!)
- It is more natural to specify graphical parts of an application using
a graphical editor
- Graphical interaction does not require programming; can be used by
non-programmers like graphic designers
Demonstrational Interfaces
- allow users to perform actions on concrete ``example objects''
(often by direct manipulation)
- the actions ``demonstrate'' the desired result using example values
- the system then generalizes those actions to produce a general
purpose procedure or prototype
- very hard problem: no commercial systems yet
Demonstrational Interfaces
Illustrative Examples
delete all postscript files in a directory
- user drags ``file1.ps'' to the trashcan
- user drags ``file2.ps'' to the trashcan
- the system infers that a similar action is being performed twice
and pops up a dialog box asking the user if he wants all
postscript files to be deleted
automatic widget layout
- user draws examples of the objects that will be created at run-time
- user draws objects in approximately the right places and the system
- the system then generalizes those operations to produce a general
purpose procedure or prototype
Peridot
( Meyers, 1986-1988 )
PROGRAMMING BY EXAMPLE FOR REAL-TIME INTERFACE DESIGN OBVIATING TYPING
- First demonstrational tool, used by-example techniques to allow
the creation of new widgets
- Goal: users can create interface without programming
- The user draws what the widgets look like, then moves the mouse
around pressing buttons to demonstrate behavior
- From the drawing, it uses AI techniques to infer:
- graphical constraints among the objects
e.g., boxes should be the same size as the text
- control structures
e.g., iteration over all the items in a menu
- how the mouse effects the graphics
e.g., a check mark should follow the mouse
- Peridot then generalizes from the given examples to create a
general purpose program
Peridot (continued)
Uses parameterized procedures which allows parts of the
interface to depend on values of parameters
- e.g, a pop-up menu shrinks to fit around the menu item strings
- Peridot asks designer for example values for each parameter
Two types of constraints are used
- graphical: ties various graphical objects together so that when
one changes the other is updated
- data: insures graphical objects are updated when any special
variables (called Action Values) are updated
techniques used:
visual programming
programming by example
constraints
plausible inferencing
However, lacks a programming interface and offers no way to use
existing toolkit items or create application specific objects
Constraint Systems