webengine/osswebengine/WebKitTools/DrawTest/DrawTestDocument.m
changeset 0 dd21522fd290
equal deleted inserted replaced
-1:000000000000 0:dd21522fd290
       
     1 /*
       
     2  * Copyright (C) 2005 Apple Computer, Inc.  All rights reserved.
       
     3  * Copyright (C) 2006 Nefaur Khandker <nefaurk@gmail.com>  All rights reserved.
       
     4  *
       
     5  * Redistribution and use in source and binary forms, with or without
       
     6  * modification, are permitted provided that the following conditions
       
     7  * are met:
       
     8  * 1. Redistributions of source code must retain the above copyright
       
     9  *    notice, this list of conditions and the following disclaimer.
       
    10  * 2. Redistributions in binary form must reproduce the above copyright
       
    11  *    notice, this list of conditions and the following disclaimer in the
       
    12  *    documentation and/or other materials provided with the distribution.
       
    13  *
       
    14  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
       
    15  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
       
    16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
       
    17  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
       
    18  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
       
    19  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
       
    20  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
       
    21  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
       
    22  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
       
    23  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
       
    24  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
       
    25  */
       
    26 
       
    27 #import "DrawTestDocument.h"
       
    28 #import "DrawTestView.h"
       
    29 #import "DrawTestToolbarController.h"
       
    30 #import <WebKit/WebView.h>
       
    31 #import <WebKit/WebFrame.h>
       
    32 #import <WebKit/WebDataSource.h>
       
    33 
       
    34 @implementation DrawTestDocument
       
    35 
       
    36 - (id)initWithType:(NSString *)typeName error:(NSError **)outError
       
    37 {
       
    38     if (outError) {
       
    39         NSDictionary *errorInfo = [NSDictionary dictionaryWithObjectsAndKeys:
       
    40             @"No document could be created.", NSLocalizedDescriptionKey,
       
    41             @"New document creation not yet supported.", NSLocalizedFailureReasonErrorKey,
       
    42             nil];
       
    43         *outError = [NSError errorWithDomain:NSCocoaErrorDomain code:0 userInfo:errorInfo];
       
    44     }
       
    45     [self release];
       
    46     return nil;
       
    47 }
       
    48 
       
    49 - (void)dealloc
       
    50 {
       
    51     [toolbarController release];
       
    52     [super dealloc];
       
    53 }
       
    54 
       
    55 - (NSString *)windowNibName
       
    56 {
       
    57     return @"DrawTestDocument";
       
    58 }
       
    59 
       
    60 - (BOOL)readFromFile:(NSString *)filename ofType:(NSString *)docType
       
    61 {
       
    62     // TODO: Check the validity of the document before returning YES.
       
    63     return YES;
       
    64 }
       
    65 
       
    66 - (void)windowControllerDidLoadNib:(NSWindowController *)aController
       
    67 {
       
    68     [super windowControllerDidLoadNib:aController];
       
    69     toolbarController = [[DrawTestToolbarController alloc] initWithDrawView:drawView];
       
    70     [drawView setDocument:[self fileURL]];
       
    71 }
       
    72 
       
    73 - (IBAction)dumpSVGToConsole:(id)sender
       
    74 {
       
    75     WebDataSource* dataSource = [[drawView mainFrame] dataSource];
       
    76     NSLog(@"SVG Markup for file %@:\n%@", [self fileURL], [[dataSource representation] documentSource]);
       
    77 }
       
    78 
       
    79 - (IBAction)openSourceForSelection:(id)sender
       
    80 {
       
    81     // TODO: The "path" message (below) will not produce a valid pathname if we are dealing with a remote file.
       
    82     NSString *filename = [[self fileURL] path];
       
    83     [[NSWorkspace sharedWorkspace] openFile:filename withApplication:@"TextEdit"];
       
    84 }
       
    85 
       
    86 - (NSData *)dataRepresentationOfType:(NSString *)aType
       
    87 {
       
    88     WebDataSource* dataSource = [[drawView mainFrame] dataSource];
       
    89     return [dataSource data];
       
    90 }
       
    91 
       
    92 #pragma mark -
       
    93 #pragma mark Debug Methods
       
    94 
       
    95 - (IBAction)toggleDebugDrawer:(id)sender
       
    96 {
       
    97     [debugDrawer toggle:sender];
       
    98 }
       
    99 
       
   100 - (id)outlineView:(NSOutlineView *)outlineView child:(int)index ofItem:(id)item
       
   101 {
       
   102     return nil;
       
   103 }
       
   104 
       
   105 - (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item
       
   106 {
       
   107     return NO;
       
   108 }
       
   109 
       
   110 - (int)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item
       
   111 {
       
   112     return 0;
       
   113 }
       
   114 
       
   115 - (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item
       
   116 {
       
   117     return nil;
       
   118 }
       
   119 
       
   120 - (IBAction)runWindowResizeTest:(id)sender
       
   121 {
       
   122     NSWindow *window = [drawView window];
       
   123     NSScreen *screen = [window screen];
       
   124     float screenHeight = [screen visibleFrame].size.height;
       
   125     NSRect originalFrame = [window frame];
       
   126     // initial setup
       
   127     BOOL toolbarVisible = [[window toolbar] isVisible];
       
   128     if (toolbarVisible) [window toggleToolbarShown:self];
       
   129     [window setFrame:NSMakeRect(0,screenHeight-100,100,100) display:YES];
       
   130     
       
   131     // grab time.
       
   132     CFAbsoluteTime start = CFAbsoluteTimeGetCurrent();
       
   133     
       
   134     // run test
       
   135     for (int x = 0; x < 3; x++) {
       
   136         for (float size = 100; size < 500.f; size += 20.f) {
       
   137             [window setFrame:NSMakeRect(0, screenHeight-size, size, size) display:YES];
       
   138         }
       
   139     }
       
   140     
       
   141     double elapsed = CFAbsoluteTimeGetCurrent() - start;
       
   142     
       
   143     // log
       
   144     NSLog(@"Window resize test: %fs", elapsed);
       
   145     
       
   146     // restore
       
   147     if (toolbarVisible) [window toggleToolbarShown:self];
       
   148     [window setFrame:originalFrame display:YES];
       
   149 }
       
   150 
       
   151 @end