diff options
author | rowanbeentje <rowan@beent.je> | 2009-07-26 12:40:34 +0000 |
---|---|---|
committer | rowanbeentje <rowan@beent.je> | 2009-07-26 12:40:34 +0000 |
commit | 84fdbe2ab1489786031973997f8413cd2f137375 (patch) | |
tree | 6c2582eb2eb4dea292c53f621867498f0a8fbba6 /Source | |
parent | b9519867ed83d228e16937ae77c1adbba1676c79 (diff) | |
download | sequelpro-84fdbe2ab1489786031973997f8413cd2f137375.tar.gz sequelpro-84fdbe2ab1489786031973997f8413cd2f137375.tar.bz2 sequelpro-84fdbe2ab1489786031973997f8413cd2f137375.zip |
- Tweak table information panel to show scrollbars if it's resized to a position that would hide content
- Store collapse state of table information panel in preferences
- Apply a double fix for BWSplitView/NSSplitView+BWAnchoredButtonBar not informing delegates of resizes - correctly inform original BWSplitView delegates of resizes, and allow BWAnchoredButtonBar registered delegates to recieve the original split view resize notifications. This fixes database menu resizing in synch with splitview resizing for improved/consistent look and feel.
Diffstat (limited to 'Source')
-rw-r--r-- | Source/SPConnectionController.h | 7 | ||||
-rw-r--r-- | Source/SPConnectionController.m | 3 | ||||
-rw-r--r-- | Source/TableDocument.h | 1 | ||||
-rw-r--r-- | Source/TableDocument.m | 3 | ||||
-rw-r--r-- | Source/TablesList.h | 9 | ||||
-rw-r--r-- | Source/TablesList.m | 25 |
6 files changed, 44 insertions, 4 deletions
diff --git a/Source/SPConnectionController.h b/Source/SPConnectionController.h index 0ab3cc2e..f9af5894 100644 --- a/Source/SPConnectionController.h +++ b/Source/SPConnectionController.h @@ -37,6 +37,12 @@ enum spconnection_types SP_CONNECTION_SSHTUNNEL = 2 }; +@class BWAnchoredButtonBar; + +@interface NSObject (BWAnchoredButtonBar) +- (void)setSplitViewDelegate:(id)splitViewDelegate; +@end + @interface SPConnectionController : NSObject { TableDocument *tableDocument; @@ -70,6 +76,7 @@ enum spconnection_types IBOutlet NSView *connectionView; IBOutlet NSSplitView *connectionSplitView; + IBOutlet BWAnchoredButtonBar *connectionSplitViewButtonBar; IBOutlet NSTableView *favoritesTable; IBOutlet NSWindow *errorDetailWindow; diff --git a/Source/SPConnectionController.m b/Source/SPConnectionController.m index 272808a5..d52ca7d3 100644 --- a/Source/SPConnectionController.m +++ b/Source/SPConnectionController.m @@ -73,6 +73,7 @@ [connectionView setFrame:[contentView frame]]; [[documentWindow contentView] addSubview:connectionView]; [connectionSplitView setPosition:[[tableDocument valueForKey:@"dbTablesTableView"] frame].size.width ofDividerAtIndex:0]; + [connectionSplitViewButtonBar setSplitViewDelegate:self]; // Disable the toolbar icons NSArray *toolbarItems = [[documentWindow toolbar] items]; @@ -819,8 +820,6 @@ /** * When the split view is resized, trigger a resize in the hidden table * width as well, to keep the connection view and connected view in synch. - * TODO: this isn't functional until a BWToolkit bug is fixed - see - * http://bitbucket.org/bwalkin/bwtoolkit/issue/50/bwsplitview-and-splitviewdidresizesubviews */ - (void) splitViewDidResizeSubviews:(NSNotification *)aNotification { diff --git a/Source/TableDocument.h b/Source/TableDocument.h index 6b3acaef..5cd9dc6c 100644 --- a/Source/TableDocument.h +++ b/Source/TableDocument.h @@ -68,6 +68,7 @@ IBOutlet NSTabView *tableTabView; IBOutlet NSTableView *tableInfoTable; + IBOutlet NSButton *tableInfoCollapseButton; IBOutlet NSSplitView *tableListSplitter; IBOutlet NSSplitView *contentViewSplitter; IBOutlet id sidebarGrabber; diff --git a/Source/TableDocument.m b/Source/TableDocument.m index c3a5b3da..7970d0aa 100644 --- a/Source/TableDocument.m +++ b/Source/TableDocument.m @@ -2178,8 +2178,7 @@ - (void)splitViewDidResizeSubviews:(NSNotification *)notification { - if ([notification object] == contentViewSplitter) - [self updateChooseDatabaseToolbarItemWidth]; + [self updateChooseDatabaseToolbarItemWidth]; } - (NSRect)splitView:(NSSplitView *)splitView additionalEffectiveRectOfDividerAtIndex:(int)dividerIndex diff --git a/Source/TablesList.h b/Source/TablesList.h index bd1e36e9..6210f9e7 100644 --- a/Source/TablesList.h +++ b/Source/TablesList.h @@ -37,6 +37,12 @@ enum sp_table_types @class CMMCResult, MCPConnection; +@interface NSObject (NSSplitView) +- (NSView *)collapsibleSubview; +- (IBAction)toggleCollapse:(id)sender; +- (void)setCollapsibleSubviewCollapsed:(BOOL)flag; +@end + @interface TablesList : NSObject { IBOutlet id tableDocumentInstance; @@ -67,6 +73,8 @@ enum sp_table_types IBOutlet id renameTableButton; IBOutlet id truncateTableButton; IBOutlet id truncateTableContextButton; + IBOutlet NSSplitView *tableListSplitView; + IBOutlet NSButton *tableInfoCollapseButton; IBOutlet NSMenuItem *removeTableMenuItem; IBOutlet NSMenuItem *duplicateTableMenuItem; @@ -94,6 +102,7 @@ enum sp_table_types - (IBAction)copyTable:(id)sender; - (IBAction)renameTable:(id)sender; - (IBAction)truncateTable:(id)sender; +- (IBAction)togglePaneCollapse:(id)sender; // copyTableSheet methods - (IBAction)closeCopyTableSheet:(id)sender; diff --git a/Source/TablesList.m b/Source/TablesList.m index 10be699a..a8781128 100644 --- a/Source/TablesList.m +++ b/Source/TablesList.m @@ -705,6 +705,15 @@ [alert beginSheetModalForWindow:tableWindow modalDelegate:self didEndSelector:@selector(sheetDidEnd:returnCode:contextInfo:) contextInfo:@"truncateTable"]; } +/** + * Toggle whether the splitview is collapsed. + */ +- (IBAction)togglePaneCollapse:(id)sender +{ + [tableListSplitView toggleCollapse:sender]; + [[NSUserDefaults standardUserDefaults] setObject:[NSNumber numberWithBool:([tableInfoCollapseButton state] == NSOffState)] forKey:@"TableInformationPanelCollapsed"]; +} + #pragma mark Alert sheet methods /** @@ -1660,6 +1669,22 @@ } /** + * Standard awakeFromNib method for interface loading. + */ +- (void)awakeFromNib +{ + + // Collapse the table information pane if preference to do so is set + if ([[[NSUserDefaults standardUserDefaults] objectForKey:@"TableInformationPanelCollapsed"] boolValue] + && [tableListSplitView collapsibleSubview]) { + [tableInfoCollapseButton setNextState]; + [tableListSplitView setValue:[NSNumber numberWithFloat:[tableListSplitView collapsibleSubview].frame.size.height] forKey:@"uncollapsedSize"]; + [[tableListSplitView collapsibleSubview] setFrameSize:NSMakeSize([tableListSplitView collapsibleSubview].frame.size.width, 0)]; + [tableListSplitView setCollapsibleSubviewCollapsed:YES]; + } +} + +/** * Standard dealloc method. */ - (void)dealloc |