diff options
Diffstat (limited to 'buildscripts/jGrouseDoc/skins/noframes/js')
-rw-r--r-- | buildscripts/jGrouseDoc/skins/noframes/js/jgdoc.js | 326 | ||||
-rw-r--r-- | buildscripts/jGrouseDoc/skins/noframes/js/navTree.js | 409 |
2 files changed, 735 insertions, 0 deletions
diff --git a/buildscripts/jGrouseDoc/skins/noframes/js/jgdoc.js b/buildscripts/jGrouseDoc/skins/noframes/js/jgdoc.js new file mode 100644 index 00000000..9d1f1364 --- /dev/null +++ b/buildscripts/jGrouseDoc/skins/noframes/js/jgdoc.js @@ -0,0 +1,326 @@ +/**
+ * Searcher for JGrouseDoc
+ * $Id: jgdoc.js 324 2008-01-06 16:44:39Z denis.riabtchik $
+ */
+
+if (typeof jgdoc == 'undefined')
+{
+ jgdoc = {}
+
+ jgdoc._dataHandlers = [];
+
+ jgdoc.setData = function(data)
+ {
+ for (var i = 0; i < jgdoc._dataHandlers.length; i++)
+ {
+ jgdoc._dataHandlers[i](data);
+ }
+ }
+}
+
+jgdoc.Searcher =
+{
+ initialize : function()
+ {
+ this._searchBox = document.getElementById("jgsSearchString");
+ this._searchResults = document.getElementById("jgsSearchResults");
+ this._info = document.getElementById("jgsInfo");
+ this._currentValue = "";
+ this._currentItems = [];
+ this._currentItem = -1;
+ this._data = null;
+ this._searchPanel = document.getElementById("jgsSearchPanel");
+ this.addListener(this._searchBox, 'focus', this.dispatcher);
+ this.addListener(this._searchBox, 'blur', this.dispatcher);
+ this.addListener(window, 'resize', this.dispatcher);
+ var width = this._searchBox.offsetWidth - 4;
+ this._searchPanel.style.width = width + 'px';
+
+ /*var node = this._searchBox;
+ var current = 0;
+ var currentTop = 0;
+ while (node)
+ {
+ current += node.offsetLeft;
+ currentTop += node.offsetTop;
+ node = node.offsetParent;
+ }
+
+ this._searchPanel.style.left = current + 'px';*/
+ this.positionBox();
+ return this;
+ },
+
+ positionBox : function()
+ {
+ var node = this._searchBox;
+ var current = 0;
+ var currentTop = 0;
+ while (node)
+ {
+ current += node.offsetLeft;
+ currentTop += node.offsetTop;
+ node = node.offsetParent;
+ }
+
+ this._searchPanel.style.left = current + 'px';
+ this._searchPanel.style.top = (currentTop + this._searchBox.offsetHeight) + "px";
+
+ },
+
+ _getEvent : function(event)
+ {
+ return window.event? window.event : event;
+ },
+
+ _getTarget : function(event)
+ {
+ return event.target || event.srcElement
+ },
+
+ addClass : function(element, className)
+ {
+ var s = element.className;
+ var a = s.split(' ');
+ for (var i = 0; i < a.length; i++)
+ {
+ if (a[i] == className)
+ {
+ return;
+ }
+ }
+ a.push(className);
+ element.className = a.join(' ');
+ },
+
+ removeClass : function(element, className)
+ {
+ var s = element.className;
+ var a = s.split(' ');
+ for (var i = 0; i < a.length; i++)
+ {
+ if (a[i] == className)
+ {
+ a.splice(i, 1);
+ break;
+ }
+ }
+ element.className = a.join(' ');
+
+ },
+
+ dispatcher : function(event)
+ {
+ if (this != jgdoc.Searcher)
+ {
+ arguments.callee.apply(jgdoc.Searcher, arguments)
+ return;
+ }
+ event = this._getEvent(event);
+ var type = event.type;
+ var handler = "on" + type;
+ this[handler](event, this._getTarget(event));
+ },
+
+ onclick : function(event, target)
+ {
+ // workaround for IE bug
+ window.location.href = target.getAttribute("href", 1);
+ },
+
+ onmouseover : function(event, target)
+ {
+ this.selectItem(target.index);
+ },
+
+ onresize : function(event, target)
+ {
+ if (this._searchPanel.style.display != 'none')
+ {
+ this.positionBox();
+ }
+ },
+
+ onmouseout : function(event, target)
+ {
+ this.unselectItem(target.index);
+ },
+
+ onfocus : function(event, target)
+ {
+ this._searchPanel.style.display = '';
+ this.positionBox();
+ },
+
+ onblur : function(event, target)
+ {
+ var athis = this;
+ window.setTimeout(function()
+ {
+ athis._searchPanel.style.display = 'none';
+ }, 300);
+
+ },
+
+ selectItem : function(index)
+ {
+ if (index != this._currentItem)
+ {
+ this._currentItem = index;
+ var item = this._currentItems[index];
+ this.addClass(item, 'jgdSelectedItem');
+ var text = item._data.summary.split('\n').join('<br/>');
+ this._info.innerHTML = text;
+ }
+ },
+
+ unselectItem : function(index)
+ {
+ this._currentItem = -1;
+ var item = this._currentItems[index];
+ this.removeClass(item, 'jgdSelectedItem');
+ this._info.innerHTML = 'No selection';
+ },
+
+ openItem : function(name)
+ {
+
+ },
+
+
+ onTimer : function()
+ {
+ if (this != jgdoc.Searcher)
+ {
+ arguments.callee.apply(jgdoc.Searcher, arguments)
+ return;
+ }
+ var val = this._searchBox.value;
+ if (val != this._currentValue)
+ {
+ this._currentValue = val;
+ this.redraw();
+ }
+ },
+
+ setData : function(data)
+ {
+ this._data = data;
+ this.redraw();
+ //this._searchBox.focus();
+ },
+
+ addListener : function(element, eventName, handler)
+ {
+ if (element.addEventListener)
+ {
+ element.addEventListener(eventName, handler, false);
+ }
+ else
+ {
+ element.attachEvent('on' + eventName, handler);
+ }
+ },
+
+ removeListener : function(element, eventName, handler)
+ {
+ if (element.removeEventListener)
+ {
+ element.removeEventListener(eventName, handler, false);
+ }
+ else
+ {
+ element.detachEvent('on' + eventName, handler);
+ }
+ },
+
+ findMatches : function()
+ {
+ var result = [];
+ if (this._currentValue)
+ {
+ var v = this._currentValue.toUpperCase();
+ for (var i = 0; i < this._data.length; i++)
+ {
+ var item = this._data[i];
+ if (item.localName.toUpperCase().indexOf(v) == 0)
+ {
+ result.push(item);
+ }
+ }
+ }
+ return result;
+ },
+
+
+ clearItem : function(item)
+ {
+ item._data = null;
+ this.removeListener(item, 'click', this.dispatcher);
+ this.removeListener(item, 'mouseover', this.dispatcher);
+ this.removeListener(item, 'mouseout', this.dispatcher);
+ },
+
+ clear : function()
+ {
+ for (var i = 0; i < this._currentItems.length; i++)
+ {
+ this.clearItem(this._currentItems[i]);
+ }
+ this._currentItems = [];
+ this._searchResults.innerHTML = "";
+ this._currentItem = -1;
+ },
+
+
+ createItem : function(item, index)
+ {
+ var d1 = document.createElement("div");
+ d1.innerHTML = "<a href='" + item.ref + "'>" + item.fullName + "</a>";
+ d = d1.firstChild;
+ /*d.href = item.ref;
+ item.ref = d.href;*/
+ d.className = "searchItem";
+ //d.title = item.summary;
+ //d.innerHTML = item.fullName;
+ d.index = index;
+ d._data = item;
+ this.addListener(d, 'click', this.dispatcher);
+ this.addListener(d, 'mouseover', this.dispatcher);
+ this.addListener(d, 'mouseout', this.dispatcher);
+ //todo - set listeners
+ return d;
+ },
+
+ redraw : function()
+ {
+ this.clear();
+ var res = this.findMatches();
+ if (res.length > 0)
+ {
+ for (var i = 0; i < res.length; i++)
+ {
+ var d = this.createItem(res[i], i);
+ this._currentItems.push(d);
+ this._searchResults.appendChild(d);
+ }
+ }
+ else
+ {
+ var s = (this._currentValue)? "Not found" : "Start typing the name of the item";
+ this._searchResults.innerHTML = s;
+ }
+ },
+
+ start : function()
+ {
+ var instance = jgdoc.Searcher.initialize();
+ instance.setData([]);
+ instance._timer = window.setInterval(instance.onTimer, 100);
+ }
+}
+
+jgdoc._dataHandlers.push(function(data)
+{
+ jgdoc.Searcher.setData(data);
+});
\ No newline at end of file diff --git a/buildscripts/jGrouseDoc/skins/noframes/js/navTree.js b/buildscripts/jGrouseDoc/skins/noframes/js/navTree.js new file mode 100644 index 00000000..ac011da4 --- /dev/null +++ b/buildscripts/jGrouseDoc/skins/noframes/js/navTree.js @@ -0,0 +1,409 @@ +if (typeof jgdoc == 'undefined')
+{
+ jgdoc = {}
+
+ jgdoc._dataHandlers = [];
+
+ jgdoc.setData = function(data)
+ {
+ for (var i = 0; i < jgdoc._dataHandlers.length; i++)
+ {
+ jgdoc._dataHandlers[i](data);
+ }
+ }
+}
+
+jgdoc.TreeItem = function(nodeName, item)
+{
+ this._nodeName = nodeName;
+ this._data = item;
+ this._children = [];
+
+}
+
+jgdoc.Common =
+{
+ addClass : function(element, className)
+ {
+ var s = element.className;
+ var a = s.split(' ');
+ for (var i = 0; i < a.length; i++)
+ {
+ if (a[i] == className)
+ {
+ return;
+ }
+ }
+ a.push(className);
+ element.className = a.join(' ');
+ },
+
+ removeClass : function(element, className)
+ {
+ var s = element.className;
+ var a = s.split(' ');
+ var found = false;
+ for (var i = 0; i < a.length; i++)
+ {
+ if (a[i] == className)
+ {
+ a.splice(i, 1);
+ found = true;
+ break;
+ }
+ }
+ element.className = a.join(' ');
+ return found;
+ },
+
+ addListener : function(element, eventName, handler)
+ {
+ if (element.addEventListener)
+ {
+ element.addEventListener(eventName, handler, false);
+ }
+ else
+ {
+ element.attachEvent('on' + eventName, handler);
+ }
+ },
+
+ removeListener : function(element, eventName, handler)
+ {
+ if (element.removeEventListener)
+ {
+ element.removeEventListener(eventName, handler, false);
+ }
+ else
+ {
+ element.detachEvent('on' + eventName, handler);
+ }
+ }
+}
+
+jgdoc.NavPanel =
+{
+ clicked : function(e)
+ {
+ e = window.event? window.event : e;
+ var target = e.target || e.srcElement;
+ var node = target;
+ while (node != null && node.tagName != 'UL')
+ {
+ node = node.parentNode;
+ }
+ if (node)
+ {
+ var parent = node.parentNode;
+ var current = parent.firstChild;
+ while (current)
+ {
+ if (current != node && current.nodeType === 1)
+ {
+ jgdoc.Common.addClass(current, "closed");
+ }
+ current = current.nextSibling;
+ }
+ jgdoc.Common.removeClass(node, "closed");
+ }
+ },
+
+ dummy : function()
+ {
+ }
+}
+
+/*
+jgdoc.App =
+{
+ initialize : function()
+ {
+ this._container = document.getElementById("startup");
+ this._banner = document.getElementById("banner");
+ this._content = document.getElementById("docContent");
+ this._navigation = document.getElementById("navigation");
+ this._docScroll = document.getElementById("docScroll");
+ this._html = document.getElementsByTagName('html')[0];
+ this._body = document.getElementsByTagName("body")[0];
+ this._searchBlock = document.getElementById("searchBlock");
+ this._html.style.overflowY = "hidden";
+
+ }
+}*/
+
+jgdoc.NavTree =
+{
+ initialize : function(defaultName)
+ {
+ this._defaultName = defaultName;
+ },
+
+
+ setData : function(data) {
+ this._data = data;
+ this.processItems();
+ this.render();
+ this.openItem(this._defaultName);
+ },
+
+ sorter: function(o1, o2) {
+ var l1 = o1.localName;
+ var l2 = o2.localName;
+ return l1 < l2? -1 : (l1 > l2 ? 1 : 0);
+ },
+
+ processItems : function() {
+ var root;
+
+ // Pass 1: Build index by fullName, and locate the root element
+ this._byName = {};
+ for (var i = 0; i < this._data.length; i++) {
+ var d = this._data[i];
+ if (d.fullName == "GLOBAL") {
+ root = this._root = d;
+ }
+ this._byName[d.fullName] = d;
+ }
+
+ // Pass 2: Populate _children arrays
+ for (var i = 0; i < this._data.length; i++) {
+ var item = this._data[i];
+ if (item.elementType == "logical_container" && item != this._root) {
+ var parent = this._byName[item.parent];
+ parent._children = parent._children || [];
+ parent._children.push(item);
+ }
+ }
+ },
+
+ findItem : function(name)
+ {
+ return this._byName[name];
+ },
+
+ /*setData : function(data)
+ {
+ this._data = data;
+ data.sort(this.sorter);
+ this._root = data[0];
+ this.processItems();
+ this.render();
+ this.openItem(this._defaultName);
+ },
+
+ findItem : function(name)
+ {
+ if (name === '' || name == 'GLOBAL')
+ {
+ return this._root;
+ }
+ var s = name.split('.');
+ var current = this._root._children;
+ var found = null;
+ for (var i = 0; i < s.length; i++)
+ {
+ var detected = false;
+ for (var j = 0; j < current.length; j++)
+ {
+ var item = current[j];
+ if (item.localName == s[i])
+ {
+ detected = true;
+ current = item._children;
+ found = item;
+ break;
+ }
+ }
+ if (!detected)
+ {
+ return false;
+ }
+ }
+ return found;
+ },
+
+ processItems : function()
+ {
+ for (var i = 1; i < this._data.length; i++)
+ {
+ var item = this._data[i];
+ if (item.elementType == "logical_container")
+ {
+ var parent = this.findItem(item.parent);
+ if (!parent._children)
+ {
+ parent._children = [];
+ }
+ parent._children.push(item);
+ }
+ }
+ },
+
+
+ sorter : function(item1, item2)
+ {
+ if (item1.parent == "")
+ {
+ return -1;
+ }
+ if (item2.parent == "")
+ {
+ return 1;
+ }
+ if (item1.parent == item2.parent)
+ {
+ return item1.localName < item2.localName? -1 : item1.localName > item2.localName? 1 : 0;
+ }
+ if (item1.parent == "GLOBAL")
+ {
+ return -1;
+ }
+ if (item2.parent == "GLOBAL")
+ {
+ return 1;
+ }
+ return item1.parent < item2.parent? -1 : 1;
+ },
+ */
+
+
+ clicked : function(event)
+ {
+ event = window.event? window.event : event;
+ var target = event.target || event.srcElement;
+ var span = target.parentNode;
+ var li = span.parentNode;
+ var wasOpen = jgdoc.Common.removeClass(li, 'open');
+ if (wasOpen)
+ {
+ jgdoc.Common.addClass(li, 'closed');
+ }
+ else
+ {
+ jgdoc.Common.removeClass(li, 'closed');
+ jgdoc.Common.addClass(li, 'open');
+ }
+ span.title = "Click to " + (wasOpen? "expand" : "collapse");
+
+ },
+
+
+
+
+ render : function()
+ {
+ var d = document.getElementById('content');
+ d.innerHTML = '';
+ var athis = this;
+ function renderNode(item)
+ {
+ var node = document.createElement('li');
+ node.className = item.type;
+ node.innerHTML = "<span class='node'><span class='markerSpace'> </span></span><a href='" + item.ref + "' title='" + item.summary + "'>" + item.localName + "</a>";
+ var span = node.firstChild;
+ var img = span.firstChild;
+ jgdoc.Common.addListener(img, 'mousedown', athis.clicked);
+ if (item._children)
+ {
+ node.className += (item == athis._root)? ' open' : ' closed';
+ span.title = "Click to " + (item != athis._root? 'expand' : 'collapse');
+ var subnode = document.createElement("ul");
+ subnode.className = 'contents';
+ for (var i = 0; i < item._children.length; i++)
+ {
+ var child = renderNode(item._children[i]);
+ subnode.appendChild(child);
+ }
+ node.appendChild(subnode);
+ }
+ else
+ {
+ node.className += ' leaf';
+ }
+ if (item.fullName == athis._defaultName)
+ {
+ node.firstChild.nextSibling.className += ' currentNode';
+ }
+ item._node = node;
+ return node;
+ }
+ var root = renderNode(this._root);
+ d.appendChild(root);
+ },
+
+ cancelEvent : function(event)
+ {
+ if (event.preventDefault)
+ {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ else
+ {
+ event.preventDefault();
+ event.stopPropagation();
+ }
+ },
+
+ switchAll : function(doOpen)
+ {
+ var ac = doOpen? 'open' : 'closed';
+ var rc = doOpen? 'closed' : 'open';
+
+ var athis = this;
+
+ function doSwitchNode(anode)
+ {
+ if (anode._children)
+ {
+ if (doOpen || anode != athis._root)
+ {
+ jgdoc.Common.removeClass(anode._node, rc);
+ jgdoc.Common.addClass(anode._node, ac);
+ }
+ for (var i = 0; i < anode._children.length; i++)
+ {
+ doSwitchNode(anode._children[i]);
+ }
+ }
+ }
+ doSwitchNode(this._root);
+ },
+
+ openItem : function(name)
+ {
+ this.switchAll(false);
+ while (name != 'GLOBAL')
+ {
+ var item = this.findItem(name);
+ if (item)
+ {
+ var node = item._node;
+ jgdoc.Common.removeClass(node, 'closed');
+ jgdoc.Common.addClass(node, 'open');
+ name = item.parent;
+ }
+ else
+ {
+ return;
+ }
+ }
+ },
+
+ onOpenAll : function()
+ {
+ jgdoc.NavTree.switchAll(true);
+ },
+
+ onCloseAll : function()
+ {
+ jgdoc.NavTree.switchAll(false);
+ }
+
+};
+
+jgdoc._dataHandlers.push(function(data)
+{
+ //jgdoc.App.initialize();
+ jgdoc.NavTree.setData(data);
+});
|