-(void)draggedImage:(NSImage *)image endedAt:(NSPoint)screenPoint operation:(NSDragOperation)operation{
を書けばわかる、ということがわかった。本当はControllerに書きたいところだけどサブクラス化したNSTableViewに書かないといけない。プロトコルの関係で。
このメソッドの中で
-(void)draggedImage:(NSImage *)image endedAt:(NSPoint)screenPoint operation:(NSDragOperation)operation{ if(operation==NSDragOperationDelete){ //何らかの処理 } }と書けばいい。ただしNSDragOperationしか渡ってこないので、
NSPasteboard* pboard=[NSPasteboard pasteboardWithName:NSDragPboard];でPasteBoardを取得して、そこから得たURLを操作する必要がある。
ふー、っと。これでURLをrecycleURLs:で処理すれば無事ゴミ箱へのDropができるわけだが、今のところの問題点は2つ。
1,ゴミ箱に入れたファイルを戻せない。NSUndoManagerとやりとりする必要がある、のか?
2,ゴミ箱に入れたファイルは当然TableViewからも消えるようにしないといけない。いちいちNSURLをデータ用のArryaから検索するより、「ファイルシステムの変更を通知してもらう」形にしたほうが汎用性が高い。NSWorkspaceDidPerformFileOperationNotificationを使う、あるいはNSWorkSpace noteFileSystemChanged:を使うのか・・・
というわけで以降は明日。
0 件のコメント:
コメントを投稿