WebInspector.ExtensionPanel = function(id, label, iconURL, options)
{
this.toolbarItemLabel = label;
this._addStyleRule(".toolbar-item." + id + " .toolbar-icon", "background-image: url(" + iconURL + ");");
WebInspector.Panel.call(this, id);
}
WebInspector.ExtensionPanel.prototype = {
get defaultFocusedElement()
{
return this.sidebarTreeElement || this.element;
},
updateMainViewWidth: function(width)
{
this.bodyElement.style.left = width + "px";
this.resize();
},
searchCanceled: function(startingNewSearch)
{
WebInspector.extensionServer.notifySearchAction(this._id, "cancelSearch");
WebInspector.Panel.prototype.searchCanceled.apply(this, arguments);
},
performSearch: function(query)
{
WebInspector.extensionServer.notifySearchAction(this._id, "performSearch", query);
WebInspector.Panel.prototype.performSearch.apply(this, arguments);
},
jumpToNextSearchResult: function()
{
WebInspector.extensionServer.notifySearchAction(this._id, "nextSearchResult");
WebInspector.Panel.prototype.jumpToNextSearchResult.call(this);
},
jumpToPreviousSearchResult: function()
{
WebInspector.extensionServer.notifySearchAction(this._id, "previousSearchResult");
WebInspector.Panel.prototype.jumpToPreviousSearchResult.call(this);
},
_addStyleRule: function(selector, body)
{
var style = document.createElement("style");
style.textContent = selector + " { " + body + " }";
document.head.appendChild(style);
}
}
WebInspector.ExtensionPanel.prototype.__proto__ = WebInspector.Panel.prototype;
WebInspector.ExtensionSidebarPane = function(title, id)
{
WebInspector.SidebarPane.call(this, title);
this._id = id;
}
WebInspector.ExtensionSidebarPane.prototype = {
setObject: function(object, title)
{
this._setObject(WebInspector.RemoteObject.fromLocalObject(object), title);
},
setExpression: function(expression, title)
{
RuntimeAgent.evaluate(expression, "extension-watch", true, this._onEvaluate.bind(this, title));
},
setPage: function(url)
{
this.bodyElement.removeChildren();
WebInspector.extensionServer.createClientIframe(this.bodyElement, url);
WebInspector.extensionServer.notifyExtensionSidebarUpdated(this._id);
},
_onEvaluate: function(title, error, result, wasThrown)
{
if (!error)
this._setObject(WebInspector.RemoteObject.fromPayload(result), title);
},
_setObject: function(object, title)
{
this.bodyElement.removeChildren();
var section = new WebInspector.ObjectPropertiesSection(object, title);
if (!title)
section.headerElement.addStyleClass("hidden");
section.expanded = true;
section.editable = false;
this.bodyElement.appendChild(section.element);
WebInspector.extensionServer.notifyExtensionSidebarUpdated(this._id);
}
}
WebInspector.ExtensionSidebarPane.prototype.__proto__ = WebInspector.SidebarPane.prototype;