Using NSSplitview with auto layout instead of delgation

This commit is contained in:
michael starke
2013-05-17 22:09:29 +02:00
parent 73bd260c46
commit 292187d1c4
11 changed files with 105 additions and 66 deletions

View File

@@ -20,6 +20,8 @@
@property (retain) MPOutlineDataSource *datasource;
@property (retain) MPOutlineViewDelegate *outlineDelegate;
@property (retain) NSMenu *menu;
@property (retain) NSLayoutConstraint *showConstraint;
@property (retain) NSLayoutConstraint *hideConstraint;
- (void)_didUpdateData:(NSNotification *)notification;
@@ -37,6 +39,7 @@
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
_isVisible = YES;
self.outlineDelegate = [[[MPOutlineViewDelegate alloc] init] autorelease];
self.datasource = [[[MPOutlineDataSource alloc] init] autorelease];
@@ -45,7 +48,7 @@
name:MPDocumentDidAddGroupNotification
object:[[self windowController] document]];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(_didUpdateData:)
name:MPDocumentDidDelteGroupNotification
@@ -70,6 +73,24 @@
[self.outlineView setDelegate:self.outlineDelegate];
[self.outlineView setMenu:[self _contextMenu]];
[self.outlineView setAllowsEmptySelection:YES];
self.showConstraint = [NSLayoutConstraint constraintWithItem:[self view]
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationGreaterThanOrEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1
constant:200];
self.hideConstraint = [NSLayoutConstraint constraintWithItem:[self view]
attribute:NSLayoutAttributeWidth
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1
constant:0];
[[self view] addConstraint:self.showConstraint];
}
- (void)showOutline {
@@ -82,6 +103,16 @@
[self.outlineView deselectAll:nil];
}
- (void)setIsVisible:(BOOL)isVisible {
if(_isVisible == isVisible) {
return; // nichts zu tun
}
[[self view] removeConstraint:(isVisible ? self.hideConstraint : self.showConstraint)];
[[self view] addConstraint:(isVisible ? self.showConstraint : self.hideConstraint)];
_isVisible = isVisible;
}
- (NSMenu *)_contextMenu {
NSMenu *menu = [[NSMenu alloc] init];
NSArray *items = [(MPAppDelegate *)[NSApp delegate] contextMenuItemsWithItems:MPContextMenuMinimal];