/* BBRegionAttributesController.m				 
 *
 * This subclass of MiscInspector is in charge of a regions attribute
 * settings.
 *
 * For more interface-info see the header file. In depth information
 * can be found here in the source-code.
 *
 * Written by: 		Thomas Engel
 * Created:    		21.01.1994 (Copyleft)
 * Last modified: 	23.05.1994
 */

#import "BBRegionAttributesController.h"
#import "../../BBMolecule.h"
#import "../../BBBasicShapeHollowSticks.h"
#import "../../BBBasicShapeRoundSticks.h"
#import "../../BBBasicShapeBallsSticks.h"
#import "../../BBBasicShapeSpacefilling.h"

@implementation BBRegionAttributesController

- textDidChange:sender;
{
	[self touch:self];
	return self;
}

- styleDidChange:sender
{
	// Here we will show the type and shape names.

	[self touch:self];
	return self;
}

- ok:sender
{
	BBRegion * ourRegion;
	int	tag;
	
	ourRegion = [self selection];
	[ourRegion setName:[nameField stringValue]];

	// According to the selection inside the matrix we will use another
	// region style.
	
	tag = [[shapeMatrix selectedCell] tag];
	
	// Now if we are a real molecule the following setting has to apply to
	// the default region of that molecule!!
	
	if( [ourRegion respondsTo:@selector(defaultRegion)] )
		ourRegion = [(BBMolecule *)ourRegion defaultRegion];
		
	if( tag == 1 )
		[ourRegion setShapeClass:[BBBasicShapeHollowSticks class]];

	else if( tag == 2 )
		[ourRegion setShapeClass:[BBBasicShapeRoundSticks class]];

	else if( tag == 3 )
		[ourRegion setShapeClass:[BBBasicShapeBallsSticks class]];

	else if( tag == 4 )
		[ourRegion setShapeClass:[BBBasicShapeSpacefilling class]];
	
	else		
		[ourRegion setShapeClass:[BBBasicShapeBallsSticks class]];

	return [super ok:sender];
}

- revert:sender
{
	id		ourRegion;
	Class	shape;
	
	[super revert:sender];
	
	ourRegion = [self selection];
	[nameField setStringValue:[ourRegion name]];	

	// Lets find the real shapeMatrix if there is none right now.
	// We have to do this because we can only connect to the scrollview
	// Without big problems.
	
	if( [shapeMatrix isKindOf:[ScrollView class]] )
		shapeMatrix = [shapeMatrix docView];
	
	// Now if we are a real molecule the following query has to apply to
	// the default region of that molecule!!
	
	if( [ourRegion respondsTo:@selector(defaultRegion)] )
		shape = [[ourRegion defaultRegion] shapeClass];
	else
		shape = [ourRegion shapeClass];
	
	if( shape == [BBBasicShapeHollowSticks class] )
		[shapeMatrix selectCellWithTag:1];
	else if( shape == [BBBasicShapeRoundSticks class] )
		[shapeMatrix selectCellWithTag:2];
	else if( shape == [BBBasicShapeBallsSticks class] )
		[shapeMatrix selectCellWithTag:3];
	else if( shape == [BBBasicShapeSpacefilling class] )
		[shapeMatrix selectCellWithTag:4];
	else
		[shapeMatrix selectCellWithTag:5];
	
	return self;
}

@end

/*
 * History: 23.05.95 Supports the new style selection mode.
 *
 *			12.05.94 Converted to fit BB... naming
 *
 *			09.03.94 Made it a Region inspector.
 *
 *			21.01.94 First implementation.
 *
 *
 * Bugs: - Hmm sure...not really ready. But it works.
 */