2 // PBDetailController.m
5 // Created by Pieter de Bie on 16-06-08.
6 // Copyright 2008 __MyCompanyName__. All rights reserved.
9 #import "PBGitWindowController.h"
10 #import "PBGitHistoryController.h"
11 #import "PBGitCommitController.h"
13 @implementation PBGitWindowController
16 @synthesize repository, viewController, selectedViewIndex;
18 - (id)initWithRepository:(PBGitRepository*)theRepository displayDefault:(BOOL)displayDefault
20 if(self = [self initWithWindowNibName:@"RepositoryWindow"])
22 self.repository = theRepository;
23 [self showWindow:nil];
27 self.selectedViewIndex = [[NSUserDefaults standardUserDefaults] integerForKey:@"selectedViewIndex"];
29 self.selectedViewIndex = -1;
35 - (void)windowWillClose:(NSNotification *)notification
37 NSLog(@"Window will close!");
38 if (historyViewController)
39 [historyViewController removeView];
40 if (commitViewController)
41 [commitViewController removeView];
44 - (void) setSelectedViewIndex: (int) i
46 selectedViewIndex = i;
47 [[NSUserDefaults standardUserDefaults] setInteger:i forKey:@"selectedViewIndex"];
48 [self changeViewController: i];
51 - (void)changeViewController:(NSInteger)whichViewTag
53 [self willChangeValueForKey:@"viewController"];
55 if (viewController != nil)
56 [[viewController view] removeFromSuperview];
60 case 0: // swap in the "CustomImageViewController - NSImageView"
61 if (!historyViewController)
62 historyViewController = [[PBGitHistoryController alloc] initWithRepository:repository superController:self];
64 [historyViewController updateView];
65 viewController = historyViewController;
68 if (!commitViewController)
69 commitViewController = [[PBGitCommitController alloc] initWithRepository:repository superController:self];
71 [commitViewController updateView];
73 viewController = commitViewController;
77 // make sure we automatically resize the controller's view to the current window size
78 [[viewController view] setFrame: [contentView bounds]];
80 //// embed the current view to our host view
81 [contentView addSubview: [viewController view]];
83 [self useToolbar: [viewController viewToolbar]];
85 // Allow the viewcontroller to catch actions
86 [self setNextResponder: viewController];
87 [self didChangeValueForKey:@"viewController"]; // this will trigger the NSTextField's value binding to change
92 [[self window] setDelegate:self];
93 [[self window] setAutorecalculatesContentBorderThickness:NO forEdge:NSMinYEdge];
94 [[self window] setContentBorderThickness:35.0f forEdge:NSMinYEdge];
95 [self showHistoryView:nil];
98 - (void) showCommitView:(id)sender
100 if (self.selectedViewIndex != 1)
101 self.selectedViewIndex = 1;
104 - (void) showHistoryView:(id)sender
106 if (self.selectedViewIndex != 0)
107 self.selectedViewIndex = 0;
111 #pragma mark Toolbar Delegates
113 - (void) useToolbar:(NSToolbar *)toolbar
115 NSSegmentedControl *item = (NSSegmentedControl *)[[[toolbar items] objectAtIndex:0] view];
116 [item bind:@"selectedIndex" toObject:self withKeyPath:@"selectedViewIndex" options:0];
118 [self.window setToolbar:toolbar];