WebInspector.ResourceView = function(resource)
{
WebInspector.View.call(this);
this.registerRequiredCSS("resourceView.css");
this.element.addStyleClass("resource-view");
this.resource = resource;
}
WebInspector.ResourceView.prototype = {
hasContent: function()
{
return false;
}
}
WebInspector.ResourceView.prototype.__proto__ = WebInspector.View.prototype;
WebInspector.ResourceView.hasTextContent = function(resource)
{
if (resource.type.isTextType())
return true;
if (resource.type === WebInspector.resourceTypes.Other)
return resource.content && !resource.contentEncoded;
return false;
}
WebInspector.ResourceView.nonSourceViewForResource = function(resource)
{
switch (resource.type) {
case WebInspector.resourceTypes.Image:
return new WebInspector.ImageView(resource);
case WebInspector.resourceTypes.Font:
return new WebInspector.FontView(resource);
default:
return new WebInspector.ResourceView(resource);
}
}
WebInspector.ResourceSourceFrame = function(resource)
{
this._resource = resource;
WebInspector.SourceFrame.call(this, resource.url);
this._resource.addEventListener(WebInspector.Resource.Events.RevisionAdded, this._contentChanged, this);
}
WebInspector.ResourceSourceFrame.prototype = {
get resource()
{
return this._resource;
},
requestContent: function(callback)
{
function callbackWrapper(content, contentEncoded, mimeType)
{
callback(content, contentEncoded, mimeType);
}
this.resource.requestContent(callbackWrapper.bind(this));
},
_contentChanged: function(event)
{
this.setContent(this._resource.content, false, this._resource.canonicalMimeType());
}
}
WebInspector.ResourceSourceFrame.prototype.__proto__ = WebInspector.SourceFrame.prototype;
WebInspector.EditableResourceSourceFrame = function(resource)
{
WebInspector.ResourceSourceFrame.call(this, resource);
}
WebInspector.EditableResourceSourceFrame.Events = {
TextEdited: "TextEdited"
}
WebInspector.EditableResourceSourceFrame.prototype = {
canEditSource: function()
{
return this._resource.isEditable() && this._resource.type === WebInspector.resourceTypes.Stylesheet;
},
editContent: function(newText, callback)
{
this._clearIncrementalUpdateTimer();
var majorChange = true;
this._settingContent = true;
function callbackWrapper(text)
{
callback(text);
delete this._settingContent;
}
this.resource.setContent(newText, majorChange, callbackWrapper.bind(this));
},
afterTextChanged: function(oldRange, newRange)
{
function commitIncrementalEdit()
{
var majorChange = false;
this.resource.setContent(this._textModel.text, majorChange, function() {});
this.dispatchEventToListeners(WebInspector.EditableResourceSourceFrame.Events.TextEdited, this);
}
const updateTimeout = 200;
this._incrementalUpdateTimer = setTimeout(commitIncrementalEdit.bind(this), updateTimeout);
},
_clearIncrementalUpdateTimer: function()
{
if (this._incrementalUpdateTimer)
clearTimeout(this._incrementalUpdateTimer);
delete this._incrementalUpdateTimer;
},
_contentChanged: function(event)
{
if (!this._settingContent)
WebInspector.ResourceSourceFrame.prototype._contentChanged.call(this, event);
},
didEditContent: function(error, content)
{
WebInspector.SourceFrame.prototype.didEditContent.call(this, error, content);
this.dispatchEventToListeners(WebInspector.EditableResourceSourceFrame.Events.TextEdited, this);
},
isDirty: function()
{
return this._resource.content !== this.textModel.text;
}
}
WebInspector.EditableResourceSourceFrame.prototype.__proto__ = WebInspector.ResourceSourceFrame.prototype;
WebInspector.ResourceRevisionSourceFrame = function(revision)
{
WebInspector.ResourceSourceFrame.call(this, revision.resource);
this._revision = revision;
}
WebInspector.ResourceRevisionSourceFrame.prototype = {
get resource()
{
return this._revision.resource;
},
requestContent: function(callback)
{
this._revision.requestContent(callback);
},
}
WebInspector.ResourceRevisionSourceFrame.prototype.__proto__ = WebInspector.ResourceSourceFrame.prototype;