cog/FileDrawer/FileOutlineView.m

92 lines
2.5 KiB
Objective-C

//
// FileOutlineView.m
// BindTest
//
// Created by Vincent Spader on 8/20/06.
// Copyright 2006 Vincent Spader. All rights reserved.
//
#import "FileOutlineView.h"
#import "FileIconCell.h"
@interface FileOutlineView (KFTypeSelectTableViewSupport)
- (void)findPrevious:(id)sender;
- (void)findNext:(id)sender;
@end
@implementation FileOutlineView
- (void) awakeFromNib
{
NSEnumerator *e = [[self tableColumns] objectEnumerator];
id c;
while ((c = [e nextObject]))
{
// id headerCell = [[ImageTextCell alloc] init];
id dataCell = [[FileIconCell alloc] init];
[dataCell setLineBreakMode:NSLineBreakByTruncatingTail];
// [c setHeaderCell: headerCell];
[c setDataCell: dataCell];
}
}
- (BOOL)acceptsFirstResponder
{
return YES;
}
- (BOOL)resignFirstResponder
{
return YES;
}
//Navigate outline view with the keyboard, send select actions to delegate
- (void)keyDown:(NSEvent *)theEvent
{
if (!([theEvent modifierFlags] & NSCommandKeyMask)) {
NSString *charString = [theEvent charactersIgnoringModifiers];
unichar pressedChar = 0;
//Get the pressed character
if ([charString length] == 1) pressedChar = [charString characterAtIndex:0];
if (pressedChar == NSDeleteFunctionKey || pressedChar == NSBackspaceCharacter || pressedChar == NSDeleteCharacter) { //Delete
//As Weird-al said....EAT IT JUST EAT IT!!!
[self kfResetSearch];
} else if (pressedChar == NSCarriageReturnCharacter || pressedChar == NSEnterCharacter) { //Enter or return
//Add songs to list
[[self delegate] addSelectedToPlaylist];
[fileDrawer close];
} else if (pressedChar == 0x1b) {//Escape
[fileDrawer close];
} else if (pressedChar == NSLeftArrowFunctionKey || pressedChar == NSRightArrowFunctionKey) { //left or right
[super keyDown:theEvent];
[self kfResetSearch];
} else if ((pressedChar == '\031') && // backtab
([self respondsToSelector:@selector(findPrevious:)])) {
/* KFTypeSelectTableView supports findPrevious; backtab is added to AIOutlineView as a find previous action
* if KFTypeSelectTableView is being used via posing */
[self findPrevious:self];
} else if ((pressedChar == '\t') &&
([self respondsToSelector:@selector(findNext:)])) {
/* KFTypeSelectTableView supports findNext; tab is added to AIOutlineView as a find next action
* if KFTypeSelectTableView is being used via posing */
[self findNext:self];
} else {
[super keyDown:theEvent];
}
} else {
[super keyDown:theEvent];
}
}
@end