webengine/osswebengine/WebKitTools/DrawTest/DrawTestDocument.m
changeset 0 dd21522fd290
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/osswebengine/WebKitTools/DrawTest/DrawTestDocument.m	Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,151 @@
+/*
+ * Copyright (C) 2005 Apple Computer, Inc.  All rights reserved.
+ * Copyright (C) 2006 Nefaur Khandker <nefaurk@gmail.com>  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#import "DrawTestDocument.h"
+#import "DrawTestView.h"
+#import "DrawTestToolbarController.h"
+#import <WebKit/WebView.h>
+#import <WebKit/WebFrame.h>
+#import <WebKit/WebDataSource.h>
+
+@implementation DrawTestDocument
+
+- (id)initWithType:(NSString *)typeName error:(NSError **)outError
+{
+    if (outError) {
+        NSDictionary *errorInfo = [NSDictionary dictionaryWithObjectsAndKeys:
+            @"No document could be created.", NSLocalizedDescriptionKey,
+            @"New document creation not yet supported.", NSLocalizedFailureReasonErrorKey,
+            nil];
+        *outError = [NSError errorWithDomain:NSCocoaErrorDomain code:0 userInfo:errorInfo];
+    }
+    [self release];
+    return nil;
+}
+
+- (void)dealloc
+{
+    [toolbarController release];
+    [super dealloc];
+}
+
+- (NSString *)windowNibName
+{
+    return @"DrawTestDocument";
+}
+
+- (BOOL)readFromFile:(NSString *)filename ofType:(NSString *)docType
+{
+    // TODO: Check the validity of the document before returning YES.
+    return YES;
+}
+
+- (void)windowControllerDidLoadNib:(NSWindowController *)aController
+{
+    [super windowControllerDidLoadNib:aController];
+    toolbarController = [[DrawTestToolbarController alloc] initWithDrawView:drawView];
+    [drawView setDocument:[self fileURL]];
+}
+
+- (IBAction)dumpSVGToConsole:(id)sender
+{
+    WebDataSource* dataSource = [[drawView mainFrame] dataSource];
+    NSLog(@"SVG Markup for file %@:\n%@", [self fileURL], [[dataSource representation] documentSource]);
+}
+
+- (IBAction)openSourceForSelection:(id)sender
+{
+    // TODO: The "path" message (below) will not produce a valid pathname if we are dealing with a remote file.
+    NSString *filename = [[self fileURL] path];
+    [[NSWorkspace sharedWorkspace] openFile:filename withApplication:@"TextEdit"];
+}
+
+- (NSData *)dataRepresentationOfType:(NSString *)aType
+{
+    WebDataSource* dataSource = [[drawView mainFrame] dataSource];
+    return [dataSource data];
+}
+
+#pragma mark -
+#pragma mark Debug Methods
+
+- (IBAction)toggleDebugDrawer:(id)sender
+{
+    [debugDrawer toggle:sender];
+}
+
+- (id)outlineView:(NSOutlineView *)outlineView child:(int)index ofItem:(id)item
+{
+    return nil;
+}
+
+- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item
+{
+    return NO;
+}
+
+- (int)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item
+{
+    return 0;
+}
+
+- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item
+{
+    return nil;
+}
+
+- (IBAction)runWindowResizeTest:(id)sender
+{
+    NSWindow *window = [drawView window];
+    NSScreen *screen = [window screen];
+    float screenHeight = [screen visibleFrame].size.height;
+    NSRect originalFrame = [window frame];
+    // initial setup
+    BOOL toolbarVisible = [[window toolbar] isVisible];
+    if (toolbarVisible) [window toggleToolbarShown:self];
+    [window setFrame:NSMakeRect(0,screenHeight-100,100,100) display:YES];
+    
+    // grab time.
+    CFAbsoluteTime start = CFAbsoluteTimeGetCurrent();
+    
+    // run test
+    for (int x = 0; x < 3; x++) {
+        for (float size = 100; size < 500.f; size += 20.f) {
+            [window setFrame:NSMakeRect(0, screenHeight-size, size, size) display:YES];
+        }
+    }
+    
+    double elapsed = CFAbsoluteTimeGetCurrent() - start;
+    
+    // log
+    NSLog(@"Window resize test: %fs", elapsed);
+    
+    // restore
+    if (toolbarVisible) [window toggleToolbarShown:self];
+    [window setFrame:originalFrame display:YES];
+}
+
+@end