context: qx.Proto._updateInfoPanel = function(nodeType) {  var DetailViewer = qx.apiviewer.DetailViewer;  var typeInfo = this._infoPanelHash[nodeType];  // Get the nodes to show  var nodeArr = null;  var fromClassHash = null;  if (typeInfo.isOpen && this._currentClassDocNode) {    if (typeInfo.showInherited) {      nodeArr = [];      fromClassArr = [];      fromClassHash = {};      var currClassNode = this._currentClassDocNode;      while (currClassNode != null) {        var currParentNode = qx.apiviewer.TreeUtil.getChild(currClassNode, typeInfo.listName);        var currNodeArr = currParentNode ? currParentNode.children : null;        if (currNodeArr) {          // Add the nodes from this class          for (var i = 0; i < currNodeArr.length; i++) {            var name = currNodeArr[i].attributes.name;            if (fromClassHash[name] == null) {              fromClassHash[name] = currClassNode;              nodeArr.push(currNodeArr[i]);            }          }        }        var superClassName = currClassNode.attributes.superClass;        currClassNode = superClassName ? this._getClassDocNode(superClassName) : null;      }      // Sort the nodeArr by name      nodeArr.sort(function(obj1, obj2) {        return (obj1.attributes.name < obj2.attributes.name) ? -1 : 1;      });    } else {      var parentNode = qx.apiviewer.TreeUtil.getChild(this._currentClassDocNode, typeInfo.listName);      nodeArr = parentNode ? parentNode.children : null;    }  }  // Show the nodes  if (nodeArr && nodeArr.length != 0)  {    var html = '<table cellspacing="0" cellpadding="0" class="info" width="100%">';    for (var i = 0; i < nodeArr.length; i++)    {      var node = nodeArr[i];      var fromClassNode = fromClassHash ? fromClassHash[node.attributes.name] : null;      if (fromClassNode == null) {        fromClassNode = this._currentClassDocNode;      }      var info = typeInfo.infoFactory.call(this, node, nodeType, fromClassNode, false);      // Create the title row      var inherited = fromClassNode && (fromClassNode != this._currentClassDocNode);      var iconUrl = qx.apiviewer.TreeUtil.getIconUrl(node, inherited);      html += '<tr class="item-row">';      html += '<td class="icon">' + DetailViewer.createImageHtml(iconUrl) + '</td>';      html += '<td class="type">' + ((info.typeHtml.length != 0) ? (info.typeHtml + "&nbsp;") : "") + '</td>';      html += '<td class="text">';        // Create headline        html += '<h3>';          if (typeInfo.hasDetailDecider.call(this, node, nodeType, fromClassNode))          {            // This node has details -> Show the detail button            html += '<img class="openclose" src="images/open.gif"'              + " onclick=\"document._detailViewer._onShowItemDetailClicked(" + nodeType + ",'"              + node.attributes.name + "'"              + ((fromClassNode != this._currentClassDocNode) ? ",'" + fromClassNode.attributes.fullName + "'" : "")              + ")\"/>";          }          html += info.titleHtml;        html += '</h3>';        // Create the text row        html += '<div _itemName="' + nodeArr[i].attributes.name + '" class="item-row">'          html += info.textHtml;        html += '</div>';      html += '</td></tr>';    }    html += '</table>';    typeInfo.infoBodyElem.innerHTML = html;    typeInfo.infoBodyElem.style.display = "";  }  else  {    if (typeInfo.isOpen) {      typeInfo.infoBodyElem.innerHTML = '<div class="empty-info-body">'        + 'This class has no ' + typeInfo.labelText + '</div>';      typeInfo.infoBodyElem.style.display = "";    } else {      typeInfo.infoBodyElem.style.display = "none";    }  }};
meta: 1005	/local1/tlutelli/issta_data/temp/all_js/javascript/2006_temp/2006/1005/358661ef2c8d0cb7f1d3855b7c4d924a37413045/DetailViewer.js/clean/qooxdoo/source/demo/apiviewer/script/qx/apiviewer/DetailViewer.js