// OutputViewBox.m
// By Judy D. Halchin, Educational Computing Services, Allegheny College.
// Copyright 1993 Allegheny College.  
// You may freely copy, distribute and reuse this code. 
// Allegheny College and the author disclaim any warranty of any kind, 
// expressed or implied, as to its fitness for any particular use.
// This work was partially supported by a Teacher Preparation grant from the 
// National Science Foundation.

#import "OutputViewBox.h"
#import "DefaultView.h"

@implementation OutputViewBox

- initFrame:(const NXRect *)frameRect
{
	NXRect viewBounds;
	
	[super initFrame:frameRect];
	 
	[contentView setAutoresizeSubviews:YES];
	[self setOffsets:0 :0];
	[self setTitlePosition:NX_NOTITLE];
	[self setBorderType:NX_LINE];
	
	[contentView getBounds:&viewBounds];
	defaultView = [[DefaultView allocFromZone:[self zone]] 
													initFrame:&viewBounds];
	[defaultView setAutosizing:NX_WIDTHSIZABLE | NX_HEIGHTSIZABLE];
	[self addSubview:defaultView];
	
	return self;
}

- insertView:view
{
	int viewIndex, subviewCount;
	id subviewList, subview;
	NXRect viewBounds;
	
	// remove the old subview and free it if it was the default view
		subviewList = [contentView subviews];
		subviewCount = [subviewList count];
		for (viewIndex = subviewCount-1; viewIndex >= 0; viewIndex--)
		{
			subview = [subviewList objectAt:viewIndex];
			[subview removeFromSuperview];
			if (subview == defaultView)
				[defaultView free];
		}
	
	// insert the new subview
		[view setAutosizing:NX_WIDTHSIZABLE | NX_HEIGHTSIZABLE];
		[contentView getBounds:&viewBounds];
		[view setFrame:&viewBounds];	
		[self addSubview:view];

	return self;
}

@end
