The iTool system architecture is designed to maintain a separation between the functionality provided by an iTool and the graphical presentation layer that reveals that functionality to an iTool user (the iTool user interface). Such a separation allows for the creation of different user interfaces for the same underlying functionality; while the initial iTool user interface has been created using IDL widgets, it is easy to imagine using other technologies to create an interface to the underlying iTool functionality.
To support the goal of enabling different user interfaces for a given set of iTool functionality, the iTool architecture includes the following features:
- A design in which a single iTool object (based on the IDLitTool class) contains all non-interactive tool functionality. Similarly, a single iTool object (based on the IDLitUI class) contains all user interface functionality. This division is clearly visible in the iTools Object Model Diagram.
- An object identifier system that provides a platform-neutral way to identify objects across process and machine boundaries. Additionally, the object identifier system is designed to work with existing component technologies such as COM and Java.
- A minimal connection between the non-interactive tool functionality and the presentation layer. The tool architecture provides a small set of highly abstract methods that the tool and presentation layer use to communicate with each other. This minimal connection means that the presentation layer needs only a single object reference to the iTool object itself.
- A messaging system that allows one component to observe another, receiving notification messages when the observed component changes in some way.
This chapter describes some of the core ideas of the iTool system: component inheritance, object identifiers, the iTool system object and the object hierarchy it contains, the concept of registration, and how information is passed between iTool components.