Develop and Download Open Source Software

Browse Subversion Repository

Annotation of /XspfManager/XspfMListViewController.m

Parent Directory Parent Directory | Revision Log Revision Log


Revision 212 - (hide annotations) (download)
Mon Jan 4 16:35:55 2010 UTC (14 years, 3 months ago) by masaki
File size: 3201 byte(s)
[New] コンテクストメニューの生成を行い、ラベルを設定出来るようにした。
1 masaki 21 //
2     // XspfMListViewController.m
3     // XspfManager
4     //
5     // Created by Hori,Masaki on 09/11/07.
6     // Copyright 2009 masakih. All rights reserved.
7     //
8    
9     #import "XspfMListViewController.h"
10    
11 masaki 192 #import "XspfManager.h"
12 masaki 21
13 masaki 212 #import "XspfMTableView.h"
14    
15     #import "XSPFMXspfObject.h"
16 masaki 205 #import "XspfMLabelMenuItem.h"
17 masaki 192
18 masaki 205
19 masaki 21 @implementation XspfMListViewController
20    
21 masaki 24 - (id)init
22     {
23     [super initWithNibName:@"ListView" bundle:nil];
24    
25     return self;
26     }
27 masaki 212 - (void)awakeFromNib
28     {
29     [tableView setDoubleAction:@selector(openXspf:)];
30     [tableView registerForDraggedTypes:[NSArray arrayWithObjects:NSFilenamesPboardType, nil]];
31    
32     // [tableView setMenu:[self contextMenuForObject:nil]];
33     }
34 masaki 24
35 masaki 212
36     - (IBAction)changeLabel:(id)sender
37 masaki 205 {
38 masaki 212 XSPFMXspfObject *object = [sender representedObject];
39     object.label = [sender objectValue];
40     }
41    
42     - (NSMenu *)contextMenuForObject:(XSPFMXspfObject *)object
43     {
44 masaki 205 NSMenu *menu = [[[NSMenu alloc] initWithTitle:@"title"] autorelease];
45    
46     NSMenuItem *item = [[[NSMenuItem alloc] initWithTitle:@"Label is Menu" action:Nil keyEquivalent:@""] autorelease];
47     [menu addItem:item];
48    
49     item = [[[XspfMLabelMenuItem alloc] initWithTitle:@"Label:" action:Nil keyEquivalent:@""] autorelease];
50     [menu addItem:item];
51 masaki 212 [(XspfMLabelMenuItem *)item setObjectValue:object.label];
52     [item setAction:@selector(changeLabel:)];
53     [item setRepresentedObject:object];
54 masaki 205
55     item = [[[NSMenuItem alloc] initWithTitle:@"This is MenuMMMMMMMMMMMMMMMMMMMMMM" action:Nil keyEquivalent:@""] autorelease];
56     [menu addItem:item];
57    
58     return menu;
59     }
60    
61 masaki 212 - (NSMenu *)tableView:(XspfMTableView *)table menuForEvent:(NSEvent *)event
62 masaki 32 {
63 masaki 212 NSPoint mouse = [table convertPoint:[event locationInWindow] fromView:nil];
64     NSInteger row = [table rowAtPoint:mouse];
65     if(row == NSNotFound || row == -1) return nil;
66 masaki 205
67 masaki 212 XSPFMXspfObject *object = [[[self representedObject] arrangedObjects] objectAtIndex:row];
68     return [self contextMenuForObject:object];
69 masaki 32 }
70 masaki 192 - (void)tableView:(NSTableView *)table sortDescriptorsDidChange:(NSArray *)oldDescriptors
71     {
72 masaki 204 // HMLog(HMLogLevelDebug, @"Enter %@, desc-> %@", NSStringFromSelector(_cmd), [table sortDescriptors]);
73 masaki 192 id controller = [self representedObject];
74     [controller willChangeValueForKey:@"selectionIndexes"];
75     [controller didChangeValueForKey:@"selectionIndexes"];
76     }
77    
78    
79 masaki 111 - (NSDragOperation)tableView:(NSTableView*)table
80     validateDrop:(id <NSDraggingInfo>)info
81     proposedRow:(NSInteger)row
82     proposedDropOperation:(NSTableViewDropOperation)dropOperation
83     {
84     id pb = [info draggingPasteboard];
85     id plist = [pb propertyListForType:NSFilenamesPboardType];
86    
87     NSWorkspace *ws = [NSWorkspace sharedWorkspace];
88     NSError *error = nil;
89     for(NSString *filePath in plist) {
90     NSString *type = [ws typeOfFile:filePath error:&error];
91     if(![ws type:type conformsToType:@"com.masakih.xspf"]) {
92     return NSDragOperationNone;
93     }
94     }
95     [table setDropRow:row dropOperation:NSTableViewDropAbove];
96    
97     return NSDragOperationCopy;
98     }
99    
100     - (BOOL)tableView:(NSTableView*)table
101     acceptDrop:(id <NSDraggingInfo>)info
102     row:(NSInteger)row
103     dropOperation:(NSTableViewDropOperation)dropOperation
104     {
105     id pb = [info draggingPasteboard];
106     id plist = [pb propertyListForType:NSFilenamesPboardType];
107    
108 masaki 184 [[NSApp delegate] registerFilePaths:plist];
109 masaki 111
110     return YES;
111     }
112    
113 masaki 21 @end

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26