This is MiscDiagramTree.m in view mode; [Download] [Up]
/*
Copyright (c) Uwe Hoffmann, 1995.
All Rights Reserved.
Filename: MiscDiagramTree.m
Author: Uwe Hoffmann
Date: Sep 03, 1995
$Id: MiscDiagramTree.m,v 1.1 1995/09/03 11:22:00 Uwe Hoffmann Exp $
$Log: MiscDiagramTree.m,v $
*/
#import <foundation/foundation.h>
#import <foundation/NSArchiver.h>
#import <appkit/appkit.h>
#import "uwFoundationAdds.h"
#import "MiscDiagramTree.h"
#import "MiscUserPath.h"
@implementation MiscDiagramTree
+ tree
/*"Creates, initializes and returns a MiscDiagramTree instance."*/
{
return [[[self alloc] init] autorelease];
}
+ treeWithLabel:(NSString *)aLabel shapeType:(MiscShapeType)aShapeType
/*"Creates, initializes and returns a MiscDiagramTree instance with size aSize."*/
{
return [[[self alloc] initWithLabel:aLabel shapeType:aShapeType] autorelease];
}
- initWithLabel:(NSString *)aLabel shapeType:(MiscShapeType)aShapeType
/*"Initializes a newly created instance of MiscDiagramTree with aSize.
This is the designated initializer of this class."*/
{
NSRect r;
labelTextCell = [[TextFieldCell allocWithZone:[self zone]] initTextCell:[aLabel cString]];
[labelTextCell setBackgroundTransparent:YES];
[labelTextCell setTextGray:NX_BLACK];
[labelTextCell setAlignment:NX_CENTERED];
[labelTextCell setFont:[Font newFont:"Times-Roman" size:10.0]];
[labelTextCell calcCellSize:(NXSize *)&(r.size)];
self = [super initWithSize:r.size];
shape = [MiscDiagramShape newWithZone:[self zone] shapeType:aShapeType bounds:r];
return self;
}
- init
{
return [self initWithLabel:@"Node" shapeType:MiscRectangleShapeType];
}
- (void)dealloc
{
[labelTextCell release];
[shape release];
return [super dealloc];
}
- copyNodeWithZone:(NSZone *)zone
{
MiscDiagramTree *theCopy;
theCopy = [super copyNodeWithZone:zone];
theCopy->shape = [shape copyWithZone:zone];
theCopy->labelTextCell = [labelTextCell copyWithZone:zone];
return theCopy;
}
- (void)encodeWithCoder:(NSCoder *)coder
{
[super encodeWithCoder:coder];
[coder encodeObject:shape];
[coder encodeNXObject:labelTextCell];
}
- initWithCoder:(NSCoder *)coder
{
self = [super initWithCoder:coder];
shape = [[coder decodeObject] retain];
labelTextCell = [[coder decodeNXObject] retain];
return self;
}
- (void)layoutNode
{
[shape moveTo:[self pos]];
}
- (void)drawOutline
{
MiscDiagramTree *theChild,*theSibling;
theChild = (MiscDiagramTree *)[self child];
theSibling = (MiscDiagramTree *)[self sibling];
[shape drawOutline];
if(theChild)
[theChild drawOutline];
if(theSibling)
[theSibling drawOutline];
}
- (void)drawFill
{
MiscDiagramTree *theChild,*theSibling;
theChild = (MiscDiagramTree *)[self child];
theSibling = (MiscDiagramTree *)[self sibling];
[shape drawFill];
if(theChild)
[theChild drawFill];
if(theSibling)
[theSibling drawFill];
}
- (void)drawCellsInView:aView attachments:(BOOL)aBool
{
MiscDiagramTree *theChild,*theSibling;
NSRect r;
theChild = (MiscDiagramTree *)[self child];
theSibling = (MiscDiagramTree *)[self sibling];
r = [self nodeBounds];
[labelTextCell drawInside:(NXRect *)&r inView:aView];
if(theChild)
[theChild drawCellsInView:aView attachments:aBool];
if(theSibling)
[theSibling drawCellsInView:aView attachments:aBool];
}
- (void)fillLines:(MiscUserPath *)linesPath
{
MiscDiagramTree *theChild,*theSibling, *theParent;
theChild = (MiscDiagramTree *)[self child];
theSibling = (MiscDiagramTree *)[self sibling];
theParent = (MiscDiagramTree *)[self parent];
if(theParent){
[linesPath moveto:([self pos].x + [self size].width / 2) :([self pos].y + [self size].height / 2)];
[linesPath lineto:([theParent pos].x + [theParent size].width / 2) :([theParent pos].y + [theParent size].height / 2)];
}
if(theChild)
[theChild fillLines:linesPath];
if(theSibling)
[theSibling fillLines:linesPath];
}
- (MiscShapeType)shapeType
{
return [shape shapeType];
}
- (void)setShapeType:(MiscShapeType)aShapeType
{
NSRect b;
b = [shape innerBounds];
[shape release];
shape = [MiscDiagramShape newWithZone:[self zone] shapeType:aShapeType bounds:b];
[self setSize:[shape bounds].size];
}
- (NSString *)label
{
return [NSString stringWithCString:[(TextFieldCell *)labelTextCell stringValue]];
}
- (void)setLabel:(NSString *)aLabel
{
NSSize s;
[labelTextCell setStringValue:[aLabel cString]];
[labelTextCell calcCellSize:(NXSize *)&s];
[shape sizeTo:s];
[self setSize:s];
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.