diff --git a/Atom/Classes/AtomApp.m b/Atom/Classes/AtomApp.m index b571cc8e0..5d64b12cb 100644 --- a/Atom/Classes/AtomApp.m +++ b/Atom/Classes/AtomApp.m @@ -12,9 +12,14 @@ @synthesize controllers = _controllers; - (AtomController *)createController:(NSString *)path { - AtomController *controller = [(AtomController *)[AtomController alloc] initWithURL:path]; + AtomController *controller = [[AtomController alloc] initWithURL:path]; + [self.controllers addObject:controller]; + return controller; +} + +- (AtomController *)createSpecController { + AtomController *controller = [[AtomController alloc] initForSpecs]; [self.controllers addObject:controller]; - return controller; } @@ -23,16 +28,8 @@ [controller.jscocoa callJSFunctionNamed:@"triggerEvent" withArguments:@"window:close", nil, false, nil]; } -- (void)runSpecs { - AtomController *controller = [(AtomController *)[AtomController alloc] initForSpecs]; - [self.controllers addObject:controller]; -} - - (void)reloadController:(AtomController *)controller { - CGRect frame = [[controller window] frame]; - AtomController *newController = [self createController:controller.url]; - [controller close]; - [[newController window] setFrame:frame display:YES animate:NO]; + [controller createWebView]; } - (void)open:(NSString *)path { diff --git a/Atom/Classes/AtomController.h b/Atom/Classes/AtomController.h index 69478e1ee..f0347d2ad 100644 --- a/Atom/Classes/AtomController.h +++ b/Atom/Classes/AtomController.h @@ -6,13 +6,15 @@ @interface AtomController : NSWindowController { } -@property (retain) WebView *webView; +@property (assign) WebView *webView; @property (nonatomic, retain) JSCocoa *jscocoa; @property (nonatomic, retain, readonly) NSString *url; -@property (nonatomic, retain, readonly) NSString *bootstrapPage; +@property (nonatomic, retain, readonly) NSString *bootstrapScript; - (id)initForSpecs; -- (AtomController *)initWithURL:(NSString *)url; +- (id)initWithURL:(NSString *)url; + +- (void)createWebView; @end diff --git a/Atom/Classes/AtomController.m b/Atom/Classes/AtomController.m index a20f80eff..887d192ca 100644 --- a/Atom/Classes/AtomController.m +++ b/Atom/Classes/AtomController.m @@ -7,7 +7,7 @@ @interface AtomController () @property (nonatomic, retain, readwrite) NSString *url; -@property (nonatomic, retain, readwrite) NSString *bootstrapPage; +@property (nonatomic, retain, readwrite) NSString *bootstrapScript; @end @@ -17,36 +17,54 @@ webView = _webView, jscocoa = _jscocoa, url = _url, - bootstrapPage = _bootstrapPage; + bootstrapScript = _bootstrapScript; - (void)dealloc { [self.jscocoa unlinkAllReferences]; [self.jscocoa garbageCollect]; self.jscocoa = nil; - self.webView = nil; - self.bootstrapPage = nil; + self.webView = nil;; + self.bootstrapScript = nil; self.url = nil; [super dealloc]; } -- (id)initWithBootstrapPage:(NSString *)bootstrapPage url:(NSString *)url { +- (id)initWithBootstrapScript:(NSString *)bootstrapScript url:(NSString *)url { self = [super initWithWindowNibName:@"AtomWindow"]; - self.bootstrapPage = bootstrapPage; + self.bootstrapScript = bootstrapScript; self.url = url; [self.window makeKeyWindow]; return self; } - -- (id)initForSpecs { - return [self initWithBootstrapPage:@"spec-suite.html" url:nil]; +- (id)initSpecs { + return [self initWithBootstrapScript:@"spec-startup" url:nil]; } - (id)initWithURL:(NSString *)url { - return [self initWithBootstrapPage:@"index.html" url:url]; + return [self initWithBootstrapScript:@"startup" url:url]; +} + +- (void)createWebView { + [self.webView removeFromSuperview]; + + self.webView = [[WebView alloc] initWithFrame:[self.window.contentView frame]]; + [self.webView setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable]; + [self.window.contentView addSubview:self.webView]; + [self.webView setUIDelegate:self]; + + self.jscocoa = [[JSCocoa alloc] initWithGlobalContext:[[self.webView mainFrame] globalContext]]; + [self.jscocoa setObject:self withName:@"$atomController"]; + [self.jscocoa setObject:self.bootstrapScript withName:@"$bootstrapScript"]; + + NSURL *resourceDirURL = [[NSBundle mainBundle] resourceURL]; + NSURL *indexURL = [resourceDirURL URLByAppendingPathComponent:@"index.html"]; + + NSURLRequest *request = [NSURLRequest requestWithURL:indexURL]; + [[self.webView mainFrame] loadRequest:request]; } - (void)windowDidLoad { @@ -55,22 +73,12 @@ [self.window setDelegate:self]; [self.window setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary]; - [self.webView setUIDelegate:self]; - [self setShouldCascadeWindows:YES]; [self setWindowFrameAutosaveName:@"atomController"]; - self.jscocoa = [[JSCocoa alloc] initWithGlobalContext:[[self.webView mainFrame] globalContext]]; - [self.jscocoa setObject:self withName:@"$atomController"]; - - NSURL *resourceURL = [[NSBundle mainBundle] resourceURL]; - NSURL *bootstrapPageURL = [resourceURL URLByAppendingPathComponent:self.bootstrapPage]; - - NSURLRequest *request = [NSURLRequest requestWithURL:bootstrapPageURL]; - [[self.webView mainFrame] loadRequest:request]; + [self createWebView]; } - - (void)close { [(AtomApp *)NSApp removeController:self]; [super close]; diff --git a/Atom/xibs/AtomWindow.xib b/Atom/xibs/AtomWindow.xib index e1e7fd484..36fd520b4 100644 --- a/Atom/xibs/AtomWindow.xib +++ b/Atom/xibs/AtomWindow.xib @@ -7,29 +7,18 @@ 1138.23 567.00 - YES - - YES - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.WebKitIBPlugin - - - YES - 1938 - 822 - + com.apple.InterfaceBuilder.CocoaPlugin + 1938 YES NSWindowTemplate NSView NSCustomObject - WebView YES com.apple.InterfaceBuilder.CocoaPlugin - com.apple.WebKitIBPlugin PluginDependencyRecalculationVersion @@ -58,62 +47,10 @@ 256 - - YES - - - 274 - - YES - - YES - Apple HTML pasteboard type - Apple PDF pasteboard type - Apple PICT pasteboard type - Apple URL pasteboard type - Apple Web Archive pasteboard type - NSColor pasteboard type - NSFilenamesPboardType - NSStringPboardType - NeXT RTFD pasteboard type - NeXT Rich Text Format v1.0 pasteboard type - NeXT TIFF v4.0 pasteboard type - WebURLsWithTitlesPboardType - public.png - public.url - public.url-name - - - {725, 723} - - - - - - - atomController - - YES - - YES - atomControllerWebKitJavaEnabled - atomControllerWebKitPluginsEnabled - - - YES - - - - - - NO - YES - - {725, 723} - + {{0, 0}, {1440, 878}} {10000000000000, 10000000000000} @@ -124,14 +61,6 @@ YES - - - webView - - - - 6 - window @@ -184,15 +113,9 @@ YES - - - 5 - - - @@ -206,7 +129,6 @@ 3.IBWindowTemplateEditedContentRect 3.NSWindowTemplate.visibleAtLaunch 4.IBPluginDependency - 5.IBPluginDependency YES @@ -217,7 +139,6 @@ {{324, 121}, {725, 723}} com.apple.InterfaceBuilder.CocoaPlugin - com.apple.WebKitIBPlugin @@ -245,24 +166,6 @@ ./Classes/AtomController.h - - WebView - - reloadFromOrigin: - id - - - reloadFromOrigin: - - reloadFromOrigin: - id - - - - IBProjectSource - ./Classes/WebView.h - - 0 diff --git a/index.html b/index.html index cf5fa05cd..d46a0514e 100644 --- a/index.html +++ b/index.html @@ -13,7 +13,7 @@