Skip to content
Example for dragging files from the desktop to any CPView in a Cappuccino app running in a browser.
Objective-J JavaScript
Failed to load latest commit information.
Frameworks adding all files May 30, 2010
Resources adding all files May 30, 2010
AppController.j Added support for CPCollectionView by using the insertAsFirstSubview:… Jul 20, 2010
DCFileDropCollectionViewController.j Added support for CPCollectionView by using the insertAsFirstSubview:… Jul 20, 2010
DCFileDropCollectionViewItemView.j
DCFileDropController.j Added support for NativeHost by using an iframe Sep 26, 2010
DCFileDropRowView.j removed more the rest of the "pointers" :) Jul 13, 2010
DCFileDropTableViewController.j Added support for CPCollectionView by using the insertAsFirstSubview:… Jul 20, 2010
DCFileUpload.j Remove useless stuff I added since that particular method doesn't exi… Jul 13, 2010
DCFileUploadManager.j Added better interaction with the upload manager delegate and individ… Jul 13, 2010
DCFileUploadsPanel.j
DCFileUploadsRowView.j adding all files May 30, 2010
DCProgressIndicator.j
DragDropUpload.atlasproj Added support for NativeHost by using an iframe Sep 27, 2010
Info.plist adding all files May 30, 2010
Jakefile
README.markdown Removed pointer asterisks in README.markdown Jan 2, 2011
index-debug.html
index.html
main.j
upload.php adding all files May 30, 2010

README.markdown

Deep Drop Upload

Example

These classes allow you to turn any CPView in a Cappuccino app into a file upload drop zone. It supports multiple files dropped at once. It works in Safari and Chrome. Firefox support is possible, but hasn't been added.

The most useful classes are:

  • DCFileDropController.j
  • DCFileUploadManager.j
  • DCFileUpload.j

Usage

Import these classes:

@import "DCFileDropController.j"
@import "DCFileUploadManager.j"

Apply a DCFileDropController to any CPView:

var fileDropUploadController = [[DCFileDropController alloc] 
    initWithView:anyView 
    dropDelegate:self 
    uploadURL:[CPURL URLWithString:@"upload.php"] 
    uploadManager:[DCFileUploadManager sharedManager]];

If you want to change visual state of the view, you can do that with this dropDelegate method:

- (void)fileDropUploadController:(DCFileDropController)theController setState:(BOOL)visible {
    if (visible) {
        [theController.view setBackgroundColor:[CPColor colorWithRed:0.0 green:0.0 blue:1.0 alpha:0.2]];
    } else {
        [theController.view setBackgroundColor:[CPColor clearColor]];
    }
}

If you want to display progress, you can set the DCFileUploadManager delegate:

[[DCFileUploadManager sharedManager] setDelegate:uploadsPanel];

And process it with this method:

- (void)fileUploadManagerDidChange:(DCFileUploadManager)theManager {
    var fileUploads = [theManager fileUploads];
}

Attribution

This technique is based on code from CSS Ninja.

License

MIT License

Something went wrong with that request. Please try again.