A central notion in organizing user interfaces is allocating screen regions to particular tasks and recursively subdividing these regions into subregions. The windowing layer of CLIM defines an extensible framework for constructing, using, and managing such hierarchies of interactive regions. This framework allows uniform treatment of the following things:
From the perspective of most CLIM users, CLIM's windowing layer plays the role of a window system. However, CLIM usually uses the services of a window system platform to provide efficient windowing, input, and output facilities. We will refer to such window system platforms as host window systems or as display servers.
The fundamental window abstraction defined by CLIM is called a sheet. A sheet can participate in a relationship called a windowing relationship. This relationship is one in which one sheet called the parent provides space to a number of other sheets called children. Support for establishing and maintaining this kind of relationship is the essence of what window systems provide. At any point in time, CLIM allows a sheet to be a child in one relationship and a parent in another relationship.
Programmers can manipulate unrooted hierarchies of sheets (those without a connection to any particular display server). However, a sheet hierarchy must be attached to a display server to make it visible. Ports and grafts provide the functionality for managing this capability. A port is an abstract connection to a display service that is responsible for managing host display server resources and for processing input events received from the host display server. A graft is a special kind of sheet that represents a host window, typically a root window (that is, a screen-level window). A sheet is attached to a display by making it a child of a graft, which represents an appropriate host window. The sheet will then appear to be a child of that host window. In other words, a sheet is put onto a particular screen by making it a child of an appropriate graft and enabling it. Ports and grafts are described in detail in 19 Ports, Grafts, and Mirrored Sheets.
As has been discussed previously, CLIM users will typically be dealing with panes, rather than with sheets, ports, grafts, or mediums, as a call to make-application-frame automatically results in a port specification, a graft instantiation, and the allocation of a medium, to which output directed to the pane will be forwarded.
Sheets have the following properties:
A sheet is a participant in a number of protocols. Every sheet must provide methods for the generic functions that make up these protocols. These protocols are:
These protocols may be handled directly by a sheet, queued for later processing by some other agent, or passed on to a delegate sheet for further processing.
CLIM 2.0 User Guide - 01 Dec 2021 19:39:01