changes for Mozilla Workspace. work in progress, definitely not ready for pull requests! ;)

This commit is contained in:
Mihai Sucan 2011-02-19 20:20:22 +02:00
commit b261c4e4dd
21 changed files with 5254 additions and 28 deletions

View file

@ -39,10 +39,11 @@ define(function(require, exports, module) {
var event = require("pilot/event");
var useragent = require("pilot/useragent");
var XHTML_NS = "http://www.w3.org/1999/xhtml";
var TextInput = function(parentNode, host) {
var text = document.createElement("textarea");
var text = document.createElementNS(XHTML_NS, "textarea");
text.style.left = "-10000px";
parentNode.appendChild(text);

View file

@ -39,13 +39,14 @@
define(function(require, exports, module) {
var dom = require("pilot/dom");
var XHTML_NS = "http://www.w3.org/1999/xhtml";
var Cursor = function(parentEl) {
this.element = document.createElement("div");
this.element = document.createElementNS(XHTML_NS, "div");
this.element.className = "ace_layer ace_cursor-layer";
parentEl.appendChild(this.element);
this.cursor = document.createElement("div");
this.cursor = document.createElementNS(XHTML_NS, "div");
this.cursor.className = "ace_cursor";
this.isVisible = false;

View file

@ -39,9 +39,10 @@
define(function(require, exports, module) {
var dom = require("pilot/dom");
var XHTML_NS = "http://www.w3.org/1999/xhtml";
var Gutter = function(parentEl) {
this.element = document.createElement("div");
this.element = document.createElementNS(XHTML_NS, "div");
this.element.className = "ace_layer ace_gutter-layer";
parentEl.appendChild(this.element);
@ -110,7 +111,6 @@ var Gutter = function(parentEl) {
annotation.className,
"' title='", annotation.text.join("\n"),
"' style='height:", this.session.getRowHeight(config, i), "px;'>", (i+1), "</div>");
html.push("</div>");
}
this.element = dom.setInnerHtml(this.element, html.join(""));
this.element.style.height = config.minHeight + "px";

View file

@ -40,9 +40,10 @@ define(function(require, exports, module) {
var Range = require("ace/range").Range;
var dom = require("pilot/dom");
var XHTML_NS = "http://www.w3.org/1999/xhtml";
var Marker = function(parentEl) {
this.element = document.createElement("div");
this.element = document.createElementNS(XHTML_NS, "div");
this.element.className = "ace_layer ace_marker-layer";
parentEl.appendChild(this.element);
};

View file

@ -43,8 +43,10 @@ var dom = require("pilot/dom");
var lang = require("pilot/lang");
var EventEmitter = require("pilot/event_emitter").EventEmitter;
var XHTML_NS = "http://www.w3.org/1999/xhtml";
var Text = function(parentEl) {
this.element = document.createElement("div");
this.element = document.createElementNS(XHTML_NS, "div");
this.element.className = "ace_layer ace_text-layer";
parentEl.appendChild(this.element);
@ -95,7 +97,7 @@ var Text = function(parentEl) {
this.$measureSizes = function() {
var n = 1000;
if (!this.$measureNode) {
var measureNode = this.$measureNode = document.createElement("div");
var measureNode = this.$measureNode = document.createElementNS(XHTML_NS, "div");
var style = measureNode.style;
style.width = style.height = "auto";
@ -110,7 +112,8 @@ var Text = function(parentEl) {
// that's why we have to measure many characters
// Note: characterWidth can be a float!
measureNode.innerHTML = lang.stringRepeat("Xy", n);
document.body.insertBefore(measureNode, document.body.firstChild);
var body = document.body || document.documentElement;
body.insertBefore(measureNode, body.firstChild);
}
var style = this.$measureNode.style;
@ -144,12 +147,12 @@ var Text = function(parentEl) {
if (this.showInvisibles) {
var halfTab = (tabSize) / 2;
this.$tabString = "<span class='ace_invisible'>"
+ new Array(Math.floor(halfTab)).join("&nbsp;")
+ new Array(Math.floor(halfTab)).join("&#160;")
+ this.TAB_CHAR
+ new Array(Math.ceil(halfTab)+1).join("&nbsp;")
+ new Array(Math.ceil(halfTab)+1).join("&#160;")
+ "</span>";
} else {
this.$tabString = new Array(tabSize+1).join("&nbsp;");
this.$tabString = new Array(tabSize+1).join("&#160;");
}
};
@ -220,7 +223,7 @@ var Text = function(parentEl) {
var fragment = document.createDocumentFragment();
var tokens = this.tokenizer.getTokens(firstRow, lastRow);
for (var row=firstRow; row<=lastRow; row++) {
var lineEl = document.createElement("div");
var lineEl = document.createElementNS(XHTML_NS, "div");
lineEl.className = "ace_line";
var style = lineEl.style;
style.height = this.session.getRowHeight(config, row) + "px";
@ -261,7 +264,7 @@ var Text = function(parentEl) {
var spaceRe = /( +)|([\v\f \u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000])/g;
var spaceReplace = function(space) {
if (space.charCodeAt(0) == 32)
return new Array(space.length+1).join("&nbsp;");
return new Array(space.length+1).join("&#160;");
else {
var space = new Array(space.length+1).join(self.SPACE_CHAR);
return "<span class='ace_invisible'>" + space + "</span>";
@ -271,7 +274,7 @@ var Text = function(parentEl) {
}
else {
var spaceRe = /[\v\f \u00a0\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u2028\u2029\u3000]/g;
var spaceReplace = "&nbsp;";
var spaceReplace = "&#160;";
}
var _self = this;

View file

@ -41,12 +41,13 @@ var oop = require("pilot/oop");
var dom = require("pilot/dom");
var event = require("pilot/event");
var EventEmitter = require("pilot/event_emitter").EventEmitter;
var XHTML_NS = "http://www.w3.org/1999/xhtml";
var ScrollBar = function(parent) {
this.element = document.createElement("div");
this.element = document.createElementNS(XHTML_NS, "div");
this.element.className = "ace_sb";
this.inner = document.createElement("div");
this.inner = document.createElementNS(XHTML_NS, "div");
this.element.appendChild(this.inner);
parent.appendChild(this.element);

View file

@ -53,6 +53,8 @@ var RenderLoop = require("ace/renderloop").RenderLoop;
var EventEmitter = require("pilot/event_emitter").EventEmitter;
var editorCss = require("text!ace/css/editor.css");
var XHTML_NS = "http://www.w3.org/1999/xhtml";
// import CSS once
dom.importCssString(editorCss);
@ -62,15 +64,15 @@ var VirtualRenderer = function(container, theme) {
this.setTheme(theme);
this.$gutter = document.createElement("div");
this.$gutter = document.createElementNS(XHTML_NS, "div");
this.$gutter.className = "ace_gutter";
this.container.appendChild(this.$gutter);
this.scroller = document.createElement("div");
this.scroller = document.createElementNS(XHTML_NS, "div");
this.scroller.className = "ace_scroller";
this.container.appendChild(this.scroller);
this.content = document.createElement("div");
this.content = document.createElementNS(XHTML_NS, "div");
this.content.className = "ace_content";
this.scroller.appendChild(this.content);
@ -293,9 +295,9 @@ var VirtualRenderer = function(container, theme) {
return;
if (!this.$printMarginEl) {
containerEl = document.createElement("div");
containerEl = document.createElementNS(XHTML_NS, "div");
containerEl.className = "ace_print_margin_layer";
this.$printMarginEl = document.createElement("div")
this.$printMarginEl = document.createElementNS(XHTML_NS, "div")
this.$printMarginEl.className = "ace_print_margin";
containerEl.appendChild(this.$printMarginEl);
this.content.insertBefore(containerEl, this.$textLayer.element);
@ -701,12 +703,12 @@ var VirtualRenderer = function(container, theme) {
this.showComposition = function(position) {
if (!this.$composition) {
this.$composition = document.createElement("div");
this.$composition = document.createElementNS(XHTML_NS, "div");
this.$composition.className = "ace_composition";
this.content.appendChild(this.$composition);
}
this.$composition.innerHTML = "&nbsp;";
this.$composition.innerHTML = "&#160;";
var pos = this.$cursorLayer.getPixelPosition();
var style = this.$composition.style;
@ -776,4 +778,4 @@ var VirtualRenderer = function(container, theme) {
}).call(VirtualRenderer.prototype);
exports.VirtualRenderer = VirtualRenderer;
});
});

View file

@ -1,3 +1,4 @@
/* vim:ts=4:sts=4:sw=4:
/**
* Ajax.org Code Editor (ACE)
*
@ -74,8 +75,12 @@ var WorkerClient = function(topLevelNamespaces, packagedJs, module, classname) {
this.$guessBasePath = function() {
var scripts = document.getElementsByTagName("script");
for (var i=0; i<scripts.length; i++) {
var m = scripts[i].src.
match(/^(.*\/)ace\.js$|^(.*\/)ace-uncompressed\.js$/);
var src = scripts[i].src || scripts[i].getAttribute("src");
if (!src) {
continue;
}
var m = src.match(/^(.*\/)ace\.js$|^(.*\/)ace-uncompressed\.js$/);
if (m) {
return m[1] || m[2];
}