
#import "MultiDemo.h"
#import "UHInspectorManager.h"
#import "UHInspector.h"
#import "Resistor.h"

@implementation MultiDemo

- init
{
	[super init];
	
	selection=[[List alloc] initCount:4];	//object selection list
	
	/* First get the inspector manager, which will load its own nib. */
	inspectorManager=[[UHInspectorManager alloc] init];
	[inspectorManager setDelegate:self];	//this object will get notifications
	[inspectorManager enableDoubleInspector:NO];
	
	/* Now get the objects to be inspected for this MultiDemo. Not all inspectable objects
		must respond to setLabel:, but I know that these do. */
	/* Resistor is different from the others in these demos in that each instance returns
		its unique label when it receives the getLabelForInspector message.  Thus each
		resistor instance is inspected separately. */
	[selection addObject:[[[Resistor alloc] init] setLabel:"Resistor 1"]];
	[selection addObject:[[[Resistor alloc] init] setLabel:"Resistor 2"]];
	[selection addObject:[[[Resistor alloc] init] setLabel:"Resistor 3"]];
	[selection addObject:[[[Resistor alloc] init] setLabel:"Resistor 4"]];
	
	return self;
}

- appDidInit:sender
{
	/* Now give the list one time to the inspector manager. */
	[inspectorManager inspectList:selection requestor:self];
	return self;
}

/* Message to delegate from UHInspectorManager when inspector is changed in inspector manager. */
- inspectorChanged:sender
{
	sprintf(buf,"Object selected is %s.",[[[sender currentInspector] object] label]);
	[delegateMsgField setStringValue:buf];
	sprintf(buf,"Current selection on popup list is %s.",[sender currentInspectorLabel]);
	[inspectorLabelField setStringValue:buf];
	return self;
}

/* Inspector panel must be explicityl ordered front. */
- showInspector:sender
{
	[inspectorManager showInspector:self];
    return self;
}


@end
