diff options
Diffstat (limited to 'Source/SPExportController.m')
-rw-r--r-- | Source/SPExportController.m | 114 |
1 files changed, 47 insertions, 67 deletions
diff --git a/Source/SPExportController.m b/Source/SPExportController.m index 12ea51dc..3ca2c996 100644 --- a/Source/SPExportController.m +++ b/Source/SPExportController.m @@ -30,16 +30,22 @@ #import "SPTablesList.h" #import "SPTableData.h" #import "SPTableContent.h" -#import "SPArrayAdditions.h" -#import "SPStringAdditions.h" #import "SPGrowlController.h" #import "SPExportFile.h" #import "SPAlertSheets.h" +// Constants +static const NSUInteger SPExportUIPadding = 20; + +static const NSString *SPTableViewStructureColumnID = @"structure"; +static const NSString *SPTableViewContentColumnID = @"content"; +static const NSString *SPTableViewDropColumnID = @"drop"; + @interface SPExportController (PrivateAPI) - (void)_switchTab; - (void)_checkForDatabaseChanges; +- (void)_displayExportTypeOptions:(BOOL)display; - (void)_toggleExportButton:(id)uiStateDict; - (void)_toggleExportButtonOnBackgroundThread; @@ -123,6 +129,11 @@ // If found the set the default path to the user's desktop, otherwise use their home directory [exportPathField setStringValue:([paths count] > 0) ? [paths objectAtIndex:0] : NSHomeDirectory()]; + + // Accept Core Animation + [exportOptionsTabBar wantsLayer]; + [exportTablelistScrollView wantsLayer]; + [exportTableListButtonBar wantsLayer]; } #pragma mark - @@ -499,7 +510,7 @@ */ - (IBAction)toggleSQLIncludeStructure:(id)sender { - [[exportTableList tableColumnWithIdentifier:@"structure"] setHidden:(![sender state])]; + [[exportTableList tableColumnWithIdentifier:SPTableViewStructureColumnID] setHidden:(![sender state])]; [self _toggleExportButtonOnBackgroundThread]; } @@ -509,7 +520,7 @@ */ - (IBAction)toggleSQLIncludeContent:(id)sender { - [[exportTableList tableColumnWithIdentifier:@"content"] setHidden:(![sender state])]; + [[exportTableList tableColumnWithIdentifier:SPTableViewContentColumnID] setHidden:(![sender state])]; [self _toggleExportButtonOnBackgroundThread]; } @@ -519,7 +530,7 @@ */ - (IBAction)toggleSQLIncludeDropSyntax:(id)sender { - [[exportTableList tableColumnWithIdentifier:@"drop"] setHidden:(![sender state])]; + [[exportTableList tableColumnWithIdentifier:SPTableViewDropColumnID] setHidden:(![sender state])]; [self _toggleExportButtonOnBackgroundThread]; } @@ -536,64 +547,6 @@ } #pragma mark - -#pragma mark Table view datasource methods - -- (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView; -{ - return [tables count]; -} - -- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)rowIndex -{ - return NSArrayObjectAtIndex([tables objectAtIndex:rowIndex], [exportTableList columnWithIdentifier:[tableColumn identifier]]); -} - -- (void)tableView:(NSTableView *)tableView setObjectValue:(id)anObject forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)rowIndex -{ - [[tables objectAtIndex:rowIndex] replaceObjectAtIndex:[exportTableList columnWithIdentifier:[tableColumn identifier]] withObject:anObject]; - - [self _toggleExportButtonOnBackgroundThread]; -} - -#pragma mark - -#pragma mark Table view delegate methods - -- (BOOL)tableView:(NSTableView *)tableView shouldSelectRow:(NSInteger)rowIndex -{ - return (tableView != exportTableList); -} - -- (BOOL)tableView:(NSTableView *)tableView shouldTrackCell:(NSCell *)cell forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)rowIndex -{ - return (tableView == exportTableList); -} - -- (void)tableView:(NSTableView *)tableView willDisplayCell:(id)aCell forTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)rowIndex -{ - [aCell setFont:[NSFont systemFontOfSize:[NSFont smallSystemFontSize]]]; -} - -#pragma mark - -#pragma mark Tabview delegate methods - -- (void)tabView:(NSTabView *)tabView didSelectTabViewItem:(NSTabViewItem *)tabViewItem -{ - [tabViewItem setView:exporterView]; - - [self _switchTab]; -} - -#pragma mark - -#pragma mark Combo box delegate methods - -- (void)comboBoxSelectionDidChange:(NSNotification *)notification -{ - if ([notification object] == exportCSVFieldsTerminatedField) { - [self updateDisplayedExportFilename]; - } -} - -#pragma mark - #pragma mark Other /** @@ -728,17 +681,18 @@ [[[exportInputPopUpButton menu] itemAtIndex:SPQueryExport] setEnabled:((enable) && ([[customQueryInstance currentResult] count] > 1))]; } - [[exportTableList tableColumnWithIdentifier:@"structure"] setHidden:(isSQL) ? (![exportSQLIncludeStructureCheck state]) : YES]; - [[exportTableList tableColumnWithIdentifier:@"drop"] setHidden:(isSQL) ? (![exportSQLIncludeDropSyntaxCheck state]) : YES]; + [[exportTableList tableColumnWithIdentifier:SPTableViewStructureColumnID] setHidden:(isSQL) ? (![exportSQLIncludeStructureCheck state]) : YES]; + [[exportTableList tableColumnWithIdentifier:SPTableViewDropColumnID] setHidden:(isSQL) ? (![exportSQLIncludeDropSyntaxCheck state]) : YES]; - [[[exportTableList tableColumnWithIdentifier:@"content"] headerCell] setStringValue:(enable) ? @"" : @"C"]; + [[[exportTableList tableColumnWithIdentifier:SPTableViewContentColumnID] headerCell] setStringValue:(enable) ? @"" : @"C"]; // Set the tooltip - [[exportTableList tableColumnWithIdentifier:@"content"] setHeaderToolTip:(enable) ? @"" : NSLocalizedString(@"Include content", @"include content table column tooltip")]; + [[exportTableList tableColumnWithIdentifier:SPTableViewContentColumnID] setHeaderToolTip:(enable) ? @"" : NSLocalizedString(@"Include content", @"include content table column tooltip")]; [exportCSVNULLValuesAsTextField setStringValue:[prefs stringForKey:SPNullValue]]; [exportXMLNULLValuesAsTextField setStringValue:[prefs stringForKey:SPNullValue]]; + [self _displayExportTypeOptions:(isSQL || isCSV || isXML)]; [self updateAvailableExportFilenameTokens]; if (!showCustomFilenameView) [self updateDisplayedExportFilename]; @@ -775,6 +729,32 @@ } /** + * Toggles the display of the export type options view. + * + * @param display A BOOL indicating whether or not the view should be visible + */ +- (void)_displayExportTypeOptions:(BOOL)display +{ + NSRect windowFrame = [[exportTablelistScrollView window] frame]; + NSRect viewFrame = [exportTablelistScrollView frame]; + NSRect barFrame = [exportTableListButtonBar frame]; + + NSUInteger padding = (2 * SPExportUIPadding); + + CGFloat width = (!display) ? (windowFrame.size.width - (padding + 2)) : (windowFrame.size.width - ([exportOptionsTabBar frame].size.width + (padding + 4))); + CGFloat width2 = (!display) ? (windowFrame.size.width - (padding + 2)) : (windowFrame.size.width - ([exportTableListButtonBar frame].size.width + (padding + 4))); + + [NSAnimationContext beginGrouping]; + [[NSAnimationContext currentContext] setDuration:0.3]; + + [[exportOptionsTabBar animator] setHidden:(!display)]; + [[exportTablelistScrollView animator] setFrame:NSMakeRect(viewFrame.origin.x, viewFrame.origin.y, width, viewFrame.size.height)]; + [[exportTableListButtonBar animator] setFrame:NSMakeRect(barFrame.origin.x, barFrame.origin.y, width, barFrame.size.height)]; + + [NSAnimationContext endGrouping]; +} + +/** * Enables or disables the export button based on the state of various interface controls. * * @param uiStateDict A dictionary containing the state of various UI controls. |