From 313c5bc247548319dc1f93c9ece04ea4326d37e8 Mon Sep 17 00:00:00 2001 From: Bibiko Date: Mon, 4 Jan 2010 12:59:51 +0000 Subject: =?UTF-8?q?=E2=80=A2=20remember=20scrollview=20port=20and=20select?= =?UTF-8?q?ed=20row=20after=20editing=20in=20the=20Custom=20Query=20table?= =?UTF-8?q?=20view=20-=20after=20reloading=20the=20entire=20data=20the=20t?= =?UTF-8?q?able=20view=20port=20will=20be=20restored=20but=20this=20leads?= =?UTF-8?q?=20up=20to=20now=20to=20a=20"tiny=20jitter"=20(maybe=20fixable?= =?UTF-8?q?=20in=20the=20near=20future)=20-=20the=20re-selection=20does=20?= =?UTF-8?q?NOT=20follow=20the=20actual=20edited=20row,=20e.g.=20if=20one?= =?UTF-8?q?=20changes=20a=20cell=20value=20whose=20column=20is=20used=20fo?= =?UTF-8?q?r=20sorting=20the=20actual=20edited=20row=20could=20appear=20so?= =?UTF-8?q?mewhere=20=E2=80=A2=20if=20the=20editing=20in=20the=20Custom=20?= =?UTF-8?q?Query=20table=20view=20was=20invoked=20by=20pressing=20RETURN/E?= =?UTF-8?q?NTER=20one=20can=20go=20through=20the=20columns=20by=20pressing?= =?UTF-8?q?=20ESC=20but=20up=20to=20now=20that=20editing=20will=20be=20int?= =?UTF-8?q?errupted=20after=20the=20user=20pressed=20OK=20-=20this=20behav?= =?UTF-8?q?iour=20is=20temporary=20and=20should=20be=20fixed=20in=20the=20?= =?UTF-8?q?near=20future=20by=20storing=20the=20new=20row=20data=20tempora?= =?UTF-8?q?rily;=20after=20editing=20the=20last=20column=20AND=20if=20all?= =?UTF-8?q?=20columns=20have=20the=20same=20table=20origin=20the=20row=20d?= =?UTF-8?q?ata=20will=20be=20updated.=20To=20allow=20the=20row=20editing?= =?UTF-8?q?=20for=20columns=20which=20have=20different=20table=20origins?= =?UTF-8?q?=20could=20probably=20cause=20inconsistencies.=20-=20further=20?= =?UTF-8?q?discussion=20is=20needed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Interfaces/English.lproj/DBView.xib | 254 +++++++++++++++++++++++++++++++----- Source/CMCopyTable.m | 17 ++- Source/CustomQuery.h | 3 + Source/CustomQuery.m | 32 +++-- 4 files changed, 262 insertions(+), 44 deletions(-) diff --git a/Interfaces/English.lproj/DBView.xib b/Interfaces/English.lproj/DBView.xib index dc251b32..01547322 100644 --- a/Interfaces/English.lproj/DBView.xib +++ b/Interfaces/English.lproj/DBView.xib @@ -23,13 +23,13 @@ YES - + YES com.brandonwalkin.BWToolkit - com.apple.InterfaceBuilder.CocoaPlugin com.apple.WebKitIBPlugin + com.apple.InterfaceBuilder.CocoaPlugin YES @@ -59,7 +59,7 @@ Sequel Pro NSWindow View - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} {780, 480} @@ -237,7 +237,7 @@ controlColor 3 - MC42NjY2NjY2NjY3AA + MC42NjY2NjY2ODY1AA @@ -2140,7 +2140,7 @@ content - + 256 YES @@ -2880,7 +2880,6 @@ {{10, 7}, {700, 544}} - Content @@ -2889,7 +2888,7 @@ customQuery - + 256 YES @@ -2916,6 +2915,29 @@ 6418 + + YES + + YES + Apple HTML pasteboard type + Apple PDF pasteboard type + Apple PICT pasteboard type + Apple PNG pasteboard type + Apple URL pasteboard type + CorePasteboardFlavorType 0x6D6F6F76 + NSColor pasteboard type + NSFilenamesPboardType + NSStringPboardType + NeXT Encapsulated PostScript v1.2 pasteboard type + NeXT RTFD pasteboard type + NeXT Rich Text Format v1.0 pasteboard type + NeXT TIFF v4.0 pasteboard type + NeXT font pasteboard type + NeXT ruler pasteboard type + WebURLsWithTitlesPboardType + public.url + + {688, 14} @@ -3762,6 +3784,7 @@ {{10, 7}, {700, 544}} + Custom Query @@ -4806,14 +4829,14 @@ - + 134217731 YES YES YES - + @@ -4833,7 +4856,7 @@ {{0, 0}, {1920, 1178}} {780, 502} - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} @@ -6009,7 +6032,7 @@ View - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} {213, 107} @@ -6289,7 +6312,7 @@ {{0, 0}, {1440, 878}} {213, 129} - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} 1 @@ -6301,7 +6324,7 @@ View - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} {213, 107} @@ -6457,7 +6480,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 {{0, 0}, {1440, 878}} {213, 129} - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} 1 @@ -6467,7 +6490,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 New Relation NSPanel - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} 256 @@ -7068,7 +7091,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 {302, 307} {{0, 0}, {1440, 878}} - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} 3 @@ -7080,7 +7103,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 View - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} {213, 50} @@ -7200,7 +7223,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 {{0, 0}, {1920, 1178}} {213, 72} - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} 9 @@ -7212,7 +7235,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 View - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} {213, 107} @@ -7347,7 +7370,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 {{0, 0}, {1440, 878}} {213, 129} - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} 15 @@ -7359,7 +7382,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 View - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} {350, 200} @@ -7561,7 +7584,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 {{0, 0}, {1680, 1028}} {350, 222} - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} 9 @@ -7573,7 +7596,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 View - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} {213, 107} @@ -7722,7 +7745,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 {{0, 0}, {1440, 878}} {213, 129} - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} 31 @@ -7732,7 +7755,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 MySQL Help NSPanel - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} {351, 120} @@ -8126,7 +8149,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 {{0, 0}, {1280, 1002}} {351, 136} - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} MYSQL_HELP_WINDOW @@ -8139,7 +8162,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 View - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} {350, 250} @@ -8530,7 +8553,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 {{0, 0}, {1920, 1178}} {350, 272} - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} 9 @@ -8663,7 +8686,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 Secure Text Input Sheet NSPanel - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} 256 @@ -8767,7 +8790,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 {338, 138} {{0, 0}, {1280, 778}} - {1.79769e+308, 1.79769e+308} + {3.40282e+38, 3.40282e+38} @@ -10633,7 +10656,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 disabledControlTextColor 3 - MC4zMzMzMzMzMzMzAA + MC4zMzMzMzMzNDMzAA @@ -14779,6 +14802,14 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 6666 + + + customQueryScrollView + + + + 6667 + @@ -23000,10 +23031,10 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{58, 306}, {944, 550}} + {{313, 430}, {944, 550}} com.apple.InterfaceBuilder.CocoaPlugin - {{58, 306}, {944, 550}} + {{313, 430}, {944, 550}} {{62, 352}, {845, 504}} @@ -24117,7 +24148,7 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 - 6666 + 6667 @@ -25619,6 +25650,161 @@ IGRvIHlvdSB3YW50IHRvIGFkZCBmb3IgdGhpcyBmaWVsZD8 + + YES + + CustomQuery + NSObject + + YES + + YES + chooseQueryFavorite: + chooseQueryHistory: + closeSheet: + filterQueryFavorites: + filterQueryHistory: + gearMenuItemSelected: + helpSearchFindNextInPage: + helpSearchFindPreviousInPage: + helpSegmentDispatcher: + helpSelectHelpTargetMySQL: + helpSelectHelpTargetPage: + helpSelectHelpTargetWeb: + helpTargetDispatcher: + runAllQueries: + runSelectedQueries: + showAutoHelpForCurrentWord: + showHelpForCurrentWord: + showHelpForSearchString: + + + YES + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + id + + + + YES + + YES + affectedRowsText + autohelpMenuItem + autoindentMenuItem + autopairMenuItem + autouppercaseKeywordsMenuItem + clearHistoryMenuItem + commentCurrentQueryMenuItem + commentLineOrSelectionMenuItem + completionListMenuItem + customQueryScrollView + customQueryView + editorFontMenuItem + errorText + helpNavigator + helpSearchField + helpSearchFieldCell + helpTargetSelector + helpWebView + helpWebViewWindow + multipleLineEditingButton + queryFavoriteNameTextField + queryFavoritesButton + queryFavoritesSaveAllMenuItem + queryFavoritesSaveAsMenuItem + queryFavoritesSearchField + queryFavoritesSearchFieldView + queryFavoritesSearchMenuItem + queryFavoritesSheet + queryHistoryButton + queryHistorySearchField + queryHistorySearchFieldView + queryHistorySearchMenuItem + runAllButton + runAllMenuItem + runSelectionButton + runSelectionMenuItem + saveQueryFavoriteButton + saveQueryFavoriteGlobal + shiftLeftMenuItem + shiftRightMenuItem + tableDocumentInstance + tableWindow + textView + valueSheet + valueTextField + + + YES + id + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSMenuItem + NSScrollView + CMCopyTable + NSMenuItem + id + NSSegmentedControl + NSSearchField + NSSearchFieldCell + NSSegmentedControl + WebView + NSWindow + id + NSTextField + id + NSMenuItem + NSMenuItem + NSSearchField + id + NSMenuItem + NSWindow + id + NSSearchField + id + NSMenuItem + id + NSMenuItem + id + NSMenuItem + NSButton + id + NSMenuItem + NSMenuItem + id + id + CMTextView + id + id + + + + IBDocumentRelativeSource + ../../Source/CustomQuery.h + + + YES diff --git a/Source/CMCopyTable.m b/Source/CMCopyTable.m index 8893696d..64875cea 100644 --- a/Source/CMCopyTable.m +++ b/Source/CMCopyTable.m @@ -443,8 +443,23 @@ int MENU_EDIT_COPY_AS_SQL = 2002; } } } + if([[[[self delegate] class] description] isEqualToString:@"CustomQuery"]) { + id tableContentView = [[self delegate] valueForKeyPath:@"customQueryView"]; + if([tableContentView numberOfSelectedRows] == 1 && ([theEvent keyCode] == 36 || [theEvent keyCode] == 76)) { + + // TODO: this works until the user presses OK in the Field Editor Sheet!! + // in the future we should store the new row data temporarily and then + // after editing the last column update the db field by field (ask HansJB) + NSInteger colNum = [[tableContentView tableColumns] count]; + NSInteger i; + for(i=0; i -1) { + [customQueryView selectRowIndexes:[NSIndexSet indexSetWithIndex:editedRow] byExtendingSelection:NO]; + [[customQueryScrollView contentView] scrollToPoint:NSMakePoint(editedScrollViewRect.origin.x, editedScrollViewRect.origin.y)]; + [customQueryScrollView reflectScrolledClipView:[customQueryScrollView contentView]]; + editedRow = -1; + } else { + [customQueryView scrollRowToVisible:[customQueryView selectedRow]]; + } } - [customQueryView reloadData]; - // Init copyTable with necessary information for copying selected rows as SQL INSERT [customQueryView setTableInstance:self withTableData:fullResult withColumns:cqColumnDefinition withTableName:resultTableName withConnection:mySQLConnection]; @@ -1506,6 +1513,7 @@ // On success reload table data by executing the last query tableReloadAfterEditing = YES; + [self performQueries:[NSArray arrayWithObject:lastExecutedQuery] withCallback:NULL]; } else { @@ -1753,7 +1761,7 @@ /* * Double-click action on a field */ -- (BOOL)tableView:(NSTableView *)aTableView shouldEditTableColumn:(NSTableColumn *)aTableColumn row:(int)rowIndex +- (BOOL)tableView:(NSTableView *)aTableView shouldEditTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex { // Only allow editing if a task is not active @@ -1819,6 +1827,11 @@ SPFieldEditorController *fieldEditor = [[SPFieldEditorController alloc] init]; + + // Remember edited row for reselecting and setting the scroll view after reload + editedRow = rowIndex; + editedScrollViewRect = [customQueryScrollView documentVisibleRect]; + // Set max text length if ([[columnDefinition objectForKey:@"typegrouping"] isEqualToString:@"string"] && [columnDefinition valueForKey:@"char_length"]) @@ -2844,6 +2857,7 @@ // init tableView's data source fullResultCount = 0; fullResult = [[NSMutableArray alloc] init]; + editedRow = -1; prefs = [NSUserDefaults standardUserDefaults]; } -- cgit v1.2.3