aboutsummaryrefslogtreecommitdiffstats
path: root/Source/SPOutlineView.m
diff options
context:
space:
mode:
authorBibiko <bibiko@eva.mpg.de>2010-11-25 09:00:02 +0000
committerBibiko <bibiko@eva.mpg.de>2010-11-25 09:00:02 +0000
commit6a4fab961e1efd1f8eb55aa2806f17cde027f36c (patch)
tree9e3c5776b20deaba488b031ab29a29954cfc4e7d /Source/SPOutlineView.m
parentf51f2b3d87a59a94d5bc16850debfec5128b50ed (diff)
downloadsequelpro-6a4fab961e1efd1f8eb55aa2806f17cde027f36c.tar.gz
sequelpro-6a4fab961e1efd1f8eb55aa2806f17cde027f36c.tar.bz2
sequelpro-6a4fab961e1efd1f8eb55aa2806f17cde027f36c.zip
• further work on Bundle Editor's outline view
Diffstat (limited to 'Source/SPOutlineView.m')
-rw-r--r--Source/SPOutlineView.m58
1 files changed, 58 insertions, 0 deletions
diff --git a/Source/SPOutlineView.m b/Source/SPOutlineView.m
index f60807f3..1cf5055a 100644
--- a/Source/SPOutlineView.m
+++ b/Source/SPOutlineView.m
@@ -26,6 +26,55 @@
@implementation SPOutlineView
+- (id)init
+{
+ if(self = [super init]){
+ ;
+ }
+ return self;
+}
+
+/**
+ * Right-click at row will select that row before ordering out the contextual menu
+ * if not more than one row is selected.
+ */
+- (NSMenu *)menuForEvent:(NSEvent *)event
+{
+
+ // Check for SPBundleEditorController if right-click on expamdable item, then suppress context menu
+ if ([[[[self delegate] class] description] isEqualToString:@"SPBundleEditorController"]) {
+
+ // If more than one row is selected only returns the default contextual menu
+ if ([self numberOfSelectedRows] > 1) return nil;
+
+ // Right-click at a row will select that row before ordering out the context menu
+ NSInteger row = [self rowAtPoint:[self convertPoint:[event locationInWindow] fromView:nil]];
+
+ if (row >= 0 && row < [self numberOfRows]) {
+ [self selectRowIndexes:[NSIndexSet indexSetWithIndex:row] byExtendingSelection:NO];
+ [[self window] makeFirstResponder:self];
+ }
+
+ if (![[self itemAtRow:[self selectedRow]] isLeaf])
+ return nil;
+ return [self menu];
+ }
+
+
+ // If more than one row is selected only returns the default contextual menu
+ if ([self numberOfSelectedRows] > 1) return [self menu];
+
+ // Right-click at a row will select that row before ordering out the context menu
+ NSInteger row = [self rowAtPoint:[self convertPoint:[event locationInWindow] fromView:nil]];
+
+ if (row >= 0 && row < [self numberOfRows]) {
+ [self selectRowIndexes:[NSIndexSet indexSetWithIndex:row] byExtendingSelection:NO];
+ [[self window] makeFirstResponder:self];
+ }
+
+ return [self menu];
+}
+
- (BOOL)acceptsFirstResponder
{
return YES;
@@ -33,7 +82,16 @@
- (void)keyDown:(NSEvent *)theEvent
{
+
if ([self numberOfSelectedRows] == 1 && ([theEvent keyCode] == 36 || [theEvent keyCode] == 76)) {
+ if ([[[[self delegate] class] description] isEqualToString:@"SPBundleEditorController"]) {
+ if([[self delegate] respondsToSelector:@selector(outlineView:shouldEditTableColumn:item:)] &&
+ [[self delegate] outlineView:self shouldEditTableColumn:[self tableColumnWithIdentifier:@"bundleName"] item:[self itemAtRow:[self selectedRow]]]
+ )
+ [self editColumn:0 row:[self selectedRow] withEvent:nil select:YES];
+ else
+ return;
+ }
[self editColumn:0 row:[self selectedRow] withEvent:nil select:YES];
}