This is MiscInspectorController.m in view mode; [Download] [Up]
/* MiscInspectorController.m created by todd on Sun 05-May-1996 */
#import <AppKit/AppKit.h>
#import "MiscInspectorController.h"
@implementation MiscInspectorController
/*"
MiscInspectorController is just a simple experiment on how to do
some inspecting without the inspected objects knowing that they are
being inspected.
"*/
//-------------------------------------------------------------------
// Accessor methods
//-------------------------------------------------------------------
- (MiscController*) inspectedController
/*"
Returns the inspector we are currently inspecting or nil if
we aren't currently inspecting.
"*/
{
return _inspectedController;
}
//-------------------------------------------------------------------
// Inspected controller notification
//-------------------------------------------------------------------
- (void) controllerDidEdit:(NSNotification*)notification
/*"
The controller we are inspecting did edit, so we call #update
to update our inspector.
"*/
{
// May want to check if [notification object] and our
// inspected controller are the same.
[self update];
}
//-------------------------------------------------------------------
// Starting/stopping
//-------------------------------------------------------------------
- (void) startInspectingController:(MiscController*)controller
/*"
This method is called from an instance of MiscInspectorMediator
letting us know the controller we should be inspecting. NOTE TO ME:
Some of this code should be moved into #setInspectedController:.
"*/
{
MiscController* oldController = [self inspectedController];
[self setInspectedController:controller];
if (controller != nil) {
// Register so we get controllerDidEdit notifications.
[self _registerForControllerDidEditNotification:controller];
// We'd like immediate feedback on what we are now inspecting.
[self update];
}
else {
[self _nothingToInspect];
}
// Unregister for edit notifications from our old inspected
// controller.
if (oldController != nil) {
[self _unregisterForControllerDidEditNotification:oldController];
// A previous call to stopInspectingController may have
// started a delayed perform so cancel it.
[NSObject cancelPreviousPerformRequestsWithTarget:self
selector:@selector(_nothingToInspect) object:nil];
}
}
- (void) stopInspectingController:(MiscController*)controller;
/*"
Sent from an instance of MiscInspectorMediator letting us know
that we should stop inspecting controller.
"*/
{
// Might want to check that controller is the same as _inspectedController.
// Also what about supporting inspecting multiple things? We should then
// keep an array of inspected controllers instead of setting our single
// one to nil.
[self setInspectedController:nil];
[self _unregisterForControllerDidEditNotification:controller];
// Send this on a delay because we may get a startInpectingController
// message right away from another object. The startInspectingController
// will cancel any of these messages if another object comes along
// that wants inspection.
[self performSelector:@selector(_nothingToInspect)
withObject:nil afterDelay:0.0];
}
- (void) update
/*"
Called from #startInspectingController: and controllerDidEdit:.
For InspectorController subclasses to use. We do nothing.
*/
{
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.