//
//  FileTreeController.m
//  Cog
//
//  Created by Vincent Spader on 2/17/08.
//  Copyright 2008 __MyCompanyName__. All rights reserved.
//

#import "FileTreeController.h"
#import "PlaylistController.h"
#import "SideViewController.h"

@implementation FileTreeController

- (IBAction)addToPlaylist:(id)sender {
	[self doAddToPlaylist:sender origin:URLOriginInternal];
}

- (void)doAddToPlaylist:(id)sender origin:(URLOrigin)origin {
	NSUInteger index;
	NSIndexSet *selectedIndexes = [outlineView selectedRowIndexes];
	NSMutableArray *urls = [[NSMutableArray alloc] init];

	for(index = [selectedIndexes firstIndex];
	    index != NSNotFound; index = [selectedIndexes indexGreaterThanIndex:index]) {
		[urls addObject:[[outlineView itemAtRow:index] URL]];
	}

	[controller doAddToPlaylist:urls origin:origin];
}

- (void)addToPlaylistExternal:(id)sender {
	[self doAddToPlaylist:sender origin:URLOriginExternal];
}

- (IBAction)setAsPlaylist:(id)sender {
	[controller clear:sender];
	[self addToPlaylist:sender];
}

- (IBAction)playPauseResume:(NSObject *)id {
	[controller playPauseResume:id];
}

- (IBAction)showEntryInFinder:(id)sender {
	NSUInteger index;
	NSWorkspace *ws = [NSWorkspace sharedWorkspace];
	NSIndexSet *selectedIndexes = [outlineView selectedRowIndexes];

	for(index = [selectedIndexes firstIndex];
	    index != NSNotFound; index = [selectedIndexes indexGreaterThanIndex:index]) {
		NSURL *url = [[outlineView itemAtRow:index] URL];
		[ws selectFile:[url path] inFileViewerRootedAtPath:[url path]];
	}
}

- (IBAction)setAsRoot:(id)sender {
	NSUInteger index = [[outlineView selectedRowIndexes] firstIndex];

	if(index != NSNotFound) {
		[dataSource changeURL:[[outlineView itemAtRow:index] URL]];
	}
}

- (BOOL)validateMenuItem:(NSMenuItem *)menuItem {
	SEL action = [menuItem action];

	if([outlineView numberOfSelectedRows] == 0)
		return NO;

	if(action == @selector(setAsRoot:)) {
		BOOL isDir;
		NSInteger row = [outlineView selectedRow];

		if([outlineView numberOfSelectedRows] > 1)
			return NO;

		// Only let directories be Set as Root
		[[NSFileManager defaultManager] fileExistsAtPath:[[[outlineView itemAtRow:row] URL] path] isDirectory:&isDir];
		return isDir;
	}

	return YES;
}
@end