Initial implementation of browser context menu.
[pithos-macos] / pithos-macos / PithosBrowserController.m
index 112cb4d..11e2bdc 100644 (file)
@@ -99,6 +99,7 @@
 
 @interface PithosBrowserController (Private) {}
 - (void)resetContainers;
+- (void)getInfo:(NSMenuItem *)sender;
 @end
 
 @implementation PithosBrowserController
 
 - (void)dealloc {
     [[NSNotificationCenter defaultCenter] removeObserver:self];
+    [browserMenu release];
     [sharedPreviewController release];
     [outlineViewDataSourceArray release];
     [accountNode release];
     [rootNode release];
-    [browser release];
-    [splitView release];
-    [outlineView release];
     [super dealloc];
 }
 
     [browser setDraggingSourceOperationMask:NSDragOperationCopy forLocal:NO];
     
     [browser setCellClass:[PithosBrowserCell class]];
+    
+    browserMenu = [[NSMenu alloc] init];
+    [browserMenu setDelegate:self];
+    [browser setMenu:browserMenu];
 }
 
 - (void)resetContainers {
@@ -452,4 +455,29 @@ forDraggedRowsWithIndexes:(NSIndexSet *)rowIndexes inColumn:(NSInteger)column {
     }
 }
 
+#pragma mark -
+#pragma mark NSMenuDelegate
+
+- (void)menuNeedsUpdate:(NSMenu *)menu {
+    NSInteger column = [browser clickedColumn];
+    NSInteger row = [browser clickedRow];
+    [menu removeAllItems];
+    if ((column == -1) || (row == -1)) {
+        // General context menu has 0
+    } else {
+        // PithosNode menu has 1 items
+        // Get Info
+        NSMenuItem *menuItem = [[NSMenuItem alloc] initWithTitle:@"Get Info" action:@selector(getInfo:) keyEquivalent:@""];
+        [menuItem setRepresentedObject:[browser itemAtRow:row inColumn:column]];
+        [menu addItem:menuItem];
+    }
+}
+
+#pragma mark -
+#pragma mark Menu Actions
+
+- (void)getInfo:(NSMenuItem *)sender {
+    [(PithosNode *)[sender representedObject] showPithosNodeInfo:sender];
+}
+
 @end
\ No newline at end of file