//----------------------------------------------------------------------------------------------------
//
//	MailComposerInspector
//
//	Inherits From:		IBInspector
//
//	Declared In:		MailComposerInspector.h
//
//	Disclaimer
//
//		You may freely copy, distribute and reuse this software and its
//		associated documentation. I disclaim any warranty of any kind, 
//		expressed or implied, as to its fitness for any particular use.
//
//----------------------------------------------------------------------------------------------------
#import "MailComposerInspector.h"
#import "MailComposer.h"


@implementation MailComposerInspector

- init
{
	//  Initialize and return an instance of this class.  Call [self revert:] to sync with
	//  inspected object.  Set self as delegate for Text and TextFields.  This will 
	//  notify us when inspector is dirty (has been changed).
	
    	char 	path[MAXPATHLEN+1];
    	id 		bundle;
		
    	[super init];

    	if ( ! (bundle = [NXBundle bundleForClass: [MailComposerInspector class]] ) ) return nil;    	if ( ! [bundle getPath: path forResource: "MailComposerInspector" ofType: "nib"] ) return nil;
    	[NXApp loadNibFile: path owner: self  withNames: NO fromZone: [self zone]];

	[to setTextDelegate: self];
	[subject setTextDelegate: self];
	[cc setTextDelegate: self];
	[body setDelegate: self];

	[self revert: nil];
    	return self;
}

- revert:sender
{
	//  Sync with inspected object.  Must call [super revert: ].
	
	[to setStringValue: [object to]];
    	[subject setStringValue: [object subject]];
    	[cc setStringValue: [object cc]];
	[body setSel: 0 :[body textLength]];
	[body replaceSel: [object body]];

	[to selectText: nil];
    	return [super revert:sender];
}

- ok: sender
{
	//  Make changes to object .  Notify IB changes have occurred.
	//  Must call [super ok: ].

	STR	 bodyText = malloc ([body textLength] + 1);
	[body getSubstring: bodyText  start: 0 length: [body textLength]];
    	[object body: bodyText];
	if (bodyText) free(bodyText);
		
    	[object to: (STR)[to stringValue]];
    	[object subject: (STR)[subject stringValue]];
    	[object cc: (STR)[cc stringValue]];

	[[NXApp activeDocument] touch];
    	return [super ok: sender];
}

- (BOOL)wantsButtons
{
	//  Tell IB we do want 'Revert' and 'Ok' buttons...

    	return YES;
}

@end
