Oberon Object Tiler ~repack~ -
[2] Reali, P. (2003). Using Oberon’s object model for graphical user interfaces . ETH Zurich Technical Report 432.
[1] Wirth, N., & Gutknecht, J. (1992). Project Oberon – The Design of an Operating System and Compiler . Addison‑Wesley. oberon object tiler
Abstract The Oberon Object Tiler extends the classic Oberon system’s philosophy of text‑ and command‑centric interaction to a visual, tiled object workspace. It treats every object – whether a document, module, or service – as a tile that can be laid out, snapped, and dynamically recomposed. This paper presents the design, implementation, and evaluation of the tiler as a lightweight, persistent object manager within the Oberon environment. 1. Introduction Oberon (Wirth & Gutknecht, 1992) combines an operating system, programming language, and GUI into a single persistent universe. Its original UI is based on mutable text viewers. The Oberon Object Tiler (OOT) reimagines this model: instead of text fragments, objects are first‑class tiles. Each tile is a self‑contained Oberon object (record with attached procedures) that knows how to render itself, handle input, and communicate with peers. [2] Reali, P
PROCEDURE (t: Tile) Draw*; VAR r: Rectangle; BEGIN r := t.frame; Objects.DrawObj(t.obj, r.x, r.y, r.w, r.h); END Draw; PROCEDURE LayoutGrid*(tiles: Tiles.List); VAR i, cols, rows, cw, ch: INTEGER; BEGIN cols := ENTIER(SQRT(Len(tiles))); rows := (Len(tiles) + cols - 1) DIV cols; cw := Display.Width DIV cols; ch := Display.Height DIV rows; FOR i := 0 TO Len(tiles)-1 DO tiles[i].frame := Rect( (i MOD cols)*cw, (i DIV cols)*ch, cw, ch ); END END LayoutGrid; ETH Zurich Technical Report 432
[3] Pike, R. (1991). Acme: A User Interface for Programmers. Proc. of the Winter 1991 USENIX Conference .