Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono-tools.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'webdoc/plugins/sidebar-plugin/dependencies/xtree/xloadtree.js')
-rw-r--r--webdoc/plugins/sidebar-plugin/dependencies/xtree/xloadtree.js276
1 files changed, 276 insertions, 0 deletions
diff --git a/webdoc/plugins/sidebar-plugin/dependencies/xtree/xloadtree.js b/webdoc/plugins/sidebar-plugin/dependencies/xtree/xloadtree.js
new file mode 100644
index 00000000..24ad21b9
--- /dev/null
+++ b/webdoc/plugins/sidebar-plugin/dependencies/xtree/xloadtree.js
@@ -0,0 +1,276 @@
+/*----------------------------------------------------------------------------\
+| XLoadTree 1.11 |
+|-----------------------------------------------------------------------------|
+| Created by Erik Arvidsson |
+| (http://webfx.eae.net/contact.html#erik) |
+| For WebFX (http://webfx.eae.net/) |
+|-----------------------------------------------------------------------------|
+| An extension to xTree that allows sub trees to be loaded at runtime by |
+| reading XML files from the server. Works with IE5+ and Mozilla 1.0+ |
+|-----------------------------------------------------------------------------|
+| Copyright (c) 1999 - 2002 Erik Arvidsson |
+|-----------------------------------------------------------------------------|
+| This software is provided "as is", without warranty of any kind, express or |
+| implied, including but not limited to the warranties of merchantability, |
+| fitness for a particular purpose and noninfringement. In no event shall the |
+| authors or copyright holders be liable for any claim, damages or other |
+| liability, whether in an action of contract, tort or otherwise, arising |
+| from, out of or in connection with the software or the use or other |
+| dealings in the software. |
+| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
+| This software is available under the three different licenses mentioned |
+| below. To use this software you must chose, and qualify, for one of those. |
+| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
+| The WebFX Non-Commercial License http://webfx.eae.net/license.html |
+| Permits anyone the right to use the software in a non-commercial context |
+| free of charge. |
+| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
+| The WebFX Commercial license http://webfx.eae.net/commercial.html |
+| Permits the license holder the right to use the software in a commercial |
+| context. Such license must be specifically obtained, however it's valid for |
+| any number of implementations of the licensed software. |
+| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |
+| GPL - The GNU General Public License http://www.gnu.org/licenses/gpl.txt |
+| Permits anyone the right to use and modify the software without limitations |
+| as long as proper credits are given and the original and modified source |
+| code are included. Requires that the final product, software derivate from |
+| the original source or any software utilizing a GPL component, such as |
+| this, is also licensed under the GPL license. |
+|-----------------------------------------------------------------------------|
+| 2001-09-27 | Original Version Posted. |
+| 2002-01-19 | Added some simple error handling and string templates for |
+| | reporting the errors. |
+| 2002-01-28 | Fixed loading issues in IE50 and IE55 that made the tree load |
+| | twice. |
+| 2002-10-10 | (1.1) Added reload method that reloads the XML file from the |
+| | server. |
+/ 2003-05-06 | Added support for target attribute |
+|-----------------------------------------------------------------------------|
+| Dependencies: xtree.js - original xtree library |
+| xtree.css - simple css styling of xtree |
+| xmlextras.js - provides xml http objects and xml document |
+| objects |
+|-----------------------------------------------------------------------------|
+| Created 2001-09-27 | All changes are in the log above. | Updated 2003-05-06 |
+\----------------------------------------------------------------------------*/
+
+
+webFXTreeConfig.loadingText = "Loading...";
+webFXTreeConfig.loadErrorTextTemplate = "Error loading \"%1%\"";
+webFXTreeConfig.emptyErrorTextTemplate = "Error \"%1%\" does not contain any tree items";
+
+/*
+ * WebFXLoadTree class
+ */
+
+function WebFXLoadTree(sText, sXmlSrc, sAction, sBehavior, sIcon, sOpenIcon) {
+ // call super
+ this.WebFXTree = WebFXTree;
+ this.WebFXTree(sText, sAction, sBehavior, sIcon, sOpenIcon);
+
+ // setup default property values
+ this.src = sXmlSrc;
+ this.loading = false;
+ this.loaded = false;
+ this.errorText = "";
+
+ // check start state and load if open
+ if (this.open)
+ _startLoadXmlTree(this.src, this);
+ else {
+ // and create loading item if not
+ this._loadingItem = new WebFXTreeItem(webFXTreeConfig.loadingText);
+ this.add(this._loadingItem);
+ }
+}
+
+WebFXLoadTree.prototype = new WebFXTree;
+
+// override the expand method to load the xml file
+WebFXLoadTree.prototype._webfxtree_expand = WebFXTree.prototype.expand;
+WebFXLoadTree.prototype.expand = function() {
+ if (!this.loaded && !this.loading) {
+ // load
+ _startLoadXmlTree(this.src, this);
+ }
+ this._webfxtree_expand();
+};
+
+/*
+ * WebFXLoadTreeItem class
+ */
+
+function WebFXLoadTreeItem(sText, sXmlSrc, sAction, eParent, sIcon, sOpenIcon) {
+ // call super
+ this.WebFXTreeItem = WebFXTreeItem;
+ this.WebFXTreeItem(sText, sAction, eParent, sIcon, sOpenIcon);
+
+ // setup default property values
+ this.src = sXmlSrc;
+ this.loading = false;
+ this.loaded = false;
+ this.errorText = "";
+
+ // check start state and load if open
+ if (this.open)
+ _startLoadXmlTree(this.src, this);
+ else {
+ // and create loading item if not
+ this._loadingItem = new WebFXTreeItem(webFXTreeConfig.loadingText);
+ this.add(this._loadingItem);
+ }
+}
+
+WebFXLoadTreeItem.prototype = new WebFXTreeItem;
+
+// override the expand method to load the xml file
+WebFXLoadTreeItem.prototype._webfxtreeitem_expand = WebFXTreeItem.prototype.expand;
+WebFXLoadTreeItem.prototype.expand = function() {
+ if (!this.loaded && !this.loading) {
+ // load
+ _startLoadXmlTree(this.src, this);
+ }
+ this._webfxtreeitem_expand();
+};
+
+// reloads the src file if already loaded
+WebFXLoadTree.prototype.reload =
+WebFXLoadTreeItem.prototype.reload = function () {
+ // if loading do nothing
+ if (this.loaded) {
+ var open = this.open;
+ // remove
+ while (this.childNodes.length > 0)
+ this.childNodes[this.childNodes.length - 1].remove();
+
+ this.loaded = false;
+
+ this._loadingItem = new WebFXTreeItem(webFXTreeConfig.loadingText);
+ this.add(this._loadingItem);
+
+ if (open)
+ this.expand();
+ }
+ else if (this.open && !this.loading)
+ _startLoadXmlTree(this.src, this);
+};
+
+/*
+ * Helper functions
+ */
+
+// creates the xmlhttp object and starts the load of the xml document
+function _startLoadXmlTree(sSrc, jsNode) {
+ if (jsNode.loading || jsNode.loaded)
+ return;
+ jsNode.loading = true;
+ var xmlHttp = XmlHttp.create();
+ xmlHttp.open("GET", sSrc, true); // async
+ xmlHttp.onreadystatechange = function () {
+ if (xmlHttp.readyState == 4) {
+ _xmlFileLoaded(xmlHttp.responseXML, jsNode);
+ }
+ };
+ // call in new thread to allow ui to update
+ window.setTimeout(function () {
+ xmlHttp.send(null);
+ }, 10);
+}
+
+
+// Converts an xml tree to a js tree. See article about xml tree format
+function _xmlTreeToJsTree(oNode) {
+ // retreive attributes
+ var text = oNode.getAttribute("text");
+ var action = oNode.getAttribute("action");
+ var parent = null;
+ var icon = oNode.getAttribute("icon");
+ var openIcon = oNode.getAttribute("openIcon");
+ var src = oNode.getAttribute("src");
+ var target = oNode.getAttribute("target");
+ // create jsNode
+ var jsNode;
+ if (src != null && src != "")
+ jsNode = new WebFXLoadTreeItem(text, src, action, parent, icon, openIcon);
+ else
+ jsNode = new WebFXTreeItem(text, action, parent, icon, openIcon);
+
+ if (target != "")
+ jsNode.target = target;
+
+ // go through childNOdes
+ var cs = oNode.childNodes;
+ var l = cs.length;
+ for (var i = 0; i < l; i++) {
+ if (cs[i].tagName == "tree")
+ jsNode.add( _xmlTreeToJsTree(cs[i]), true );
+ }
+
+ return jsNode;
+}
+
+// Inserts an xml document as a subtree to the provided node
+function _xmlFileLoaded(oXmlDoc, jsParentNode) {
+ if (jsParentNode.loaded)
+ return;
+
+ var bIndent = false;
+ var bAnyChildren = false;
+ jsParentNode.loaded = true;
+ jsParentNode.loading = false;
+
+ // check that the load of the xml file went well
+ if( oXmlDoc == null || oXmlDoc.documentElement == null) {
+ alert(oXmlDoc.xml);
+ jsParentNode.errorText = parseTemplateString(webFXTreeConfig.loadErrorTextTemplate,
+ jsParentNode.src);
+ }
+ else {
+ // there is one extra level of tree elements
+ var root = oXmlDoc.documentElement;
+
+ // loop through all tree children
+ var cs = root.childNodes;
+ var l = cs.length;
+ for (var i = 0; i < l; i++) {
+ if (cs[i].tagName == "tree") {
+ bAnyChildren = true;
+ bIndent = true;
+ jsParentNode.add( _xmlTreeToJsTree(cs[i]), true);
+ }
+ }
+
+ // if no children we got an error
+ if (!bAnyChildren)
+ jsParentNode.errorText = parseTemplateString(webFXTreeConfig.emptyErrorTextTemplate,
+ jsParentNode.src);
+ }
+
+ // remove dummy
+ if (jsParentNode._loadingItem != null) {
+ jsParentNode._loadingItem.remove();
+ bIndent = true;
+ }
+
+ if (bIndent) {
+ // indent now that all items are added
+ jsParentNode.indent();
+ }
+
+ // show error in status bar
+ if (jsParentNode.errorText != "")
+ window.status = jsParentNode.errorText;
+}
+
+// parses a string and replaces %n% with argument nr n
+function parseTemplateString(sTemplate) {
+ var args = arguments;
+ var s = sTemplate;
+
+ s = s.replace(/\%\%/g, "%");
+
+ for (var i = 1; i < args.length; i++)
+ s = s.replace( new RegExp("\%" + i + "\%", "g"), args[i] )
+
+ return s;
+} \ No newline at end of file