InspectorManager

InspectorManager is a class that manages the displaying of elements of a list of view objects that are periodically displayed and removed from a window.  One obvious use of this is for implementing an inspector panel (hence the name), but the functionality of this class is really not specific to inspectors.  Despite the terminology used, InspectorManager could be useful for other purposes, such as a multi-view preferences panel.  (I considered changing the name to something that more closely reflects this, but eventually decided not to.)  It was designed to be flexible enough to handle inspector functionality for just about any application.

Basically, you give InspectorManager "inspector views" (such as boxes with controls in them) and tell it when you want it to display one of them.  When a selection is made via the group popup, InspectorManager messages a delegate and lets the delegate determine which inspector needs to be shown.  This allows total flexibility - a single popUpList item (eg. 'Contents' in Workspace Manager) may bring up one of many actual inspectors (eg. '.snd', '.tiff', '.h', etc.) - but you are required to write the code that determines which inspector needs to be shown. 

Features of InspectorManager class:

1) PopUpList items are not tied to particular inspectors, so that an inspector appropriate for the currently selected object can be shown.
2) Allows inspector views laid out in any of an application's nib files to be managed by a single InspectorManager.
3) Uses command-key equivalents for switching between inspectors and displaying the panel (as is done in Workspace Manager and Interface Builder).
4) Uses compositing to an offscreen buffer to speed swaps between inspectors.  This feature may be disabled if desired.    
5) Allows an inspector view to consist of multiple smaller views, if desired.

Complete documentation for the class is given in the file InspectorManager.rtf.

Developed under NeXTStep 2.1 by:

Kevin Brain (ksbrain@zeus.UWaterloo.ca)
University of Waterloo
Department Of Systems Design
Waterloo, Ontario N2L 3G1