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 */ 34WebInspector.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 43WebInspector.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 */ 59WebInspector.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 */ 72WebInspector.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.Resource} resource 88 */ 89WebInspector.ResourceSourceFrame = function(resource) 90{ 91 this._resource = resource; 92 WebInspector.SourceFrame.call(this, resource); 93} 94 95WebInspector.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.Resource} resource 113 */ 114WebInspector.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 122WebInspector.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