GitX Version 0.6
[GitX.git] / PBGitWindowController.m
blob8314febf71a618bad4527c5de1d1873d0a08c157
1 //
2 //  PBDetailController.m
3 //  GitX
4 //
5 //  Created by Pieter de Bie on 16-06-08.
6 //  Copyright 2008 __MyCompanyName__. All rights reserved.
7 //
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"])
21         {
22                 self.repository = theRepository;
23                 [self showWindow:nil];
24         }
25         
26         if (displayDefault) {
27                 self.selectedViewIndex = [[NSUserDefaults standardUserDefaults] integerForKey:@"selectedViewIndex"];
28         } else {
29                 self.selectedViewIndex = -1;
30         }
32         return self;
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];
58         switch (whichViewTag)
59         {
60                 case 0: // swap in the "CustomImageViewController - NSImageView"
61                         if (!historyViewController)
62                                 historyViewController = [[PBGitHistoryController alloc] initWithRepository:repository superController:self];
63                         else
64                                 [historyViewController updateView];
65                         viewController = historyViewController;
66                         break;
67                 case 1:
68                         if (!commitViewController)
69                                 commitViewController = [[PBGitCommitController alloc] initWithRepository:repository superController:self];
70                         else
71                                 [commitViewController updateView];
73                         viewController = commitViewController;
74                         break;
75         }
77         // make sure we automatically resize the controller's view to the current window size
78         [[viewController view] setFrame: [contentView bounds]];
79         
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
90 - (void)awakeFromNib
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;
110 #pragma mark -
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];
121 @end