This is InspectorController.m in view mode; [Download] [Up]
#import "InspectorController.h" @implementation InspectorController + (InspectorController *) sharedInspectorController { static InspectorController *sharedObject = nil; if (sharedObject == nil) sharedObject = [[self alloc] init]; return sharedObject; } - init { [super init]; inspectors = [[NSMutableArray alloc] initWithCapacity:2]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(revert:) name:NOTIFICATION_SELECTION_CHANGED object:nil]; return self; } - (NSWindow *) panel { if ([inspectorBox window] == nil) [NSBundle loadNibNamed:@"inspectorPanel.nib" owner:self]; return [inspectorBox window]; } - (void) registerInspector:(Inspector *)inspector { [inspectors addObject:inspector]; } - (void)revert:(id)sender { NSEnumerator *inspectorEnumerator; NSArray *selection; BOOL found = NO; NSView *view, *oldView; Inspector *inspector = nil; if (![[self panel] isVisible]) return; selection = [[[NSApplication sharedApplication] targetForAction:@selector(currentSelection)] currentSelection]; inspectorEnumerator = [inspectors objectEnumerator]; while (!found && (inspector = [inspectorEnumerator nextObject])) found = [inspector isValidInspectorForTargets:selection]; if (found) { [inspector setTargets:selection]; [inspector revert:nil]; oldView = [inspectorBox contentView]; view = [inspector view]; if (oldView != view) { [inspectorBox setContentView:view]; [[offWin contentView] addSubview:oldView]; } } else if ([selection count] == 0) [inspectorBox setContentView:emptySelectionInspectorView]; else NSLog (@"Unknown selection:%@", [selection description]); } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.