home *** CD-ROM | disk | FTP | other *** search
- ///////////////////////////////////////////////////////////////////////////////
- // FILENAME: MailToUI.m
- // SUMMARY: Interface for a UI for setting address and subject
- // SUPERCLASS: Object
- // INTERFACE: MailToUI.nib
- // PROTOCOLS: <Inspectable>
- // AUTHOR: Rohit Khare and Tom Zavisca
- // COPYRIGHT: (c) 1994 California Institure of Technology, eText Project
- ///////////////////////////////////////////////////////////////////////////////
- // IMPLEMENTATION COMMENTS
- // Just maintains two lousy fields.
- ///////////////////////////////////////////////////////////////////////////////
- // HISTORY
- // 07/20/94: Revamped to leverage eTImageUI in an "inspection chain"
- // 07/04/94: Minimal Creation.
- ///////////////////////////////////////////////////////////////////////////////
-
- #import "MailTo.h"
-
- @implementation MailToUI
-
- + new
- {
- static MailToUI *ui = nil;
-
- if (!ui) {
- ui = [[MailToUI alloc] init];
- }
- return ui;
- }
- - init
- {
- char buf[MAXPATHLEN];
- NXBundle *bundle;
-
- [super init];
- bundle = [NXBundle bundleForClass:[MailToUI class]];
- if ( [bundle getPath:buf forResource:"MailToUI" ofType:"nib"] ) {
- [NXApp loadNibFile:buf owner:self withNames:NO];
- } else {
- NXLogError("NIB not found: MailToUI");
- }
- mailToView = [mailToPanel contentView];
- return self;
- }
- - free {return self;}
- ///////////////////////////////////
- #define PROP "MailTo Properties"
- - (const NXAtom *) types
- {
- static NXAtom *types = NULL;
-
- if (!types) {
- int i;
- const NXAtom *superTypes = [super types];
-
- for(i=0;superTypes[i];i++);
- i++; // make room for terminating NULL
- i++; // make room for our type
- types = malloc(i * sizeof(NXAtom));
- types[0] = NXUniqueString(PROP);
- for(i=0;superTypes[i];i++) types[i+1] = superTypes[i];
- types[i+1] = NULL;
- }
- return types;
- }
- - (const char *) inspectorTitle
- {
- return NXUniqueString("MailTo");
- }
- - resignInspector: (View *) oldInspector ofType: (const char *) type
- {
- if (oldInspector == mailToView) {
- [self changeAddress:addressField];
- [self changeSubject:subjectField];
- } else
- [super resignInspector:oldInspector ofType:type];
- return self;
- }
- - activateInspector: (View *) newInspector ofType: (const char *) type
- {
- if (newInspector != mailToView)
- [super activateInspector:newInspector ofType:type];
- return self;
- }
- - inspectorForType:(const char *) type
- {
- if(!strcmp(type,NXUniqueString(PROP)))
- return mailToView;
- // else NXLogError("Massive Inspector Failure: Asked MailTo for: %s", type);
- // return mailToView;
- return [super inspectorForType:type];
- }
- ////////////////////
- - setAnnotation:sender
- {
- [super setAnnotation:sender]; // this is an awkward naming of the "chain"
- theMailTo = sender;
- [addressField setStringValue:[theMailTo address]];
- [subjectField setStringValue:[theMailTo subject]];
- return self;
- }
- - changeAddress:sender
- {[theMailTo setAddress:NXUniqueString([sender stringValue])]; return self;}
- - changeSubject:sender
- {[theMailTo setSubject:NXUniqueString([sender stringValue])]; return self;}
- @end;