Composing user interfaces
\comment{See [LVC89].}
\sly{views}{
Composing User Interfaces
- Interviews -- predefined objects, composition mechanisms
{\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
- adding protocol \& operations
{\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 drawing editor}\n
{\em music editor}\n
{\em schema editor}\n
{\em class browser} \xline{\fbox{{\bf C}++}}\n
{\em hypertext}
}
Semantics
-- propagation\nl
\fboxGraphics -- {\footnotesize parents override children} \n
pictures, transformations, zooming
\nl
\fboxText -- {\footnotesize multiple connections}\n
phrase, text-list, display, sentence,
paragraph, chapter, trail, web ...\n
\nl
{\it Distinguish subject (abstract) and view (interactive)} !
\n
}