114 lines
2.8 KiB
JavaScript
114 lines
2.8 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
"use strict";
|
|
|
|
const { SimpleStringFront } = require("devtools/shared/fronts/string");
|
|
const { Front, FrontClassWithSpec } = require("devtools/shared/protocol");
|
|
const {
|
|
oldStyleSheetSpec,
|
|
styleEditorSpec
|
|
} = require("devtools/shared/specs/styleeditor");
|
|
const promise = require("promise");
|
|
const defer = require("devtools/shared/defer");
|
|
const events = require("sdk/event/core");
|
|
|
|
/**
|
|
* StyleSheetFront is the client-side counterpart to a StyleSheetActor.
|
|
*/
|
|
const OldStyleSheetFront = FrontClassWithSpec(oldStyleSheetSpec, {
|
|
initialize: function (conn, form, ctx, detail) {
|
|
Front.prototype.initialize.call(this, conn, form, ctx, detail);
|
|
|
|
this._onPropertyChange = this._onPropertyChange.bind(this);
|
|
events.on(this, "property-change", this._onPropertyChange);
|
|
},
|
|
|
|
destroy: function () {
|
|
events.off(this, "property-change", this._onPropertyChange);
|
|
|
|
Front.prototype.destroy.call(this);
|
|
},
|
|
|
|
_onPropertyChange: function (property, value) {
|
|
this._form[property] = value;
|
|
},
|
|
|
|
form: function (form, detail) {
|
|
if (detail === "actorid") {
|
|
this.actorID = form;
|
|
return;
|
|
}
|
|
this.actorID = form.actor;
|
|
this._form = form;
|
|
},
|
|
|
|
getText: function () {
|
|
let deferred = defer();
|
|
|
|
events.once(this, "source-load", (source) => {
|
|
let longStr = new SimpleStringFront(source);
|
|
deferred.resolve(longStr);
|
|
});
|
|
this.fetchSource();
|
|
|
|
return deferred.promise;
|
|
},
|
|
|
|
getOriginalSources: function () {
|
|
return promise.resolve([]);
|
|
},
|
|
|
|
get href() {
|
|
return this._form.href;
|
|
},
|
|
get nodeHref() {
|
|
return this._form.nodeHref;
|
|
},
|
|
get disabled() {
|
|
return !!this._form.disabled;
|
|
},
|
|
get title() {
|
|
return this._form.title;
|
|
},
|
|
get isSystem() {
|
|
return this._form.system;
|
|
},
|
|
get styleSheetIndex() {
|
|
return this._form.styleSheetIndex;
|
|
},
|
|
get ruleCount() {
|
|
return this._form.ruleCount;
|
|
}
|
|
});
|
|
|
|
exports.OldStyleSheetFront = OldStyleSheetFront;
|
|
|
|
/**
|
|
* The corresponding Front object for the StyleEditorActor.
|
|
*/
|
|
const StyleEditorFront = FrontClassWithSpec(styleEditorSpec, {
|
|
initialize: function (client, tabForm) {
|
|
Front.prototype.initialize.call(this, client);
|
|
this.actorID = tabForm.styleEditorActor;
|
|
this.manage(this);
|
|
},
|
|
|
|
getStyleSheets: function () {
|
|
let deferred = defer();
|
|
|
|
events.once(this, "document-load", (styleSheets) => {
|
|
deferred.resolve(styleSheets);
|
|
});
|
|
this.newDocument();
|
|
|
|
return deferred.promise;
|
|
},
|
|
|
|
addStyleSheet: function (text) {
|
|
return this.newStyleSheet(text);
|
|
}
|
|
});
|
|
|
|
exports.StyleEditorFront = StyleEditorFront;
|