From 26a48f92247c388bb350d82f50d37b877aecfe8f Mon Sep 17 00:00:00 2001 From: nightwing Date: Tue, 28 Mar 2017 18:30:30 +0400 Subject: [PATCH] remove dom parser --- plugins/c9.ide.ace.statusbar/statusbar.js | 6 +- plugins/c9.ide.ui/lib_apf.js | 734 +++------------------- plugins/c9.ide.ui/ui.js | 2 +- 3 files changed, 83 insertions(+), 659 deletions(-) diff --git a/plugins/c9.ide.ace.statusbar/statusbar.js b/plugins/c9.ide.ace.statusbar/statusbar.js index 94502e89..4bb9ee73 100644 --- a/plugins/c9.ide.ace.statusbar/statusbar.js +++ b/plugins/c9.ide.ace.statusbar/statusbar.js @@ -91,8 +91,8 @@ define(function(require, exports, module) { // Checkboxes menu.on("afterrender", function(e) { - var itmSbWrap = window.itmSbWrap; - var itmSbWrapPM = window.itmSbWrapPM; + var itmSbWrap = handle.getElement("itmSbWrap"); + var itmSbWrapPM = handle.getElement("itmSbWrapPM"); itmSbWrap.on("click", function() { setOption("wrap", itmSbWrap.checked @@ -153,7 +153,7 @@ define(function(require, exports, module) { node.on("click", handlers[idx]); }); - var itmTabSize = window.itmTabSize; + var itmTabSize = handle.getElement("itmTabSize"); itmTabSize.on("afterchange", function() { setOption("tabSize", this.value); update(); diff --git a/plugins/c9.ide.ui/lib_apf.js b/plugins/c9.ide.ui/lib_apf.js index 8326763f..1d5e8f10 100644 --- a/plugins/c9.ide.ui/lib_apf.js +++ b/plugins/c9.ide.ui/lib_apf.js @@ -508,8 +508,8 @@ define(["require", "module", "exports", "./lib/menu/menu", "./lib/crypto", /** * @private */ - initialize: function(xmlStr) { - apf.window.init(xmlStr); + initialize: function() { + apf.window.init(); }, fireEvent: function(el, type, e, capture) { @@ -677,15 +677,9 @@ apf.Class.prototype = new (function(){ if (struct && (struct.htmlNode || this.nodeFunc == apf.NODE_HIDDEN)) { this.$pHtmlNode = struct.htmlNode; - - - if (this.ownerDocument && this.ownerDocument.$domParser) - this.ownerDocument.$domParser.$continueParsing(this); - - + if (this.$onInsertedIntoDocument) + this.$onInsertedIntoDocument(); apf.queue.empty(); - - } return this; @@ -898,9 +892,6 @@ apf.Class.prototype = new (function(){ } if (--apf.$eventDepth == 0 && this.ownerDocument - && !this.ownerDocument.$domParser.$parseContext - && !apf.isDestroying && apf.loaded - && apf.queue ) { apf.queue.empty(); @@ -1001,7 +992,7 @@ apf.Class.prototype = new (function(){ this.dispatchEvent("DOMNodeRemoved", { relatedNode: this.parentNode, - bubbles: !apf.isDestroying + bubbles: true }); this.dispatchEvent("DOMNodeRemovedFromDocument"); @@ -5620,409 +5611,6 @@ return { - -/** - * The parser of the Ajax.org Markup Language. Besides aml this parser takes care - * of distributing parsing tasks to other parsers like the native html parser and - * the xsd parser. - * @parser - * @private - * - * @define include element that loads another aml files. - * Example: - * - * - * - * @attribute {String} src the location of the aml file to include in this application. - * - */ -apf.DOMParser = function(){}; - -apf.DOMParser.prototype = new (function(){ - this.caseInsensitive = true; - this.preserveWhiteSpace = false; //@todo apf3.0 whitespace issue - - this.$waitQueue = {} - this.$callCount = 0; - - // privates - var RE = [ - /\<\!(DOCTYPE|doctype)[^>]*>/, - / /g, - /<\s*\/?\s*(?:\w+:\s*)[\w-]*[\s>\/]/g - ]; - - this.parseFromString = function(xmlStr, mimeType, options) { - var xmlNode; - if (this.caseInsensitive) { - var str = xmlStr.replace(RE[0], "") - .replace(RE[2], //.replace(/^[\r\n\s]*/, "") - function(m){ return m.toLowerCase(); }); - - if (!this.supportNamespaces) - str = str.replace(/xmlns\=\"[^"]*\"/g, ""); - - - - var xmlNode = apf.getXmlDom(str); - if (apf.xmlParseError) apf.xmlParseError(xmlNode); - xmlNode = xmlNode.documentElement; - - } - else { - xmlNode = apf.getXmlDom(xmlStr, null, this.preserveWhiteSpace || apf.debug).documentElement; - } - - return this.parseFromXml(xmlNode, options); - }; - - //@todo prevent leakage by not recording .$aml - this.parseFromXml = function(xmlNode, options) { - var doc, docFrag, amlNode, beforeNode; - if (!options) - options = {}; - - if (!options.delayedRender && !options.include) { - //Create a new document - if (options.doc) { - doc = options.doc; - docFrag = options.docFrag || doc.createDocumentFragment(); - } - else { - doc = new apf.AmlDocument(); - doc.$aml = xmlNode; - doc.$domParser = this; - } - if (options.host) - doc.$parentNode = options.host; //This is for sub docs that need to access the outside tree - - - - //Let's start building our tree - amlNode = this.$createNode(doc, xmlNode.nodeType, xmlNode); //Root node - (docFrag || doc).appendChild(amlNode); - if (options.htmlNode) - amlNode.$int = options.htmlNode; - } - else { - amlNode = options.amlNode; - doc = options.doc; - - if (options.include) { - var n = amlNode.childNodes; - var p = n.indexOf(options.beforeNode); - var rest = p ? n.splice(p, n.length - p) : []; - } - } - - //Set parse context - this.$parseContext = [amlNode, options]; - - this.$addParseState(amlNode, options || {}); - - //First pass - Node creation - var nodes, nodelist = {}, prios = [], _self = this; - var recur; - (recur = function(amlNode, nodes) { - var cL, newNode, node, nNodes, - cNodes = amlNode.childNodes, - i = 0, - l = nodes.length; - for (; i < l; i++) { - //Create child - newNode = _self.$createNode(doc, (node = nodes[i]).nodeType, node); - if (!newNode) continue; //for preserveWhiteSpace support - - cNodes[cL = cNodes.length] = newNode; //Add to children - - //Set tree refs - newNode.parentNode = amlNode; - if (cL > 0) - (newNode.previousSibling = cNodes[cL - 1]).nextSibling = newNode; - - //Create children - if (!newNode.render && newNode.canHaveChildren && (nNodes = node.childNodes).length) - recur(newNode, nNodes); - - //newNode.$aml = node; //@todo should be deprecated... - - //Store high prio nodes for prio insertion - if (newNode.$parsePrio) { - if (newNode.$parsePrio == "001") { - newNode.dispatchEvent("DOMNodeInsertedIntoDocument"); //{relatedParent : nodes[j].parentNode} - continue; - } - - (nodelist[newNode.$parsePrio] || (prios.push(newNode.$parsePrio) - && (nodelist[newNode.$parsePrio] = []))).push(newNode); //for second pass - } - } - - amlNode.firstChild = cNodes[0]; - amlNode.lastChild = cNodes[cL]; - })(amlNode, xmlNode.childNodes); - - if (options.include && rest.length) { - var index = n.length - 1; - n.push.apply(n, rest); - var last = n[index]; - var next = n[index + 1]; - (next.previousSibling = last).nextSibling = next; - amlNode.lastChild = n[n.length - 1]; - } - - if (options.delay) { - amlNode.$parseOptions = { - prios: prios, - nodelist: nodelist - }; - return (docFrag || doc); - } - - //Second pass - Document Insert signalling - prios.sort(); - var i, j, l, l2; - for (i = 0, l = prios.length; i < l; i++) { - nodes = nodelist[prios[i]]; - for (j = 0, l2 = nodes.length; j < l2; j++) { - nodes[j].dispatchEvent("DOMNodeInsertedIntoDocument"); //{relatedParent : nodes[j].parentNode} - } - } - - if (this.$waitQueue[amlNode.$uniqueId] - && this.$waitQueue[amlNode.$uniqueId].$shouldWait) - return (docFrag || doc); - this.$continueParsing(amlNode, options); - - return (docFrag || doc); - }; - - this.$isPaused = function(amlNode) { - return this.$waitQueue[amlNode.$uniqueId] && - this.$waitQueue[amlNode.$uniqueId].$shouldWait > 0; - } - - this.$addParseState = function(amlNode, options) { - var waitQueue = this.$waitQueue[amlNode.$uniqueId] - || (this.$waitQueue[amlNode.$uniqueId] = []) - waitQueue.pushUnique(options); - - return waitQueue; - } - - this.$pauseParsing = function(amlNode, options) { - var waitQueue = this.$waitQueue[amlNode.$uniqueId]; - if (!waitQueue.$shouldWait) waitQueue.$shouldWait = 0; - waitQueue.$shouldWait++; - } - - this.$continueParsing = function(amlNode, options) { - if (!amlNode) - amlNode = apf.document.documentElement; - - var uId = amlNode.$uniqueId; - if (uId in this.$waitQueue) { - var item = this.$waitQueue[uId]; - - if (item.$shouldWait && --item.$shouldWait) - return false; - - var node = amlNode.parentNode; - while (node && node.nodeType == 1) { - if (this.$waitQueue[node.$uniqueId] - && this.$waitQueue[node.$uniqueId].$shouldWait) - return false; - node = node.parentNode; - } - - var parseAmlNode = apf.all[uId]; - delete this.$waitQueue[uId]; - if (parseAmlNode) { - for (var i = 0; i < item.length; i++) - this.$parseState(parseAmlNode, item[i]); - } - - //@todo Check for shouldWait here? - } - else - this.$parseState(amlNode, options || {}); - - delete this.$parseContext; - } - - this.$parseState = function(amlNode, options) { - if (amlNode.$amlDestroyed) - return; - - this.$callCount++; - - if (amlNode.$parseOptions) { - var prios = amlNode.$parseOptions.prios, - nodelist = amlNode.$parseOptions.nodelist, - i, j, l, l2, node; - delete amlNode.$parseOptions; - - //Second pass - Document Insert signalling - prios.sort(); - for (i = 0, l = prios.length; i < l; i++) { - var nodes = nodelist[prios[i]]; - for (j = 0, l2 = nodes.length; j < l2; j++) { - if (!(node = nodes[j]).parentNode || node.$amlLoaded) //@todo generalize this using compareDocumentPosition - continue; - nodes[j].dispatchEvent("DOMNodeInsertedIntoDocument"); //{relatedParent : nodes[j].parentNode} - } - } - } - - //instead of $amlLoaded use something more generic see compareDocumentPosition - if (!options.ignoreSelf && !amlNode.$amlLoaded) - amlNode.dispatchEvent("DOMNodeInsertedIntoDocument"); //{relatedParent : nodes[j].parentNode} - - //Recursively signal non prio nodes - (function _recur(nodes) { - var node, nNodes; - for (var i = 0, l = nodes.length; i < l; i++) { - if (!(node = nodes[i]).$amlLoaded) { - node.dispatchEvent("DOMNodeInsertedIntoDocument"); //{relatedParent : nodes[j].parentNode} - } - - //Create children - if (!node.render && (nNodes = node.childNodes).length) - _recur(nNodes); - } - })(amlNode.childNodes); - - if (!--this.$callCount && !options.delay) - apf.queue.empty(); - - if (options.callback) - options.callback.call(amlNode.ownerDocument); - }; - - this.$createNode = function(doc, nodeType, xmlNode, namespaceURI, nodeName, nodeValue) { - var o; - - switch (nodeType) { - case 1: - var id, prefix; - if (xmlNode) { - if ((namespaceURI = xmlNode.namespaceURI || apf.ns.xhtml) - && !(prefix = doc.$prefixes[namespaceURI])) { - doc.$prefixes[prefix = xmlNode.prefix || xmlNode.scopeName || ""] = namespaceURI; - doc.$namespaceURIs[namespaceURI] = prefix; - - if (!doc.namespaceURI && !prefix) { - doc.namespaceURI = namespaceURI; - doc.prefix = prefix; - } - } - nodeName = xmlNode.baseName || xmlNode.localName || xmlNode.tagName.split(":").pop(); - } - else { - prefix = doc.$prefixes[namespaceURI] || ""; - } - - - - var els = apf.namespaces[namespaceURI].elements; - - - - o = new (els[nodeName] || els["@default"])(null, nodeName); - - o.prefix = prefix || ""; - o.namespaceURI = namespaceURI; - o.tagName = prefix ? prefix + ":" + nodeName : nodeName; - - if (xmlNode) { - if ((id = xmlNode.getAttribute("id")) && !self[id]) - o.$propHandlers["id"].call(o, o.id = id); - - //attributes - var attr = xmlNode.attributes, n; - for (var a, na, i = 0, l = attr.length; i < l; i++) { - na = new apf.AmlAttr(o, - (n = (a = attr[i]).nodeName), a.value) - o.attributes[na.nodeName] = na; - - if (n == "render") - o.render = true; - else - - if (n.substr(0, 2) == "on") - na.$triggerUpdate(); - } - } - - break; - case 2: - o = new apf.AmlAttr(); - o.name = o.nodeName = nodeName; - if (nodeValue || (nodeValue = xmlNode && xmlNode.nodeValue)) - o.value = o.nodeValue = nodeValue; - - if (xmlNode) { - if (xmlNode.namespaceURI && !(o.prefix = doc.$namespaceURIs[o.namespaceURI = xmlNode.namespaceURI])) - doc.$prefixes[o.prefix = xmlNode.prefix || xmlNode.scopeName] = o.namespaceURI; - } - else { - o.prefix = doc.$prefixes[namespaceURI]; - } - - break; - case 3: - if (xmlNode) - nodeValue = xmlNode && xmlNode.nodeValue; - if (!this.preserveWhiteSpace && !(nodeValue || "").trim()) - return; - - o = new apf.AmlText(); - o.nodeValue = nodeValue || xmlNode && xmlNode.nodeValue; - break; - case 7: - var target = nodeName || xmlNode && xmlNode.nodeName; - - o = new apf.aml.processingInstructions[target](); - - o.target = o.nodeName = target; - o.data = o.nodeValue = nodeValue || xmlNode && xmlNode.nodeValue; - break; - case 4: - o = new apf.AmlCDATASection(); - o.nodeValue = nodeValue || xmlNode && xmlNode.nodeValue; - break; - case 5: //unsupported - o = new apf.AmlNode(); - o.nodeType = nodeType; - break; - case 6: //unsupported - o = new apf.AmlNode(); - o.nodeType = nodeType; - break; - case 8: - o = new apf.AmlComment(); - o.nodeValue = nodeValue || xmlNode && xmlNode.nodeValue; - break; - case 9: - o = new apf.AmlDocument(); - o.$domParser = this; - break; - case 10: //unsupported - o = new apf.AmlNode(); - o.nodeType = nodeType; - break; - case 11: - o = new apf.AmlDocumentFragment(); - break; - } - - o.ownerDocument = doc; - o.$aml = xmlNode; - - return o; - }; -})(); - /** * * @author Ruben Daniels (ruben AT ajax DOT org) @@ -6402,7 +5990,7 @@ apf.AmlNode = function(){ } var doc = this.nodeType == this.NODE_DOCUMENT ? this : this.ownerDocument; - if (!doc || doc.$domParser.$isPaused(this)) + if (!doc) return amlNode; // Don't update the tree if this is a doc fragment or if this element is not inited yet @@ -6410,14 +5998,33 @@ apf.AmlNode = function(){ return amlNode; //@todo review this... - if (initialAppend && !amlNode.render) { // && (nNodes = node.childNodes).length ?? - (this.ownerDocument || this).$domParser.$continueParsing(amlNode, {delay: true}); + if (initialAppend && !amlNode.render) { + this.$onInsertedIntoDocument(); } triggerUpdate(); return amlNode; }; + this.$onInsertedIntoDocument = function() { + var amlNode = this + if (!options.ignoreSelf && !amlNode.$amlLoaded) + amlNode.dispatchEvent("DOMNodeInsertedIntoDocument"); + + //Recursively signal non prio nodes + (function _recur(nodes) { + for (var i = 0, l = nodes.length; i < l; i++) { + var node = nodes[i]; + if (!node.$amlLoaded) + node.dispatchEvent("DOMNodeInsertedIntoDocument"); + //Create children + var nNodes = node.childNodes; + if (!node.render && nNodes && nNodes.length) + _recur(nNodes); + } + })(amlNode.childNodes); + } + /** * Removes this element from the document hierarchy. Call-chaining is * supported. @@ -6434,7 +6041,7 @@ apf.AmlNode = function(){ this.parentNode.childNodes.remove(this); //If we're not loaded yet, just remove us from the aml to be parsed - if (this.$amlLoaded && !apf.isDestroying) { + if (this.$amlLoaded) { //this.parentNode.$aml.removeChild(this.$aml); this.dispatchEvent("DOMNodeRemoved", { @@ -6928,6 +6535,40 @@ apf.AmlElement = function(struct, tagName) { }; + + function create(node, parent) { + if (node.nodeType == node.ELEMENT_NODE) { + var el + if (node.localName == "application") { + el = parent; + } else { + var ElementType = apf.aml.elements[node.localName] || apf.aml.elements["@default"]; + var el = new ElementType({}, node.localName); + var a = node.attributes; + for (var i =0; i < a.length; i++) { + el.setAttribute(a[i].name, a[i].value); + } + el.$aml = node; + } + + var list = node.childNodes; + for (var i = 0; i < list.length; i++) { + create(list[i], el); + } + if (el != parent) + parent.appendChild(el); + } else if (node.nodeType == node.TEXT_NODE) { + var text = node.data.trim(); + if (text) { + var o = new apf.AmlText(); + o.nodeValue = text; + parent.appendChild(o); + } + } else if (node.nodeType == node.DOCUMENT_NODE) { + create(node.documentElement, parent) + } + } + /** * Inserts new AML into this element. * @param {Mixed} amlDefNode The AML to be loaded. This can be a string or a parsed piece of XML. @@ -6936,24 +6577,8 @@ apf.AmlElement = function(struct, tagName) { * - clear ([[Boolean]]): If set, the AML has the attribute "clear" attached to it */ this.insertMarkup = function(amlDefNode, options) { - var _self = this; - var include = new apf.XiInclude(); - - if (amlDefNode.trim().charAt(0) == "<") - amlDefNode = apf.getXml(amlDefNode); - - include.setAttribute("href", amlDefNode); - if (options && options.clear) - include.setAttribute("clear", true); - include.options = options; - include.callback = function(){ - _self.dispatchEvent("afteramlinserted", {src: amlDefNode}); - options && options.callback && options.callback(); - setTimeout(function(){ - include.destroy(true, true); - }); - }; - this.appendChild(include); + var xmlNode = apf.getXml(amlDefNode); + create(xmlNode, this); }; this.$setInheritedAttribute = function(prop) { @@ -7447,8 +7072,8 @@ apf.AmlDocument = function(){ * @return {apf.AmlElement} The created AML element */ this.createElement = function(qualifiedName) { - return this.$domParser.$createNode(this, this.NODE_ELEMENT, null, - this.namespaceURI, qualifiedName); + var ElementType = apf.aml.elements[qualifiedName] || apf.aml.elements["@default"]; + return new ElementType({}, qualifiedName); }; /** @@ -7462,8 +7087,8 @@ apf.AmlDocument = function(){ * @return {apf.AmlElement} The created AML element */ this.createElementNS = function(namespaceURI, qualifiedName) { - return this.$domParser.$createNode(this, this.NODE_ELEMENT, null, - namespaceURI, qualifiedName); + var ElementType = apf.aml.elements[qualifiedName] || apf.aml.elements["@default"]; + return new ElementType({}); }; /** @@ -7479,16 +7104,9 @@ apf.AmlDocument = function(){ * @return {apf.AmlNode} The Text node */ this.createTextNode = function(nodeValue) { - return this.$domParser.$createNode(this, this.NODE_TEXT, null, null, - null, nodeValue); - }; - - /** - * Creates and returns a new document fragment. - */ - - this.createDocumentFragment = function(){ - return this.$domParser.$createNode(this, this.NODE_DOCUMENT_FRAGMENT); + var o = new apf.AmlText(); + o.nodeValue = nodeValue || ""; + return o; }; // @todo @@ -7617,7 +7235,7 @@ apf.AmlTextRectangle.prototype = new apf.Class(); * @version %I%, %G% * @since 0.8 */ -apf.xhtml = new apf.AmlNamespace(); +apf.xhtml = apf.aml; apf.setNamespace("http://www.w3.org/1999/xhtml", apf.xhtml); @@ -7883,141 +7501,6 @@ apf.xhtml.setElement("pre", apf.XhtmlSkipChildrenElement); - - -//XForms - -/** - * Object creating the XML Include namespace for the aml parser. - * - * @constructor - * @parser - * - * @allownode simpleType, complexType - * - * @author Ruben Daniels (ruben AT ajax DOT org) - * @version %I%, %G% - * @since 0.8 - */ -apf.xinclude = new apf.AmlNamespace(); -apf.setNamespace("http://www.w3.org/2001/XInclude", apf.xinclude); - - - - - - - - -/** - * Defines a list of acceptable values - */ -apf.XiInclude = function(struct, tagName) { - this.$init(tagName || "include", apf.NODE_HIDDEN, struct); -}; - -apf.xinclude.setElement("include", apf.XiInclude); -apf.aml.setElement("include", apf.XiInclude); - -//@todo test defer="true" situation -(function(){ - this.$parsePrio = "002"; - - this.$propHandlers["href"] = - this.$propHandlers["src"] = function(value) { - if (typeof value != "string") - return finish.call(this, value); - - throw new Error("not implemented") - }; - - function done(xmlNode) { - var addedNode = this.previousSibling || this.nextSibling; - - if (this.callback) { - this.callback({ - xmlNode: xmlNode, - amlNode: this.parentNode, - addedNode: addedNode - }) - } - - addedNode.dispatchEvent("DOMNodeInserted", { - $beforeNode: addedNode.nextSibling, - relatedNode: this.parentNode, - $isMoveWithinParent: false, - bubbles: true - }); - - //@todo hack!! this should never happen. Find out why it happens - if (this.parentNode) - this.parentNode.removeChild(this); - } - - function finish(xmlNode) { - var domParser = this.ownerDocument.$domParser; - - if (this.clear) - this.parentNode.$int.innerHTML = ""; - - if (xmlNode) { - domParser.parseFromXml(xmlNode, { - doc: this.ownerDocument, - amlNode: this.parentNode, - beforeNode: this, - include: true - }); - - if (!this.defer && this.$parseContext) { - var o = (this.$parseContext[1] || (this.$parseContext[1] = {})), - cb = o.callback, - _self = this; - - o.callback = function(){ - done.call(_self, xmlNode); - if (cb) - cb.call(_self.ownerDocument); - }; - - //@todo this is wrong... probably based on load order of last include element. Please rearchitect parse continuation. - if (domParser.$continueParsing(this.$parseContext[0]) === false) { - var o2 = (domParser.$parseContext[1] || (domParser.$parseContext[1] = {})), - cb2 = o.callback; - o2.callback = function(){ - if (cb) - cb.call(_self.ownerDocument); - domParser.$continueParsing(_self.$parseContext[0]); - }; - } - } - else - done.call(this, xmlNode); - } - else { - if (!this.defer) - domParser.$continueParsing(this.$parseContext[0]); - - done.call(this, xmlNode); - } - } -}).call(apf.XiInclude.prototype = new apf.AmlElement()); - - - - - - - - -apf.__LIVEEDIT__ = 1 << 23; - - - - - - - - apf.__ANCHORING__ = 1 << 13; @@ -8113,7 +7596,7 @@ apf.Anchoring = function(){ if (!this.$anchoringEnabled && !this.$setLayout("anchoring")) return; - if (!this.$updateQueue && apf.loaded) + if (!this.$updateQueue) l.queue(this.$pHtmlNode, this); this.$updateQueue = this.$updateQueue | HORIZONTAL | VERTICAL; }; @@ -10893,14 +10376,7 @@ apf.DelayedRender = function(){ // redrawing browsers like firefox this.$ext.style.visibility = "hidden"; - var domParser = this.ownerDocument.$domParser; - domParser.parseFromXml(this.$aml, { - amlNode: this, - doc: this.ownerDocument, - //nodelay : true, - delayedRender: true - }); - domParser.$continueParsing(this); + this.childNodes.forEach(function(i) { i.$onInsertedIntoDocument(); }) this.$rendered = true; @@ -10912,11 +10388,6 @@ apf.DelayedRender = function(){ this.$ext.style.visibility = ""; }; - /*var _self = this; - if (apf.window.vManager.check(this, "delayedrender", function(){ - _self.$render(); - })) this.$render();*/ - var f; this.addEventListener("prop.visible", f = function(){ if (arguments[0].value) { @@ -11884,7 +11355,6 @@ apf.window = function(){ jdwin.Hide(); } else { - this.loaded = false; if (this.win) this.win.close(); } @@ -12530,7 +12000,7 @@ apf.window = function(){ //(!amlNode.canHaveChildren || !apf.isChildOf(amlNode.$int, e.srcElement)) if (!apf.config.allowSelect && (amlNode && amlNode.nodeType != amlNode.NODE_PROCESSING_INSTRUCTION - && !amlNode.textselect)) //&& !amlNode.$int // getElementsByTagNameNS(apf.ns.xhtml, "*").length + && !amlNode.textselect)) canSelect = false; } @@ -12767,56 +12237,10 @@ apf.window = function(){ apf.document = {}; this.init = function(strAml) { - //Put this in callback in between the two phases - - - this.$domParser = new apf.DOMParser(); - this.document = apf.document = this.$domParser.parseFromString(strAml, - "text/xml", { - - timeout: apf.config.initdelay, - - callback: function(doc) { - //@todo apf3.0 - - //Call the onload event (prevent recursion) - if (apf.parsed != 2) { - //@todo apf3.0 onload is being called too often - var inital = apf.parsed; - apf.parsed = 2; - apf.dispatchEvent("parse", { //@todo apf3.0 document - initial: inital - }); - apf.parsed = true; - } - - if (!apf.loaded) { - - - - //Set the default selected element - if (!apf.window.activeElement && (!apf.config.allowBlur - || apf.document.documentElement - && apf.document.documentElement.editable)) - apf.window.focusDefault(); - - - apf.loaded = true; - $setTimeout(function() { - apf.dispatchEvent("load"); - apf.addEventListener("$event.load", function(cb) { - cb(); - }); - }); - } - - //END OF ENTIRE APPLICATION STARTUP - - - - - } - }); //async + apf.document = this.document = new apf.AmlDocument(); + this.document.documentElement = new apf.application(); + this.document.documentElement.ownerDocument = this.document; + this.document.appendChild(this.document.documentElement); }; diff --git a/plugins/c9.ide.ui/ui.js b/plugins/c9.ide.ui/ui.js index 18592ff2..e7e55766 100644 --- a/plugins/c9.ide.ui/ui.js +++ b/plugins/c9.ide.ui/ui.js @@ -48,7 +48,7 @@ define(function(require, module, exports) { apf.preProcessCSS = insertLess; // Load a basic document into APF - apf.initialize(''); + apf.initialize(); window.addEventListener("mousedown", function() { apf.isMousePressed = true;