Forgot file drawer files.

CQTexperiment
vspader 2007-10-18 02:52:03 +00:00
parent 97ff03f184
commit e54c72aae0
2 changed files with 120 additions and 0 deletions

View File

@ -0,0 +1,23 @@
//
// FileTreeDataSource.h
// Cog
//
// Created by Vincent Spader on 10/14/07.
// Copyright 2007 __MyCompanyName__. All rights reserved.
//
#import <Cocoa/Cocoa.h>
@class PathNode;
@interface FileTreeDataSource : NSObject {
PathNode *rootNode;
IBOutlet NSOutlineView *outlineView;
}
- (void)setRootPath:(NSString *)rootPath;
- (void)reloadPathNode:(PathNode *)item;
@end

View File

@ -0,0 +1,97 @@
//
// FileTreeDataSource.m
// Cog
//
// Created by Vincent Spader on 10/14/07.
// Copyright 2007 __MyCompanyName__. All rights reserved.
//
#import "FileTreeDataSource.h"
#import "DNDArrayController.h"
#import "DirectoryNode.h"
@implementation FileTreeDataSource
- (void)awakeFromNib
{
[self setRootPath: [[[NSUserDefaultsController sharedUserDefaultsController] defaults] objectForKey:@"fileDrawerRootPath"] ];
}
- (void)setRootPath: (NSString *)rootPath
{
[[[[outlineView tableColumns] objectAtIndex:0] headerCell] setStringValue:[[NSFileManager defaultManager] displayNameAtPath:rootPath]];
[rootNode release];
rootNode = [[DirectoryNode alloc] initWithDataSource:self url:[NSURL fileURLWithPath:rootPath]];
[self reloadPathNode:rootNode];
}
- (int)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item
{
PathNode *n = (item == nil ? rootNode : item);
return [[n subpaths] count];
}
- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item
{
PathNode *n = (item == nil ? rootNode : item);
return ([n isLeaf] == NO);
}
- (id)outlineView:(NSOutlineView *)outlineView child:(int)index ofItem:(id)item
{
PathNode *n = (item == nil ? rootNode : item);
return [[n subpaths] objectAtIndex:index];
}
- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item
{
PathNode *n = (item == nil ? rootNode : item);
return n;
}
//Drag it drop it
- (BOOL)outlineView:(NSOutlineView *)outlineView writeItems:(NSArray*)items toPasteboard:(NSPasteboard*)pboard {
//Get selected paths
NSMutableArray *urls = [NSMutableArray arrayWithCapacity:[items count]];
NSEnumerator *e = [items objectEnumerator];
id p;
while (p = [e nextObject]) {
[urls addObject:[p url]];
}
NSLog(@"URLS: %@", urls);
[pboard declareTypes:[NSArray arrayWithObjects:CogUrlsPbboardType,nil] owner:nil]; //add it to pboard
[pboard setData:[NSArchiver archivedDataWithRootObject:urls] forType:CogUrlsPbboardType];
return YES;
}
- (void)reloadPathNode:(PathNode *)item
{
if (item == rootNode)
{
[outlineView reloadData];
}
else
{
[outlineView reloadItem:item reloadChildren:YES];
}
}
- (void)dealloc
{
[rootNode release];
[super dealloc];
}
@end