Basic ExtJS wrapper
This commit is contained in:
parent
36e89847ca
commit
fae2af5ad4
1 changed files with 114 additions and 0 deletions
114
lib/ace/wrappers/extjs.js
Normal file
114
lib/ace/wrappers/extjs.js
Normal file
|
|
@ -0,0 +1,114 @@
|
|||
|
||||
define(function(require, exports, module) {
|
||||
|
||||
// TODO: Move this out of here
|
||||
require("pilot/fixoldbrowsers");
|
||||
|
||||
var CANON = require("pilot/canon");
|
||||
var EDITOR = require("ace/editor").Editor;
|
||||
var RENDERER = require("ace/virtual_renderer").VirtualRenderer;
|
||||
var THEME_TEXTMATE = require("ace/theme/textmate");
|
||||
|
||||
Ext.ux.AceEditor = Ext.extend(Ext.BoxComponent, {
|
||||
|
||||
initComponent: function() {
|
||||
Ext.ux.AceEditor.superclass.initComponent.call(this);
|
||||
var self = this;
|
||||
|
||||
self.value = null;
|
||||
|
||||
self.addEvents(
|
||||
"editor-save",
|
||||
"editor-saveas"
|
||||
);
|
||||
CANON.addCommand({
|
||||
name: "save",
|
||||
exec: function(env, args, request) {
|
||||
self.fireEvent('editor-save', self);
|
||||
}
|
||||
});
|
||||
CANON.addCommand({
|
||||
name: "saveas",
|
||||
exec: function(env, args, request) {
|
||||
self.fireEvent('editor-saveas', self);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
onRender: function() {
|
||||
Ext.BoxComponent.superclass.onRender.apply(this, arguments);
|
||||
|
||||
|
||||
this.editor = new EDITOR(new RENDERER(this.el.dom, THEME_TEXTMATE));
|
||||
this.editor.resize();
|
||||
|
||||
if(this.value!==null) {
|
||||
this.setValue(this.value[0], this.value[1]);
|
||||
}
|
||||
|
||||
var self = this;
|
||||
this.editor.getDocument().addEventListener("changeDelta", function() {
|
||||
self.fireEvent('editor-changeDelta', self);
|
||||
});
|
||||
},
|
||||
|
||||
onResize: function( aw, ah ){
|
||||
if(this.editor) {
|
||||
this.editor.resize();
|
||||
}
|
||||
},
|
||||
|
||||
getValue: function() {
|
||||
return this.editor.getDocument().getValue();
|
||||
},
|
||||
|
||||
setValue: function(value, options) {
|
||||
if(!this.editor) {
|
||||
this.value = [value, options];
|
||||
return;
|
||||
}
|
||||
this.value = null;
|
||||
|
||||
options = options || {};
|
||||
|
||||
var doc = this.editor.getDocument(),
|
||||
ext,
|
||||
mode;
|
||||
|
||||
if(typeof options.basename != "undefined" && (ext = options.basename.match(/\.([\w]+)$/))) {
|
||||
switch(ext[1]) {
|
||||
case "xml":
|
||||
case "xhtml":
|
||||
case "rdf":
|
||||
mode = require("ace/mode/xml").Mode;
|
||||
break;
|
||||
case "htm":
|
||||
case "html":
|
||||
mode = require("ace/mode/html").Mode;
|
||||
break;
|
||||
case "js":
|
||||
case "json":
|
||||
mode = require("ace/mode/javascript").Mode;
|
||||
break;
|
||||
case "css":
|
||||
mode = require("ace/mode/css").Mode;
|
||||
break;
|
||||
case "py":
|
||||
mode = require("ace/mode/python").Mode;
|
||||
break;
|
||||
case "php":
|
||||
mode = require("ace/mode/php").Mode;
|
||||
break;
|
||||
default:
|
||||
mode = require("ace/mode/text").Mode;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
mode = require("ace/mode/text").Mode;
|
||||
}
|
||||
doc.setMode(new mode());
|
||||
doc.setValue(value);
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue