kopia lustrzana https://github.com/c9/core
138 wiersze
4.5 KiB
JavaScript
138 wiersze
4.5 KiB
JavaScript
define(function(require, exports, module) {
|
|
main.consumes = ["Editor", "editors", "ui", "save", "vfs"];
|
|
main.provides = ["imgview"];
|
|
return main;
|
|
|
|
function main(options, imports, register) {
|
|
var ui = imports.ui;
|
|
var vfs = imports.vfs;
|
|
var save = imports.save;
|
|
var Editor = imports.Editor;
|
|
var editors = imports.editors;
|
|
|
|
/***** Initialization *****/
|
|
|
|
var extensions = ["gif", "ico"];
|
|
|
|
function ImageEditor(){
|
|
var plugin = new Editor("Ajax.org", main.consumes, extensions);
|
|
var editor;
|
|
|
|
var BGCOLOR = "#3D3D3D";
|
|
|
|
plugin.on("draw", function(e) {
|
|
// Create UI element
|
|
editor = e.tab.appendChild(new ui.img({
|
|
flex: "1",
|
|
anchors: "0 0 0 0",
|
|
visible: "false",
|
|
style: "background-color:" + BGCOLOR
|
|
}));
|
|
|
|
plugin.addElement(editor);
|
|
|
|
save.on("beforeSave", function(e) {
|
|
var path = e.document.tab.path;
|
|
if (!path)
|
|
return;
|
|
|
|
// don't save images for now.
|
|
if (editor.value == path)
|
|
return false;
|
|
}, plugin);
|
|
|
|
editor.show();
|
|
});
|
|
|
|
/***** Method *****/
|
|
|
|
function setPath(path, doc) {
|
|
if (!path) return;
|
|
|
|
// Caption is the filename
|
|
doc.title = (doc.changed ? "*" : "") +
|
|
path.substr(path.lastIndexOf("/") + 1);
|
|
|
|
// Tooltip is the full path
|
|
doc.tooltip = path;
|
|
|
|
var fullpath = path.match(/^\w+:\/\//)
|
|
? path
|
|
: vfs.url(path);
|
|
|
|
editor.setProperty("value", apf.escapeXML(fullpath));
|
|
}
|
|
|
|
/***** Lifecycle *****/
|
|
|
|
plugin.on("documentLoad", function(e) {
|
|
var doc = e.doc;
|
|
doc.tab.on("setPath", function(e) {
|
|
setPath(e.path, doc);
|
|
}, doc.getSession());
|
|
doc.tab.backgroundColor = BGCOLOR;
|
|
doc.tab.classList.add("dark");
|
|
});
|
|
|
|
plugin.on("documentActivate", function(e) {
|
|
setPath(e.doc.tab.path || e.doc.value, e.doc);
|
|
});
|
|
|
|
/***** Register and define API *****/
|
|
|
|
/**
|
|
* The imgview handle, responsible for events that involve all
|
|
* ImageEditor instances. This is the object you get when you request
|
|
* the imgview service in your plugin.
|
|
*
|
|
* Example:
|
|
*
|
|
* define(function(require, exports, module) {
|
|
* main.consumes = ["imgview"];
|
|
* main.provides = ["myplugin"];
|
|
* return main;
|
|
*
|
|
* function main(options, imports, register) {
|
|
* var imgviewHandle = imports.imgview;
|
|
* });
|
|
* });
|
|
*
|
|
*
|
|
* @class imgview
|
|
* @extends Plugin
|
|
* @singleton
|
|
*/
|
|
/**
|
|
* Read Only Image Viewer for Cloud9
|
|
*
|
|
* Example of instantiating a new terminal:
|
|
*
|
|
* tabManager.openFile("/test.png", true, function(err, tab) {
|
|
* if (err) throw err;
|
|
*
|
|
* var imgview = tab.editor;
|
|
* });
|
|
*
|
|
* @class imgview.ImageEditor
|
|
* @extends Editor
|
|
**/
|
|
/**
|
|
* The type of editor. Use this to create the terminal using
|
|
* {@link tabManager#openEditor} or {@link editors#createEditor}.
|
|
* @property {"imgview"} type
|
|
* @readonly
|
|
*/
|
|
plugin.freezePublicAPI({});
|
|
|
|
plugin.load(null, "imgview");
|
|
|
|
return plugin;
|
|
}
|
|
ImageEditor.autoload = false;
|
|
|
|
register(null, {
|
|
imgview: editors.register("imgview", "Image Viewer",
|
|
ImageEditor, extensions)
|
|
});
|
|
}
|
|
}); |