45 lines
1.2 KiB
JavaScript
45 lines
1.2 KiB
JavaScript
/*global YAHOO, document */
|
|
|
|
(function () {
|
|
var proto, event = YAHOO.util.Event;
|
|
|
|
YAHOO.namespace('YAHOO.WebGUI');
|
|
YAHOO.WebGUI.CodeArea = function (el) {
|
|
this.el = el;
|
|
};
|
|
|
|
proto = YAHOO.WebGUI.CodeArea.prototype;
|
|
proto.draw = function () {
|
|
var el = this.el;
|
|
if (typeof el === 'string') {
|
|
el = this.el = document.getElementById(el);
|
|
}
|
|
el.style.fontFamily = 'monospace';
|
|
};
|
|
proto.render = function () {
|
|
this.draw();
|
|
this.bind();
|
|
};
|
|
proto.bind = function () {
|
|
new YAHOO.util.KeyListener(this.el, { keys: 9 }, {
|
|
fn : this.onTab,
|
|
scope : this,
|
|
correctScope : true
|
|
}).enable();
|
|
};
|
|
proto.onTab = function (type, args) {
|
|
var el = this.el,
|
|
e = args[1],
|
|
start = el.selectionStart,
|
|
end = el.selectionEnd,
|
|
top = el.scrollTop,
|
|
old = el.value,
|
|
str = old.slice(0, start) + '\t' + old.slice(end, old.length);
|
|
|
|
el.value = str;
|
|
el.selectionStart = el.selectionEnd = start + 1;
|
|
el.scrollTop = top;
|
|
|
|
event.stopEvent(e);
|
|
};
|
|
}());
|