78 lines
2.7 KiB
JavaScript
78 lines
2.7 KiB
JavaScript
const { Cu } = require("chrome");
|
|
const { Class } = require("sdk/core/heritage");
|
|
const { EventTarget } = require("sdk/event/target");
|
|
const { emit } = require("sdk/event/core");
|
|
const promise = require("promise");
|
|
var { registerPlugin, Plugin } = require("devtools/client/projecteditor/lib/plugins/core");
|
|
const { AppProjectEditor } = require("./app-project-editor");
|
|
const OPTION_URL = "chrome://devtools/skin/images/tool-options.svg";
|
|
const Services = require("Services");
|
|
const Strings = Services.strings.createBundle("chrome://devtools/locale/webide.properties");
|
|
|
|
var AppManagerRenderer = Class({
|
|
extends: Plugin,
|
|
|
|
isAppManagerProject: function () {
|
|
return !!this.host.project.appManagerOpts;
|
|
},
|
|
editorForResource: function (resource) {
|
|
if (!resource.parent && this.isAppManagerProject()) {
|
|
return AppProjectEditor;
|
|
}
|
|
},
|
|
getUI: function (parent) {
|
|
let doc = parent.ownerDocument;
|
|
if (parent.childElementCount == 0) {
|
|
let image = doc.createElement("image");
|
|
let optionImage = doc.createElement("image");
|
|
let flexElement = doc.createElement("div");
|
|
let nameLabel = doc.createElement("span");
|
|
let statusElement = doc.createElement("div");
|
|
|
|
image.className = "project-image";
|
|
optionImage.className = "project-options";
|
|
optionImage.setAttribute("src", OPTION_URL);
|
|
nameLabel.className = "project-name-label";
|
|
statusElement.className = "project-status";
|
|
flexElement.className = "project-flex";
|
|
|
|
parent.appendChild(image);
|
|
parent.appendChild(nameLabel);
|
|
parent.appendChild(flexElement);
|
|
parent.appendChild(statusElement);
|
|
parent.appendChild(optionImage);
|
|
}
|
|
|
|
return {
|
|
image: parent.querySelector(".project-image"),
|
|
nameLabel: parent.querySelector(".project-name-label"),
|
|
statusElement: parent.querySelector(".project-status")
|
|
};
|
|
},
|
|
onAnnotate: function (resource, editor, elt) {
|
|
if (resource.parent || !this.isAppManagerProject()) {
|
|
return;
|
|
}
|
|
|
|
let {appManagerOpts} = this.host.project;
|
|
let doc = elt.ownerDocument;
|
|
|
|
let {image, nameLabel, statusElement} = this.getUI(elt);
|
|
let name = appManagerOpts.name || resource.basename;
|
|
let url = appManagerOpts.iconUrl || "icon-sample.png";
|
|
let status = appManagerOpts.validationStatus || "unknown";
|
|
let tooltip = Strings.formatStringFromName("status_tooltip",
|
|
[Strings.GetStringFromName("status_" + status)], 1);
|
|
|
|
nameLabel.textContent = name;
|
|
image.setAttribute("src", url);
|
|
statusElement.setAttribute("status", status);
|
|
statusElement.setAttribute("tooltiptext", tooltip);
|
|
|
|
return true;
|
|
}
|
|
});
|
|
|
|
exports.AppManagerRenderer = AppManagerRenderer;
|
|
registerPlugin(AppManagerRenderer);
|