From efdcfb17f87863fef42f209f72eb4c4ccd888d35 Mon Sep 17 00:00:00 2001 From: Bibiko Date: Fri, 13 Aug 2010 13:11:07 +0000 Subject: =?UTF-8?q?=E2=80=A2=20fixed=20bug=20while=20closing=20a=20tab=20t?= =?UTF-8?q?o=20remove=20the=20connection=20from=20Navigator=20=E2=80=A2=20?= =?UTF-8?q?FIRST=20implementation=20to=20allow=20to=20drag=20a=20table=20f?= =?UTF-8?q?rom=20the=20Navigator=20to=20the=20connection=20window's=20tabl?= =?UTF-8?q?e=20list=20to=20copy=20this=20table=20with=20content=20(it=20wo?= =?UTF-8?q?rks=20but=20needs=20to=20be=20improved!)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Source/SPNavigatorController.m | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) (limited to 'Source/SPNavigatorController.m') diff --git a/Source/SPNavigatorController.m b/Source/SPNavigatorController.m index 191e7043..3ce8a090 100644 --- a/Source/SPNavigatorController.m +++ b/Source/SPNavigatorController.m @@ -37,6 +37,7 @@ static SPNavigatorController *sharedNavigatorController = nil; #define DragFromNavigatorPboardType @"SPDragFromNavigatorPboardType" +#define DragTableDataFromNavigatorPboardType @"SPDragTableDataFromNavigatorPboardType" @implementation SPNavigatorController @@ -131,7 +132,7 @@ static NSComparisonResult compareStrings(NSString *s1, NSString *s2, void* conte prefs = [NSUserDefaults standardUserDefaults]; [self setWindowFrameAutosaveName:@"SPNavigator"]; - [outlineSchema2 registerForDraggedTypes:[NSArray arrayWithObjects:DragFromNavigatorPboardType, NSStringPboardType, nil]]; + [outlineSchema2 registerForDraggedTypes:[NSArray arrayWithObjects:DragTableDataFromNavigatorPboardType, DragFromNavigatorPboardType, NSStringPboardType, nil]]; [outlineSchema2 setDraggingSourceOperationMask:NSDragOperationEvery forLocal:YES]; [outlineSchema2 setDraggingSourceOperationMask:NSDragOperationEvery forLocal:NO]; @@ -1082,7 +1083,7 @@ static NSComparisonResult compareStrings(NSString *s1, NSString *s2, void* conte - (BOOL)outlineView:(NSOutlineView *)outlineView writeItems:(NSArray *)items toPasteboard:(NSPasteboard *)pboard { // Provide data for our custom type, and simple NSStrings. - [pboard declareTypes:[NSArray arrayWithObjects:DragFromNavigatorPboardType, NSStringPboardType, nil] owner:self]; + [pboard declareTypes:[NSArray arrayWithObjects:DragTableDataFromNavigatorPboardType, DragFromNavigatorPboardType, NSStringPboardType, nil] owner:self]; // Collect the actual schema paths without leading connection ID NSMutableArray *draggedItems = [NSMutableArray array]; @@ -1101,6 +1102,16 @@ static NSComparisonResult compareStrings(NSString *s1, NSString *s2, void* conte [archiver finishEncoding]; [pboard setData:arraydata forType:DragFromNavigatorPboardType]; + if([draggedItems count] == 1) { + NSArray *pathComponents = [[draggedItems objectAtIndex:0] componentsSeparatedByString:SPUniqueSchemaDelimiter]; + // Is a table? + if([pathComponents count] == 2) { + [pboard setString:[NSString stringWithFormat:@"CREATE TABLE IF NOT EXISTS %@ SELECT * FROM %@", + [[pathComponents lastObject] backtickQuotedString], + [pathComponents componentsJoinedByPeriodAndBacktickQuoted] + ] forType:DragTableDataFromNavigatorPboardType]; + } + } // For external destinations provide a comma separated string NSMutableString *dragString = [NSMutableString string]; for(id item in draggedItems) { -- cgit v1.2.3