Proxima: a presentation-oriented editor for structured documents
- Publisher: Utrecht University
A typical computer user deals with a large variety of documents, such as text files, spreadsheets, and web pages. The applications for constructing and modifying these documents are called editors (e.g. text editors, spreadsheet applications, and HTML editors). Despite the apparent differences between editors, the core editing behavior, whether performed in a word-processor or a spreadsheet, is largely similar: document fragments may be copied and pasted, and new parts of the document may be constructed by selecting from menus or entering text. Proxima is a generic editor suitable for a large number of document types. Similar to the way in which a food processor can replace several different appliances, a generic editor can replace several different editors. A generic editor offers a number of advantages. For instance, instead of having lots of specialized editors, there is only a single application with a uniform user interface. But the most important advantage is that building an editor for a new document type requires only a fraction of the effort compared to conventional methods. This is especially useful for building editors for XML documents. In spite of the advantages, generic editors are not in widespread use. Existing editors often only allow a user to edit the internal structure of the document, which is experienced as restrictive. More user friendly are presentation-oriented editors, which allow the presentation of the document on the screen to be directly manipulated. However, these editors are only applicable to a limited class of (mainly textual) document types. In contrast, Proxima offers presentation-oriented editing on complex graphical presentations, which may contain derived values. An important aspect of Proxima is its layered architecture. The problem of offering presentation-oriented editing behavior is thereby split up in several simpler subproblems. The thesis describes the design and the architecture of Proxima, and contains a formal specification of the editor. A prototype of Proxima has been implemented in the functional language Haskell. Although the prototype is still in a preliminary state, it is already straightforward to instantiate editors for complex documents. The resulting editors are powerful, yet easy to use.