home *** CD-ROM | disk | FTP | other *** search
- ///////////////////////////////////////////////////////////////////////////////
- // FILENAME: eTBookmarkEnd.m
- // SUMMARY: Implementation of the "stupid" end-of-region tag
- // SUPERCLASS: Object
- // INTERFACE: None
- // PROTOCOLS: <Annotation>
- // AUTHOR: Rohit Khare
- // COPYRIGHT: (c) 1994 California Institure of Technology, eText Project
- ///////////////////////////////////////////////////////////////////////////////
- // IMPLEMENTATION COMMENTS
- // Does as close to nothing as possible.
- ///////////////////////////////////////////////////////////////////////////////
- // HISTORY
- // 05/08/94: Created. First actual implementation.
- ///////////////////////////////////////////////////////////////////////////////
-
- #import "eTBookmarkEnd.h"
-
- @implementation eTBookmarkEnd
- // id etBookmark;
- // long anchorID;
-
- - init {return [self init:nil ID:0];}
-
- - init:theBookmark ID:(long)theID
- {
- [super init];
- etBookmark = theBookmark;
- anchorID = theID;
- theIcon = [NXImage findImageNamed:".bmEnd"];
- highlighted = NO;
- return self;
- }
-
- - beginDidFree
- {
- etBookmark = nil;
- return self;
- }
-
- - free
- {
- if (etBookmark) etBookmark = [etBookmark endDidFree:self];
- return self = [super free];
- }
-
- - click:sender {if (etBookmark) [etBookmark click:sender]; return self;}
- - doubleClick:sender {if (etBookmark) [etBookmark doubleClick:sender]; return self;}
-
- /////////////////////////
- - initFromPboard:thePboard inDoc:theDoc linked:(BOOL) linked
- {
- NXLogError("initFromPboard called for bmEnd; should not have happened");
- return [self init];
- }
- - calcCellSize:(NXSize *)theSize
- {[theIcon getSize:theSize]; return self;}
- - drawSelf:(const NXRect *)cellFrame inView:view // MARGINALIA HERE!
- {
- NXPoint point;
-
- PSgsave();
- PSsetgray([view backgroundGray]);
- NXRectFill(cellFrame);
- point = cellFrame->origin;
- point.y += cellFrame->size.height;
- [theIcon composite:NX_SOVER toPoint:&point];
- PSgrestore();
- return self;
- }
- - highlight:(const NXRect *)cellFrame inView:view lit:(BOOL)flag
- {
- if (highlighted != flag) {
- highlighted = flag;
- /* toggle highlighting */
- NXHighlightRect(cellFrame);
- }
- return self;
- }
- - (BOOL) trackMouse:(NXEvent *)theEvent
- inRect:(const NXRect *)rect
- ofView:view
- {
- // TO fix this, check out Concepts chapter 7, prog dynam.
- if (!etBookmark) {
- if (theEvent->data.mouse.click == 2)
- [self doubleClick:self];
- else if (theEvent->data.mouse.click == 1)
- [self click:self];
- } else {
- [etBookmark trackMouse:theEvent inRect:rect ofView:view];
- }
- return YES;
- }
-
- - writeRichText:(NXStream *)stream forView:view
- {
- NXPrintf(stream, "%x ", anchorID);
- return self;
- }
- - readRichText:(NXStream *)stream forView:view
- {
- NXScanf(stream, "%x ", &anchorID);
- etBookmark = [[eTBookmarkBinder new] bookmarkForID:anchorID];
- [etBookmark setEnd:self];
- return self;
- }
-
- @end
-