Composing user interfaces

\comment{See  [LVC89].} \sly{views}{

Composing User Interfaces

{\footnotesize [] What constitutes a good set of abstractions for building user interfaces ?

Observations\n

[] All UI's need not look alike,\n [] need not be purely graphical.\n [] Code should be object oriented ! }

Objects

support direct manipulation, \n and abstraction, encapsulation (state), extension by inheritance\n {\footnotesize

Customization

{\footnotesize -- separate interface/functionality}\n Subjects -- abstract functionality\n Views -- interactive interface

Layers:

Application -> Interviews -> Windows -> OS } \n } \sli{

Composition mechanisms

-- propagation {\footnotesize interactor -- buttons, menus\n graphic -- circles, polygons \zline{(structured)}\n text -- words, white space\nl } [] Hierarchical composition gives flexibility ! {\footnotesize \nl scene -- interactor + component management\n picture -- list of component graphics\n clause -- list of text components }

Interactor composition:\n

boxes and glue \n tray -- scene\n deck -- pages\n menu -- monoscene

Scene composition:

tiled, overlapping \n } \sli{

Direct manipulation:

\fbox{\footnotesize graphical representation}\nl {\footnotesize {\em \bullet drawing editor}\n {\em \bullet music editor}\n {\em \bullet schema editor}\n {\em \bullet class browser} \xline{\fbox{{\bf C}++}}\n {\em \bullet hypertext} }

Semantics

-- propagation\nl \fboxGraphics -- {\footnotesize parents override children} \n \bullet pictures, transformations, zooming \nl \fboxText -- {\footnotesize multiple connections}\n \bullet phrase, text-list, display, sentence, paragraph, chapter, trail, web ...\n \nl []{\it Distinguish subject (abstract) and view (interactive)} ! \n }