Apple's SimpleToolbar code *is all* their MyDocument.m. My app would like to place the toolbar-specific code *in a separate Controller*, say "ToolbarController". This transfer does work to a limited extent, that is, the toolbar does in fact appear at the top of the window, as it should. However, *what does not work* is the enabling/disabling based on the specified target .. all toolbar items are disabled. Details are as follows:
*Within MyDocument.h*: @interface MedicalDocument:NSDocument { IBOutlet ToolbarController *iboToolbarCtrl; IBOutlet FileController *iboFileCtrl; // etc. } *Within MyDocument.m*: - (void) windowControllerDidLoadNib:(NSWindowController*)aController { [super windowControllerDidLoadNib:aController]; // etc [iboToolbarCtrl retainOutlets]; [iboToolbarCtrl setupToolbar]; // etc } *Within ToolbarController.h* – all of which is taken from SimpleToolbar (except being in a separate Controller, versus all in MyDocument.m) #import <Cocoa/Cocoa.h> #import "FileController.h" @interface ToolbarController:NSObject { IBOutlet NSToolbarItem *openSpreadsheetItem, *saveSpreadsheetItem, *stopCalculationItem; IBOutlet NSObject *openItemOutlet, *saveItemOutlet, *stopItemOutlet; IBOutlet FileController *iboFileCtrl; IBOutlet NSWindow *iboDocWindow; } - (void) dealloc; - (void) retainOutlets; - (void) setupToolbar; - (NSToolbarItem*) toolbar:(NSToolbar*)toolbar itemForItemIdentifier:(NSString*)itemIdent willBeInsertedIntoToolbar:(BOOL) willBeInserted; - (NSArray*) toolbarDefaultItemIdentifiers:(NSToolbar*)toolbar; - (NSArray*) toolbarAllowedItemIdentifiers:(NSToolbar*)toolbar; - (void) toolbarWillAddItem:(NSNotification*)notif; - (void) toolbarDidRemoveItem:(NSNotification*)notif; - (BOOL) validateToolbarItem:(NSToolbarItem*)toolbarItem; - (BOOL) validateMenuItem:(NSMenuItem*)item; @end As stated at the start, the toolbar does in fact appear where it's supposed to .. *it's just that all the items are disabled??* Within *ToolbarController.m*, my setupToolbar method is identical to Apple's, namely: - (void) setupToolbar { NSToolbar *toolbar = [[[NSToolbar alloc] initWithIdentifier:MyDocToolbarIdentifier] autorelease]; [toolbar setAllowsUserCustomization:YES]; [toolbar setAutosavesConfiguration:YES]; [toolbar setDisplayMode:NSToolbarDisplayModeIconOnly]; [toolbar setDelegate:self]; [iboDocWindow setToolbar:toolbar]; } My: *-** (NSToolbarItem*) toolbar:(NSToolbar*)toolbar itemForItemIdentifier:(NSString*)itemIdent willBeInsertedIntoToolbar:(BOOL) willBeInserted;* *except, I have such things as*: [toolbarItem setTarget:iboFileCtrl]; [toolbarItem setAction:@selector(saveSpreadsheet:)]; My: *- (void) toolbarWillAddItem:(NSNotification*)notif;* *except, I have such things as*: [openSpreadsheetItem setTarget:iboFileCtrl]; [openSpreadsheetItem setAction:@selector(openSpreadsheet:)]; since FileController.m contains the method openSpreadsheet Further on: *-** (BOOL) validateToolbarItem:(NSToolbarItem*)toolbarItem* { BOOL enable = NO; if ([[toolbarItem itemIdentifier] isEqual:OpenDocToolbarItemIdentifier]) { enable = YES; } else if ([[toolbarItem itemIdentifier] isEqual:SaveDocToolbarItemIdentifier]) { if (![iboFileCtrl fileSaved]) enable = YES; } else if ([[toolbarItem itemIdentifier] isEqual:StopDocToolbarItemIdentifier]) { if (![iboFileCtrl fileFinishedCalculation]) enable = YES; } return enable; } And even later: *- (void) toolbaritemclicked:(NSToolbarItem*)toolbarItem* { if ([[toolbarItem itemIdentifier] isEqual:OpenDocToolbarItemIdentifier]) { [iboFileCtrl openSpreadsheet]; } else if ([[toolbarItem itemIdentifier] isEqual:SaveDocToolbarItemIdentifier]) { [iboFileCtrl saveSpreadsheet]; } else if ([[toolbarItem itemIdentifier] isEqual:StopDocToolbarItemIdentifier]) { [iboFileCtrl stopCalculation]; } } Thanks to the patience of Graham Cox and others, I have learned a great deal about targets and delegates .. so, I pray that my error does not involve these concepts .. so I can at least say that my ignorance is on new ground. John Love _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to [EMAIL PROTECTED]