Home | History | Annotate | Download | only in source_frame
      1 /*
      2  * Copyright (C) 2007, 2008 Apple Inc.  All rights reserved.
      3  * Copyright (C) IBM Corp. 2009  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  *
      9  * 1.  Redistributions of source code must retain the above copyright
     10  *     notice, this list of conditions and the following disclaimer.
     11  * 2.  Redistributions in binary form must reproduce the above copyright
     12  *     notice, this list of conditions and the following disclaimer in the
     13  *     documentation and/or other materials provided with the distribution.
     14  * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
     15  *     its contributors may be used to endorse or promote products derived
     16  *     from this software without specific prior written permission.
     17  *
     18  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
     19  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     20  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     21  * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
     22  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
     23  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
     24  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
     25  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     26  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
     27  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     28  */
     29 
     30 /**
     31  * @extends {WebInspector.VBox}
     32  * @constructor
     33  */
     34 WebInspector.ResourceView = function(resource)
     35 {
     36     WebInspector.VBox.call(this);
     37     this.registerRequiredCSS("resourceView.css");
     38 
     39     this.element.classList.add("resource-view");
     40     this.resource = resource;
     41 }
     42 
     43 WebInspector.ResourceView.prototype = {
     44     /**
     45      * @return {boolean}
     46      */
     47     hasContent: function()
     48     {
     49         return false;
     50     },
     51 
     52     __proto__: WebInspector.VBox.prototype
     53 }
     54 
     55 /**
     56  * @param {!WebInspector.Resource} resource
     57  * @return {boolean}
     58  */
     59 WebInspector.ResourceView.hasTextContent = function(resource)
     60 {
     61     if (resource.type.isTextType())
     62         return true;
     63     if (resource.type === WebInspector.resourceTypes.Other)
     64         return !!resource.content && !resource.contentEncoded;
     65     return false;
     66 }
     67 
     68 /**
     69  * @param {!WebInspector.Resource} resource
     70  * @return {!WebInspector.ResourceView}
     71  */
     72 WebInspector.ResourceView.nonSourceViewForResource = function(resource)
     73 {
     74     switch (resource.type) {
     75     case WebInspector.resourceTypes.Image:
     76         return new WebInspector.ImageView(resource);
     77     case WebInspector.resourceTypes.Font:
     78         return new WebInspector.FontView(resource);
     79     default:
     80         return new WebInspector.ResourceView(resource);
     81     }
     82 }
     83 
     84 /**
     85  * @extends {WebInspector.SourceFrame}
     86  * @constructor
     87  * @param {!WebInspector.ContentProvider} resource
     88  */
     89 WebInspector.ResourceSourceFrame = function(resource)
     90 {
     91     this._resource = resource;
     92     WebInspector.SourceFrame.call(this, resource);
     93 }
     94 
     95 WebInspector.ResourceSourceFrame.prototype = {
     96     get resource()
     97     {
     98         return this._resource;
     99     },
    100 
    101     populateTextAreaContextMenu: function(contextMenu, lineNumber)
    102     {
    103         contextMenu.appendApplicableItems(this._resource);
    104     },
    105 
    106     __proto__: WebInspector.SourceFrame.prototype
    107 }
    108 
    109 /**
    110  * @constructor
    111  * @extends {WebInspector.VBox}
    112  * @param {!WebInspector.ContentProvider} resource
    113  */
    114 WebInspector.ResourceSourceFrameFallback = function(resource)
    115 {
    116     WebInspector.VBox.call(this);
    117     this._resource = resource;
    118     this.element.classList.add("script-view");
    119     this._content = this.element.createChild("div", "script-view-fallback monospace");
    120 }
    121 
    122 WebInspector.ResourceSourceFrameFallback.prototype = {
    123     wasShown: function()
    124     {
    125         if (!this._contentRequested) {
    126             this._contentRequested = true;
    127             this._resource.requestContent(this._contentLoaded.bind(this));
    128         }
    129     },
    130 
    131     /**
    132      * @param {?string} content
    133      */
    134     _contentLoaded: function(content)
    135     {
    136         this._content.textContent = content;
    137     },
    138 
    139     __proto__: WebInspector.VBox.prototype
    140 }
    141