In Elastic Windows, windows are modeled as views on objects of various types such as text, URL, e-mail, etc. The purpose of this model is to declare standard objects which can be reused with a considerable degree of extensibility, made possible by the object-oriented design.
The current object hierarchy is shown in Figure . According to this hierarchy, all objects are inherited from the base elastic object class called ElasticObject. The base class has standard fields such as data buffer, object id, and standard methods such as load, save, and create menu, content, and window to be used by the window handler and content handler components. Subclasses might have additional fields for their own purpose. For example, the text object (TextObject) has a file name field, and the URL object (URLObject) has a cached URL field for the relative address resolution procedure. Subclasses implement their own standard methods with as much reuse of their parent class, however some subclasses may have additional methods. For example, the URLObject class has a reformat method to rearrange and scale the contents of a web page according to the width of the window. In this design, desktop and window hierarchies are also implemented as objects that can be saved, viewed, and manipulated. Table lists all object classes along with a brief description.
There are also items which reside as interactive components in the content view as part of the objects. Basically, they hold the object id of their associated objects. These items can be dragged and dropped to open new windows, where the contents of their associated objects are displayed. ObjectLink, ObjectItem, ObjectIcon are some example items to reside in URL, list and icon objects respectively. Hierarchicons are also implemented as items in the overview object.
The content handler is the main processing component dealing with the object store directly. Basically, the draw module of the content handler uses the object data buffer to draw the window contents on the screen. Besides, the content handler also initiates load and save operations for the objects.
By inheritance of the base elastic object class (ElasticObject) or any of its subclasses it is possible to extend the object hierarchy for different applications. Depending on the purpose, new fields or methods can be added to the new subclass. The content handler module corresponding to the new object class should be updated in that case.
In Elastic Windows it is possible to create copies of objects displayed in different windows at the same time. Since the object data is shared, any update from either window is reflected on all windows viewing that object.