// // DragWell.m // Fuse-PDF-App // // Created by Chris Dolan on 12/12/07. // Copyright 2007 Clotho Advanced Media, Inc.. All rights reserved. // #import "DragWell.h" @implementation DragWell -(void)setCallback:(Callback*)cb { [callback release]; callback = cb; [callback retain]; } -(void)highlight:(BOOL)b { //[[self contentView] setHidden:!b]; } - (NSArray *) getFilenamesFromPBoard:(id )sender { if ([sender draggingSourceOperationMask] & NSDragOperationLink) { NSPasteboard *pboard = [sender draggingPasteboard]; if ( [[pboard types] containsObject:NSFilenamesPboardType] ) { NSArray *arr = [pboard propertyListForType:NSFilenamesPboardType]; if (arr) { return arr; //return [arr pathsMatchingExtensions:[NSArray arrayWithObject:@"pdf"]]; } } } return nil; } - (NSDragOperation)draggingEntered:(id )sender { printf("drag entered\n"); //NSPasteboard *pboard = [sender draggingPasteboard]; NSArray *filenames = [self getFilenamesFromPBoard:sender]; if ( filenames ) { NSString *filename = [filenames objectAtIndex:0]; if (filename) { printf("PDF? %s\n", [filename UTF8String]); if (NSOrderedSame == [[filename pathExtension] caseInsensitiveCompare:@"pdf"]) { [self highlight:YES]; return NSDragOperationLink; } } } return NSDragOperationNone; } - (void)draggingExited:(id )sender { printf("drag exited\n"); [self highlight:NO]; } - (BOOL)performDragOperation:(id )sender { BOOL accept = NO; NSArray *filenames = [self getFilenamesFromPBoard:sender]; int i; for (i = 0; i < [filenames count]; ++i) { NSString *filename = [filenames objectAtIndex:i]; if (filename) { if (NSOrderedSame == [[filename pathExtension] caseInsensitiveCompare:@"pdf"]) { [callback invoke:filename]; accept = YES; } } } return accept; } @end