// // PBDetailController.m // GitX // // Created by Pieter de Bie on 16-06-08. // Copyright 2008 __MyCompanyName__. All rights reserved. // #import "PBGitWindowController.h" #import "PBGitHistoryController.h" #import "PBGitCommitController.h" @implementation PBGitWindowController @synthesize repository, viewController, selectedViewIndex; - (id)initWithRepository:(PBGitRepository*)theRepository displayDefault:(BOOL)displayDefault { if(self = [self initWithWindowNibName:@"RepositoryWindow"]) { self.repository = theRepository; [self showWindow:nil]; } if (displayDefault) { self.selectedViewIndex = [[NSUserDefaults standardUserDefaults] integerForKey:@"selectedViewIndex"]; } else { self.selectedViewIndex = -1; } return self; } - (void) setSelectedViewIndex: (int) i { selectedViewIndex = i; [[NSUserDefaults standardUserDefaults] setInteger:i forKey:@"selectedViewIndex"]; [self changeViewController: i]; } - (void)changeViewController:(NSInteger)whichViewTag { [self willChangeValueForKey:@"viewController"]; if ([viewController view] != nil) [(PBViewController *)viewController removeView]; switch (whichViewTag) { case 0: // swap in the "CustomImageViewController - NSImageView" viewController = [[PBGitHistoryController alloc] initWithRepository:repository superController:self]; break; case 1: viewController = [[PBGitCommitController alloc] initWithRepository:repository superController:self]; break; } // make sure we automatically resize the controller's view to the current window size [[viewController view] setFrame: [contentView bounds]]; //// embed the current view to our host view [contentView addSubview: [viewController view]]; // Allow the viewcontroller to catch actions [self setNextResponder: viewController]; [self didChangeValueForKey:@"viewController"]; // this will trigger the NSTextField's value binding to change } - (void)awakeFromNib { [[self window] setAutorecalculatesContentBorderThickness:NO forEdge:NSMinYEdge]; [[self window] setContentBorderThickness:35.0f forEdge:NSMinYEdge]; [self showHistoryView:nil]; } - (void) showCommitView:(id)sender { self.selectedViewIndex = 1; } - (void) showHistoryView:(id)sender { self.selectedViewIndex = 0; } #pragma mark - #pragma mark Toolbar Delegates - (NSToolbarItem *) toolbar:(NSToolbar *)toolbar itemForItemIdentifier:(NSString *)itemIdentifier willBeInsertedIntoToolbar:(BOOL)flag { if ([itemIdentifier isEqualToString:[viewSelector itemIdentifier]]) return viewSelector; return nil; } - (NSArray *)toolbarAllowedItemIdentifiers:(NSToolbar *)toolbar { NSMutableArray *array = [NSMutableArray array]; for (NSToolbarItem *item in [toolbar items]) [array addObject:[item itemIdentifier]]; return array; } - (NSArray *)toolbarDefaultItemIdentifiers:(NSToolbar *)toolbar { NSMutableArray *array = [NSMutableArray array]; for (NSToolbarItem *item in [toolbar items]) [array addObject:[item itemIdentifier]]; return array; } - (void) useToolbar:(NSToolbar *)toolbar { [toolbar setDelegate:self]; [toolbar insertItemWithItemIdentifier:NSToolbarSeparatorItemIdentifier atIndex:0]; [toolbar insertItemWithItemIdentifier:[viewSelector itemIdentifier] atIndex:0]; NSSegmentedControl *viewSelect = (NSSegmentedControl *)[[[toolbar items] objectAtIndex:0] view]; [viewSelect bind:@"selectedIndex" toObject:self withKeyPath:@"selectedViewIndex" options:0]; [self.window setToolbar:toolbar]; } @end