// // DropImageView.m // DragNDrop // // Created by Dominik Hofacker on 26.11.11. // Copyright (c) 2011 CCoding. All rights reserved. // #import "DropImageView.h" #import "ZGFileUtils.h" @implementation DropImageView @synthesize delegate = _delegate; - (id)initWithCoder:(NSCoder *)aDecoder { self = [super initWithCoder:aDecoder]; if (self) { [self registeredDraggedTypes]; } return self; } - (NSDragOperation)draggingEntered:(id)sender { highlight = YES; [self setNeedsDisplay: YES]; return NSDragOperationCopy; } - (void)draggingExited:(id)sender { highlight = NO; [self setNeedsDisplay:YES]; } - (void)drawRect:(NSRect)dirtyRect { [super drawRect:dirtyRect]; if (highlight) { [[NSColor grayColor]set]; [NSBezierPath setDefaultLineWidth:5]; [NSBezierPath strokeRect:dirtyRect]; } } - (BOOL)prepareForDragOperation:(id)sender { highlight = NO; [self setNeedsDisplay:YES]; return YES; } - (BOOL)performDragOperation:(id)sender { if ([sender draggingSource] != self) { NSURL *fileURL = [NSURL URLFromPasteboard:[sender draggingPasteboard]]; // NSString *filePath = [[fileURL path] stringByAppendingString:@"/"]; NSString *filePath = [fileURL path]; if ([ZGFileUtils pathIsDirectory:[fileURL path]]) { [_delegate dropImageView:self didSelectDirectory:filePath]; } else { [_delegate dropImageView:self didSelectFile:filePath]; } } return YES; } @end