//
//  PlaylistHeaderView.m
//  Cog
//
//  Created by Simon on 06-05-24.
//  Copyright 2006 Vincent Spader. All rights reserved.
//

#import "PlaylistHeaderView.h"

@implementation PlaylistHeaderView

- (void)mouseDown:(NSEvent *)theEvent {
	NSPoint event_location = [theEvent locationInWindow];
	NSPoint local_point = [self convertPoint:event_location fromView:nil];

	int column = (int)[self columnAtPoint:local_point];

	if([theEvent clickCount] == 2 && column != -1) {
		// compute whether the clickpoint is a column separator or not
		BOOL clickedSeperator = NO;
		// handle a click one pixel away at right
		NSRect rect = [self headerRectOfColumn:column];
		if(fabs(rect.origin.x - local_point.x) <= 1.0 && column > 0) {
			--column;
			clickedSeperator = YES;
		}
		// handle a click 3 pixels away at left
		else if(fabs(rect.origin.x + rect.size.width - local_point.x) <= 3.0)
			clickedSeperator = YES;

		if(clickedSeperator) {
			NSTableColumn *col = [[[self tableView] tableColumns] objectAtIndex:column];

			// Info about the font and such
			NSCell *cell = [col dataCell];

			// Binding info...reaching deep!
			NSDictionary *bindingInfo = [col infoForBinding:@"value"];
			NSArray *boundArray = [[bindingInfo objectForKey:NSObservedObjectKey] valueForKeyPath:[bindingInfo objectForKey:NSObservedKeyPathKey]];

			// find the longest string display length in that column
			float max_width = -1;
			for(id row in boundArray) {
				[cell setObjectValue:row];

				float width = [cell cellSize].width;
				if(width > max_width)
					max_width = width;
			}

			// set the new width (plus a 5 pixel extra to avoid "..." string substitution)
			[col setWidth:max_width + 5];

		} else
			[super mouseDown:theEvent];
	} else
		[super mouseDown:theEvent];
}

@end
