aboutsummaryrefslogtreecommitdiffstats
path: root/Frameworks/BWToolkitFramework.framework/BWSheetController.m
diff options
context:
space:
mode:
Diffstat (limited to 'Frameworks/BWToolkitFramework.framework/BWSheetController.m')
-rw-r--r--Frameworks/BWToolkitFramework.framework/BWSheetController.m75
1 files changed, 75 insertions, 0 deletions
diff --git a/Frameworks/BWToolkitFramework.framework/BWSheetController.m b/Frameworks/BWToolkitFramework.framework/BWSheetController.m
new file mode 100644
index 00000000..ec986280
--- /dev/null
+++ b/Frameworks/BWToolkitFramework.framework/BWSheetController.m
@@ -0,0 +1,75 @@
+//
+// BWSheetController.m
+// BWToolkit
+//
+// Created by Brandon Walkin (www.brandonwalkin.com)
+// All code is provided under the New BSD license.
+//
+
+#import "BWSheetController.h"
+#import "NSWindow-NSTimeMachineSupport.h"
+
+@implementation BWSheetController
+
+@synthesize parentWindow, sheet, delegate;
+
+- (void)awakeFromNib
+{
+ // Hack so the sheet doesn't appear at launch in Cocoa Simulator (or in the actual app if "Visible at Launch" is checked)
+ [sheet setAlphaValue:0];
+ [sheet performSelector:@selector(orderOut:) withObject:nil afterDelay:0];
+
+ // If the sheet has a toolbar or a bottom bar, make sure those elements can't move the window (private API)
+ if ([sheet respondsToSelector:@selector(setMovable:)])
+ [sheet setMovable:NO];
+}
+
+- (id)initWithCoder:(NSCoder *)decoder;
+{
+ if ((self = [super init]) != nil)
+ {
+ NSWindowController *tempSheetController = [decoder decodeObjectForKey:@"BWSCSheet"];
+ NSWindowController *tempParentWindowController = [decoder decodeObjectForKey:@"BWSCParentWindow"];
+
+ sheet = [tempSheetController window];
+ parentWindow = [tempParentWindowController window];
+ }
+ return self;
+}
+
+- (void)encodeWithCoder:(NSCoder*)coder
+{
+ NSWindowController *tempSheetController = [[[NSWindowController alloc] initWithWindow:sheet] autorelease];
+ NSWindowController *tempParentWindowController = [[[NSWindowController alloc] initWithWindow:parentWindow] autorelease];
+
+ [coder encodeObject:tempSheetController forKey:@"BWSCSheet"];
+ [coder encodeObject:tempParentWindowController forKey:@"BWSCParentWindow"];
+}
+
+- (IBAction)openSheet:(id)sender
+{
+ [sheet setAlphaValue:1];
+ [NSApp beginSheet:sheet modalForWindow:parentWindow modalDelegate:nil didEndSelector:nil contextInfo:nil];
+}
+
+- (IBAction)closeSheet:(id)sender
+{
+ [sheet orderOut:nil];
+ [NSApp endSheet:sheet];
+}
+
+- (IBAction)messageDelegateAndCloseSheet:(id)sender
+{
+ if (delegate != nil && [delegate respondsToSelector:@selector(shouldCloseSheet:)])
+ {
+ if ([delegate performSelector:@selector(shouldCloseSheet:) withObject:sender])
+ [self closeSheet:self];
+ }
+ else
+ {
+ [self closeSheet:self];
+ }
+}
+
+
+@end