00001
00002 @import <AppKit/CPPanel.j>
00003
00004
00005 @implementation CPSavePanel : CPPanel
00006 {
00007 CPURL _URL;
00008
00009 BOOL _isExtensionHidden @accessors(getter=isExtensionHidden, setter=setExtensionHidden:);
00010 BOOL _canSelectHiddenExtension @accessors(property=canSelectHiddenExtension);
00011 BOOL _allowsOtherFileTypes @accessors(property=allowsOtherFileTypes);
00012 BOOL _canCreateDirectories @accessors(property=canCreateDirectories);
00013
00014 CPArray _allowedFileTypes @accessors(property=allowedFileTypes);
00015 }
00016
00017 + (id)savePanel
00018 {
00019 return [[CPSavePanel alloc] init];
00020 }
00021
00022 - (id)init
00023 {
00024 if (self = [super init])
00025 {
00026 _canCreateDirectories = YES;
00027 }
00028
00029 return self;
00030 }
00031
00032 - (CPInteger)runModal
00033 {
00034
00035 [[CPRunLoop currentRunLoop] limitDateForMode:CPDefaultRunLoopMode];
00036
00037 if (typeof window["cpSavePanel"] === "function")
00038 {
00039 var resultObject = window.cpSavePanel({
00040 isExtensionHidden: _isExtensionHidden,
00041 canSelectHiddenExtension: _canSelectHiddenExtension,
00042 allowsOtherFileTypes: _allowsOtherFileTypes,
00043 canCreateDirectories: _canCreateDirectories,
00044 allowedFileTypes: _allowedFileTypes
00045 }),
00046 result = resultObject.button;
00047
00048 _URL = result ? [CPURL URLWithString:resultObject.URL] : nil;
00049 }
00050 else
00051 {
00052
00053 var documentName = window.prompt("Document Name:"),
00054 result = documentName !== null;
00055
00056 _URL = result ? [[self class] proposedFileURLWithDocumentName:documentName] : nil;
00057 }
00058
00059 return result;
00060 }
00061
00062 - (CPURL)URL
00063 {
00064 return _URL;
00065 }
00066
00067 @end