зеркало из https://github.com/mozilla/gecko-dev.git
- not built -
move from <tree>s to <outliner>s, leaning on recent venkman outliner work.
This commit is contained in:
Родитель
7a2227246a
Коммит
c9ef96d2bc
|
@ -28,24 +28,12 @@
|
|||
|
||||
function onLoad()
|
||||
{
|
||||
|
||||
/* see cview-rdf.js for the definition of RDFHelper */
|
||||
cview.rdf = new RDFHelper();
|
||||
|
||||
cview.rdf.initTree ("component-list");
|
||||
cview.rdf.initTree ("interface-list");
|
||||
|
||||
cview.rdf.setTreeRoot ("component-list", cview.rdf.resRoot);
|
||||
cview.rdf.setTreeRoot ("interface-list", cview.rdf.resRoot);
|
||||
|
||||
onSortCol ("componentcol-contractid");
|
||||
onSortCol ("interfacecol-iname");
|
||||
|
||||
refreshComponents();
|
||||
refreshInterfaces();
|
||||
|
||||
initOutliners();
|
||||
cview.totalComponents = cview.visibleComponents =
|
||||
cview.componentView.rowCount;
|
||||
cview.totalInterfaces = cview.visibleInterfaces =
|
||||
cview.interfaceView.rowCount;
|
||||
refreshLabels();
|
||||
|
||||
}
|
||||
|
||||
function onUnload()
|
||||
|
@ -53,109 +41,100 @@ function onUnload()
|
|||
/* nothing important to do onUnload yet */
|
||||
}
|
||||
|
||||
function onSortCol(sortColName)
|
||||
{
|
||||
/* sort the <tree> widget on the column name |sortColName|. This code
|
||||
* was basically ripped off some mozilla code that I can't recall at the
|
||||
* moment.
|
||||
*/
|
||||
const nsIXULSortService = Components.interfaces.nsIXULSortService;
|
||||
/* XXX remove the rdf version once 0.8 is a distant memory
|
||||
* 2/22/2001
|
||||
*/
|
||||
const isupports_uri =
|
||||
(Components.classes["@mozilla.org/xul/xul-sort-service;1"]) ?
|
||||
"@mozilla.org/xul/xul-sort-service;1" :
|
||||
"@mozilla.org/rdf/xul-sort-service;1";
|
||||
|
||||
var node = document.getElementById(sortColName);
|
||||
// determine column resource to sort on
|
||||
var sortResource =
|
||||
node.getAttribute("resource");
|
||||
if (!node)
|
||||
return false;
|
||||
|
||||
var sortDirection = "ascending";
|
||||
//node.setAttribute("sortActive", "true");
|
||||
|
||||
switch (sortColName)
|
||||
{
|
||||
case "componentcol-contractid":
|
||||
document.getElementById("componentcol-clsid")
|
||||
.setAttribute("sortDirection", "natural");
|
||||
break;
|
||||
case "componentcol-clsid":
|
||||
document.getElementById("componentcol-contractid")
|
||||
.setAttribute("sortDirection", "natural");
|
||||
break;
|
||||
case "interfacecol-iname":
|
||||
document.getElementById("interfacecol-iid")
|
||||
.setAttribute("sortDirection", "natural");
|
||||
break;
|
||||
case "interfacecol-iid":
|
||||
document.getElementById("interfacecol-iname")
|
||||
.setAttribute("sortDirection", "natural");
|
||||
break;
|
||||
}
|
||||
|
||||
var currentDirection = node.getAttribute('sortDirection');
|
||||
|
||||
if (currentDirection == "ascending")
|
||||
sortDirection = "descending";
|
||||
else if (currentDirection == "descending")
|
||||
sortDirection = "natural";
|
||||
else
|
||||
sortDirection = "ascending";
|
||||
|
||||
node.setAttribute ("sortDirection", sortDirection);
|
||||
|
||||
var xulSortService =
|
||||
Components.classes[isupports_uri].getService(nsIXULSortService);
|
||||
if (!xulSortService)
|
||||
return false;
|
||||
try
|
||||
{
|
||||
xulSortService.Sort(node, sortResource, sortDirection);
|
||||
}
|
||||
catch(ex)
|
||||
{
|
||||
//dd("Exception calling xulSortService.Sort()");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function onComponentClick(e)
|
||||
{
|
||||
cview.lastContractID = e.target.parentNode.getAttribute("contractid");
|
||||
|
||||
if (cview.interfaceMode == "implemented-by")
|
||||
if (e.originalTarget.localName == "outlinercol")
|
||||
{
|
||||
cview.interfaceFilter = cview.lastContractID;
|
||||
filterInterfaces();
|
||||
onOutlinerResort(e, cview.componentView);
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
cview.lastContractID = e.target.parentNode.getAttribute("contractid");
|
||||
|
||||
if (cview.interfaceMode == "implemented-by")
|
||||
{
|
||||
cview.interfaceFilter = cview.lastContractID;
|
||||
filterInterfaces();
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
function onInterfaceClick(e)
|
||||
{
|
||||
cview.lastIID = e.target.parentNode.getAttribute("iid");
|
||||
refreshLabels();
|
||||
if (e.originalTarget.localName == "outlinercol")
|
||||
{
|
||||
onOutlinerResort(e, cview.interfaceView);
|
||||
}
|
||||
else
|
||||
{
|
||||
/*
|
||||
cview.lastIID = e.target.parentNode.getAttribute("iid");
|
||||
refreshLabels();
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
function onOutlinerResort (e, view)
|
||||
{
|
||||
/* resort by column */
|
||||
var rowIndex = new Object();
|
||||
var colID = new Object();
|
||||
var childElt = new Object();
|
||||
|
||||
var obo = view.outliner;
|
||||
obo.getCellAt(e.clientX, e.clientY, rowIndex, colID, childElt);
|
||||
var prop;
|
||||
switch (colID.value.substr(4))
|
||||
{
|
||||
case "name":
|
||||
prop = "sortName";
|
||||
break;
|
||||
case "number":
|
||||
prop = "sortNumber";
|
||||
break;
|
||||
}
|
||||
|
||||
var root = view.childData;
|
||||
var dir = (prop == root._share.sortColumn) ?
|
||||
root._share.sortDirection * -1 : 1;
|
||||
root.setSortColumn (prop, dir);
|
||||
}
|
||||
|
||||
function onComponentSelect (e)
|
||||
{
|
||||
var index = cview.componentView.outliner.selection.currentIndex;
|
||||
var row = cview.componentView.childData.locateChildByVisualRow (index);
|
||||
if (!row)
|
||||
return;
|
||||
|
||||
var text = document.getElementById ("output-text");
|
||||
text.value = row.getText();
|
||||
}
|
||||
|
||||
function onInterfaceSelect (e)
|
||||
{
|
||||
var index = cview.interfaceView.outliner.selection.currentIndex;
|
||||
var row = cview.interfaceView.childData.locateChildByVisualRow (index);
|
||||
if (!row)
|
||||
return;
|
||||
|
||||
var text = document.getElementById ("output-text");
|
||||
text.value = row.getText();
|
||||
}
|
||||
|
||||
function onLXRIFCLookup (e, type)
|
||||
{
|
||||
var treerow = document.popupNode.parentNode;
|
||||
var index = cview.interfaceView.outliner.selection.currentIndex;
|
||||
var row = cview.interfaceView.childData.locateChildByVisualRow (index);
|
||||
if (!row)
|
||||
return;
|
||||
|
||||
var iname = treerow.getAttribute("iname");
|
||||
if (!iname)
|
||||
{
|
||||
dd ("** NO INAME attribute in onLXRIFCLookup **");
|
||||
return;
|
||||
}
|
||||
|
||||
/* Specifing "_content" as the second parameter to window.open places
|
||||
* the url in the most recently open browser window
|
||||
*/
|
||||
window.open ("http://lxr.mozilla.org/mozilla/" + type + iname,
|
||||
window.open ("http://lxr.mozilla.org/mozilla/" + type + row.name,
|
||||
"_content", "");
|
||||
}
|
||||
|
||||
|
|
|
@ -42,221 +42,73 @@ cview.REFRESH_CYCLE_DELAY = 200;
|
|||
cview.componentMode = "all";
|
||||
cview.interfaceMode = "all";
|
||||
|
||||
|
||||
/*
|
||||
* Refreshing components and interfaces is a time consuming process.
|
||||
* We'll be asserting about 1300 (currently) new resources into the rdf graph,
|
||||
* each with 4 arcs. In order to keep mozilla from becoming *totally*
|
||||
* unresponsive during this refresh, we do the update in steps. The refresh
|
||||
* cycle can be tweaked by adjusting the REFRESH_ITEMS_PER_CYCLE and
|
||||
* REFRESH_CYCLE_DELAY properties on the cview object.
|
||||
*
|
||||
* Normally, components and interfaces will only need to be refreshed once
|
||||
* per execution, at app start. After that, items are hidden/shown with the
|
||||
* filter*() functions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* One step in the components refresh process
|
||||
*/
|
||||
function refreshComponentsStep()
|
||||
{
|
||||
var i;
|
||||
|
||||
for (i = 0; i < cview.REFRESH_ITEMS_PER_CYCLE; i++)
|
||||
{
|
||||
var cls = cview.pendingComponents.pop();
|
||||
|
||||
if (!cls)
|
||||
break;
|
||||
|
||||
var res = cview.rdf.GetResource ("component:" + (++cview.componentID));
|
||||
cview.rdf.Assert (res, cview.rdf.resContractID,
|
||||
cview.rdf.GetLiteral(cls.name));
|
||||
cview.rdf.Assert (res, cview.rdf.resCLSID,
|
||||
cview.rdf.GetLiteral(cls.number));
|
||||
cview.rdf.Assert (res, cview.rdf.resShow,
|
||||
cview.rdf.litTrue);
|
||||
cview.rdf.Assert (cview.rdf.resRoot, cview.rdf.resCmp, res);
|
||||
}
|
||||
|
||||
if (cls)
|
||||
cview.componentRefreshTimeout =
|
||||
window.setTimeout ("refreshComponentsStep();",
|
||||
cview.REFRESH_CYCLE_DELAY);
|
||||
else
|
||||
{
|
||||
cview.rdf.setTreeRoot ("component-list", cview.rdf.resRoot);
|
||||
cview.componentMode = "all";
|
||||
delete cview.componentRefreshTimeout;
|
||||
delete cview.pendingComponents;
|
||||
delete cview.componentID;
|
||||
}
|
||||
|
||||
cview.visibleComponents += i;
|
||||
refreshLabels();
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Kick off a components refresh.
|
||||
*/
|
||||
function refreshComponents()
|
||||
{
|
||||
cview.rdf.setTreeRoot ("component-list", cview.rdf.resNullRoot);
|
||||
|
||||
cview.rdf.clearTargets (cview.rdf.resRoot, cview.rdf.resCmp, true);
|
||||
|
||||
if (cview.componentRefreshTimeout)
|
||||
window.clearTimeout (cview.componentRefreshTimeout);
|
||||
|
||||
cview.pendingComponents = new Array();
|
||||
|
||||
for (var c in Components.classes)
|
||||
cview.pendingComponents.push(Components.classes[c]);
|
||||
|
||||
cview.totalComponents = cview.pendingComponents.length;
|
||||
cview.visibleComponents = 0;
|
||||
cview.componentID = 0;
|
||||
cview.componentMode = "refreshing";
|
||||
refreshLabels();
|
||||
|
||||
cview.componentRefreshTimeout =
|
||||
window.setTimeout ("refreshComponentsStep();",
|
||||
cview.REFRESH_CYCLE_DELAY);
|
||||
}
|
||||
|
||||
/*
|
||||
* One step in the interface refresh process
|
||||
*/
|
||||
function refreshInterfacesStep()
|
||||
{
|
||||
var i;
|
||||
|
||||
for (i = 0; i < cview.REFRESH_ITEMS_PER_CYCLE; i++)
|
||||
{
|
||||
var ifc = cview.pendingInterfaces.pop();
|
||||
|
||||
if (!ifc)
|
||||
break;
|
||||
|
||||
var res = cview.rdf.GetResource ("interface:" + (++cview.interfaceID));
|
||||
cview.rdf.Assert (res, cview.rdf.resIName,
|
||||
cview.rdf.GetLiteral(ifc.name));
|
||||
cview.rdf.Assert (res, cview.rdf.resIID,
|
||||
cview.rdf.GetLiteral(ifc.number));
|
||||
cview.rdf.Assert (res, cview.rdf.resShow,
|
||||
cview.rdf.litTrue);
|
||||
cview.rdf.Assert (cview.rdf.resRoot, cview.rdf.resIfc, res);
|
||||
}
|
||||
|
||||
if (ifc)
|
||||
cview.interfaceRefreshTimeout =
|
||||
window.setTimeout ("refreshInterfacesStep();",
|
||||
cview.REFRESH_CYCLE_DELAY);
|
||||
else
|
||||
{
|
||||
cview.rdf.setTreeRoot ("interface-list", cview.rdf.resRoot);
|
||||
cview.interfaceMode = "all";
|
||||
delete cview.interfaceID;
|
||||
delete cview.interfaceRefreshTimeout;
|
||||
delete cview.pendingInterfaces;
|
||||
}
|
||||
|
||||
cview.visibleInterfaces += i;
|
||||
refreshLabels();
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Kick off the interface refresh process
|
||||
*/
|
||||
function refreshInterfaces()
|
||||
{
|
||||
cview.rdf.setTreeRoot ("interface-list", cview.rdf.resNullRoot);
|
||||
cview.rdf.clearTargets (cview.rdf.resRoot, cview.rdf.resIfc, true);
|
||||
|
||||
if (cview.interfaceRefreshTimeout)
|
||||
window.clearTimeout (cview.interfaceRefreshTimeout);
|
||||
|
||||
cview.pendingInterfaces = new Array();
|
||||
|
||||
for (var i in Components.interfaces)
|
||||
cview.pendingInterfaces.push(Components.interfaces[i]);
|
||||
|
||||
cview.totalInterfaces = cview.pendingInterfaces.length;
|
||||
cview.visibleInterfaces = 0;
|
||||
cview.interfaceID = 0;
|
||||
cview.interfaceMode = "refreshing";
|
||||
refreshLabels();
|
||||
|
||||
cview.interfaceRefreshTimeout =
|
||||
window.setTimeout ("refreshInterfacesStep();",
|
||||
cview.REFRESH_CYCLE_DELAY);
|
||||
}
|
||||
|
||||
/*
|
||||
* hide/show entries in the components list based on the componentMode and
|
||||
* componentFilter properties of the cview object.
|
||||
*/
|
||||
function filterComponents()
|
||||
{
|
||||
cview.rdf.setTreeRoot ("component-list", cview.rdf.resNullRoot);
|
||||
|
||||
cview.visibleComponents = 0;
|
||||
var cmps = cview.rdf.GetTargets (cview.rdf.resRoot, cview.rdf.resCmp);
|
||||
|
||||
while (cmps.hasMoreElements())
|
||||
function filterAll (rec)
|
||||
{
|
||||
var cmpNode = cmps.getNext().QueryInterface(nsIRDFResource);
|
||||
var cmpName = cview.rdf.GetTarget(cmpNode, cview.rdf.resContractID);
|
||||
if (cmpName)
|
||||
if (rec.isHidden)
|
||||
rec.unHide();
|
||||
cview.visibleComponents++;
|
||||
}
|
||||
|
||||
function filterContains (rec)
|
||||
{
|
||||
if (rec.name.search(cview.componentFilter) != -1)
|
||||
{
|
||||
cmpName = cmpName.QueryInterface(nsIRDFLiteral);
|
||||
cmpName = cmpName.Value;
|
||||
}
|
||||
if (rec.isHidden)
|
||||
rec.unHide();
|
||||
cview.visibleComponents++;
|
||||
}
|
||||
else
|
||||
{
|
||||
dd ("** NODE WITHOUT NAME ARC in filterComponents **");
|
||||
continue;
|
||||
if (!rec.isHidden)
|
||||
rec.hide();
|
||||
}
|
||||
|
||||
switch (cview.componentMode)
|
||||
{
|
||||
case "all":
|
||||
cview.rdf.Change (cmpNode, cview.rdf.resShow,
|
||||
cview.rdf.litTrue);
|
||||
cview.visibleComponents++;
|
||||
break;
|
||||
|
||||
case "contains":
|
||||
if (cmpName.search(cview.componentFilter) != -1)
|
||||
{
|
||||
cview.rdf.Change (cmpNode, cview.rdf.resShow,
|
||||
cview.rdf.litTrue);
|
||||
cview.visibleComponents++;
|
||||
}
|
||||
else
|
||||
cview.rdf.Change (cmpNode, cview.rdf.resShow,
|
||||
cview.rdf.litFalse);
|
||||
break;
|
||||
|
||||
case "starts-with":
|
||||
if (cmpName.search(cview.componentFilter) == 0)
|
||||
{
|
||||
cview.rdf.Change (cmpNode, cview.rdf.resShow,
|
||||
cview.rdf.litTrue);
|
||||
cview.visibleComponents++;
|
||||
}
|
||||
else
|
||||
cview.rdf.Change (cmpNode, cview.rdf.resShow,
|
||||
cview.rdf.litFalse);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function filterStarts (rec)
|
||||
{
|
||||
if (rec.name.search(cview.componentFilter) == 0)
|
||||
{
|
||||
if (rec.isHidden)
|
||||
rec.unHide();
|
||||
cview.visibleComponents++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!rec.isHidden)
|
||||
rec.hide();
|
||||
}
|
||||
}
|
||||
|
||||
var cmps = cview.componentView.childData.childData;
|
||||
var count = cmps.length;
|
||||
|
||||
cview.visibleComponents = 0;
|
||||
|
||||
switch (cview.componentMode)
|
||||
{
|
||||
case "all":
|
||||
filterFunction = filterAll;
|
||||
break;
|
||||
|
||||
case "contains":
|
||||
filterFunction = filterContains;
|
||||
break;
|
||||
|
||||
case "starts-with":
|
||||
filterFunction = filterStarts;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
for (var i = 0; i < count; ++i)
|
||||
filterFunction (cmps[i]);
|
||||
|
||||
cview.rdf.setTreeRoot ("component-list", cview.rdf.resRoot);
|
||||
refreshLabels();
|
||||
|
||||
}
|
||||
|
@ -266,93 +118,68 @@ function filterComponents()
|
|||
*/
|
||||
function filterInterfaces()
|
||||
{
|
||||
var e;
|
||||
var cls;
|
||||
|
||||
cview.rdf.setTreeRoot ("interface-list", cview.rdf.resNullRoot);
|
||||
|
||||
var ifcs = cview.rdf.GetTargets (cview.rdf.resRoot, cview.rdf.resIfc);
|
||||
function filterAll (rec)
|
||||
{
|
||||
if (rec.isHidden)
|
||||
rec.show();
|
||||
cview.visibleInterfaces++;
|
||||
}
|
||||
|
||||
function filterContains (rec)
|
||||
{
|
||||
if (rec.name.search(cview.interfaceFilter) != -1)
|
||||
{
|
||||
if (rec.isHidden)
|
||||
rec.show();
|
||||
cview.visibleInterfaces++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!rec.isHidden)
|
||||
rec.hide();
|
||||
}
|
||||
}
|
||||
|
||||
function filterStarts (rec)
|
||||
{
|
||||
if (rec.name.search(cview.interfaceFilter) == 0)
|
||||
{
|
||||
if (rec.isHidden)
|
||||
rec.show();
|
||||
cview.visibleInterfaces++;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!rec.isHidden)
|
||||
rec.hide();
|
||||
}
|
||||
}
|
||||
|
||||
var ifcs = cview.interfaceView.childData.childData;
|
||||
var count = ifcs.length;
|
||||
|
||||
cview.visibleInterfaces = 0;
|
||||
|
||||
if (cview.interfaceMode == "implemented-by")
|
||||
switch (cview.interfaceMode)
|
||||
{
|
||||
cls = Components.classes[cview.interfaceFilter];
|
||||
if (cls)
|
||||
cls = cls.createInstance();
|
||||
case "all":
|
||||
filterFunction = filterAll;
|
||||
break;
|
||||
|
||||
case "contains":
|
||||
filterFunction = filterContains;
|
||||
break;
|
||||
|
||||
case "starts-with":
|
||||
filterFunction = filterStarts;
|
||||
break;
|
||||
}
|
||||
|
||||
while (ifcs.hasMoreElements())
|
||||
{
|
||||
var ifcNode = ifcs.getNext().QueryInterface(nsIRDFResource);
|
||||
var ifcName = cview.rdf.GetTarget(ifcNode, cview.rdf.resIName);
|
||||
if (ifcName)
|
||||
{
|
||||
ifcName = ifcName.QueryInterface (nsIRDFLiteral);
|
||||
ifcName = ifcName.Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
dd ("** NODE WITHOUT NAME ARC in filterInterfaces **");
|
||||
continue;
|
||||
}
|
||||
|
||||
switch (cview.interfaceMode)
|
||||
{
|
||||
case "all":
|
||||
cview.rdf.Change (ifcNode, cview.rdf.resShow,
|
||||
cview.rdf.litTrue);
|
||||
cview.visibleInterfaces++;
|
||||
break;
|
||||
|
||||
case "contains":
|
||||
if (ifcName.search(cview.interfaceFilter) != -1)
|
||||
{
|
||||
cview.rdf.Change (ifcNode, cview.rdf.resShow,
|
||||
cview.rdf.litTrue);
|
||||
cview.visibleInterfaces++;
|
||||
}
|
||||
else
|
||||
cview.rdf.Change (ifcNode, cview.rdf.resShow,
|
||||
cview.rdf.litFalse);
|
||||
break;
|
||||
|
||||
case "starts-with":
|
||||
if (ifcName.search(cview.interfaceFilter) == 0)
|
||||
{
|
||||
cview.rdf.Change (ifcNode, cview.rdf.resShow,
|
||||
cview.rdf.litTrue);
|
||||
cview.visibleInterfaces++;
|
||||
}
|
||||
else
|
||||
cview.rdf.Change (ifcNode, cview.rdf.resShow,
|
||||
cview.rdf.litFalse);
|
||||
break;
|
||||
|
||||
case "implemented-by":
|
||||
if (cls)
|
||||
try
|
||||
{
|
||||
cls.QueryInterface(Components.interfaces[ifcName]);
|
||||
cview.rdf.Change (ifcNode, cview.rdf.resShow,
|
||||
cview.rdf.litTrue);
|
||||
cview.visibleInterfaces++;
|
||||
}
|
||||
catch (e)
|
||||
{
|
||||
cview.rdf.Change (ifcNode, cview.rdf.resShow,
|
||||
cview.rdf.litFalse);
|
||||
}
|
||||
else
|
||||
cview.rdf.Change (ifcNode, cview.rdf.resShow,
|
||||
cview.rdf.litFalse);
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
for (var i = 0; i < count; ++i)
|
||||
filterFunction (ifcs[i]);
|
||||
|
||||
cview.rdf.setTreeRoot ("interface-list", cview.rdf.resRoot);
|
||||
refreshLabels();
|
||||
refreshLabels();
|
||||
|
||||
}
|
||||
|
||||
|
@ -379,17 +206,12 @@ function refreshLabels()
|
|||
value = "Components starting with '" + cview.componentFilter + "'";
|
||||
break;
|
||||
|
||||
case "refreshing":
|
||||
value = "Refreshing Components list...";
|
||||
break;
|
||||
|
||||
default:
|
||||
value = "Components?";
|
||||
break;
|
||||
}
|
||||
|
||||
value += " (" + cview.visibleComponents + "/" +
|
||||
cview.totalComponents + ")";
|
||||
value += " (" + cview.visibleComponents + "/" + cview.totalComponents + ")";
|
||||
document.getElementById("component-label").setAttribute ("value", value);
|
||||
|
||||
switch (cview.interfaceMode)
|
||||
|
@ -414,16 +236,11 @@ function refreshLabels()
|
|||
Components.classes[cview.interfaceFilter] + "'";
|
||||
break;
|
||||
|
||||
case "refreshing":
|
||||
value = "Refreshing Interfaces list...";
|
||||
break;
|
||||
|
||||
default:
|
||||
value = "Interfaces?";
|
||||
break;
|
||||
}
|
||||
|
||||
value += " (" + cview.visibleInterfaces + "/" +
|
||||
cview.totalInterfaces + ")";
|
||||
value += " (" + cview.visibleInterfaces + "/" + cview.totalInterfaces + ")";
|
||||
document.getElementById("interface-label").setAttribute ("value", value);
|
||||
}
|
||||
|
|
|
@ -326,10 +326,10 @@ function getPriv (priv)
|
|||
|
||||
function keys (o)
|
||||
{
|
||||
var rv = "";
|
||||
var rv = new Array();
|
||||
|
||||
for (var p in o)
|
||||
rv += rv ? ", " + p : p;
|
||||
rv.push(p);
|
||||
|
||||
return rv;
|
||||
|
||||
|
|
|
@ -24,8 +24,7 @@
|
|||
|
||||
<!DOCTYPE window>
|
||||
|
||||
<!-- ?xml-stylesheet href="chrome://cview/skin" type="text/css"? -->
|
||||
<?xml-stylesheet href="chrome://communicator/skin/" type="text/css"?>
|
||||
<?xml-stylesheet href="chrome://cview/skin" type="text/css"?>
|
||||
|
||||
<?xul-overlay href="chrome://global/content/globalOverlay.xul"?>
|
||||
<?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
|
||||
|
@ -36,15 +35,10 @@
|
|||
-->
|
||||
|
||||
<window id="main-window"
|
||||
xmlns:html="http://www.w3.org/1999/xhtml"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:xpcom="http://www.mozilla.org/NC-xpcom#"
|
||||
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
|
||||
orient="vertical" onload="onLoad();" onunload="onUnload();"
|
||||
persist="width height" title="XPCOM Component Viewer">
|
||||
<!--
|
||||
note the xmlns:xpcom in the <window> tag, it's used in the <rule>s
|
||||
below.
|
||||
The persist attribute contains attributes that should be saved to
|
||||
localstore.rdf when the window closes. The next time this window is
|
||||
opened, persisted properties will be automatically restored.
|
||||
|
@ -55,18 +49,23 @@
|
|||
it to take effect.
|
||||
|
||||
files loaded are:
|
||||
outliner-utils.js General purpose outliner classes
|
||||
|
||||
cview-utils.js generic utility functions.
|
||||
cview-rdf.js RDF utility class (RDFHelper).
|
||||
cview-static.js Non event-handler functions core to cview.
|
||||
cview-handlers.js Event-handlers core to cview.
|
||||
cview-outliners.js CView specific outliners
|
||||
-->
|
||||
<script>
|
||||
var DEBUG = true;
|
||||
</script>
|
||||
<script type="application/x-javascript" src="chrome://cview/content/cview-utils.js"/>
|
||||
<script type="application/x-javascript" src="chrome://cview/content/cview-rdf.js"/>
|
||||
<script type="application/x-javascript" src="chrome://cview/content/cview-static.js"/>
|
||||
<script type="application/x-javascript" src="chrome://cview/content/cview-handlers.js"/>
|
||||
<script src="chrome://cview/content/outliner-utils.js"/>
|
||||
<script src="chrome://cview/content/cview-utils.js"/>
|
||||
<script src="chrome://cview/content/cview-rdf.js"/>
|
||||
<script src="chrome://cview/content/cview-static.js"/>
|
||||
<script src="chrome://cview/content/cview-handlers.js"/>
|
||||
<script src="chrome://cview/content/cview-outliners.js"/>
|
||||
|
||||
<!--
|
||||
This popup is the context menu for elements in the interfaces list.
|
||||
|
@ -120,132 +119,51 @@
|
|||
</menubar>
|
||||
</toolbox>
|
||||
|
||||
<hbox id="outer-box" flex="1">
|
||||
<vbox id="outer-box" flex="1">
|
||||
<hbox id="inner-box" flex="9">
|
||||
<vbox id="component-box" flex="1" width="50%">
|
||||
<text id="component-label" value="Components..." crop="right"
|
||||
autostretch="never"/>
|
||||
<!--
|
||||
datasources="rdf:null" makes the tree able to get it's contents from an
|
||||
rdf datasource, but delays saying which one until runtime.
|
||||
-->
|
||||
containment="http://www.mozilla.org/NC-xpcom#component" says that
|
||||
<tree id="component-list" container="true" datasources="rdf:null" flex="1"
|
||||
containment="http://www.mozilla.org/NC-xpcom#component">
|
||||
<text id="component-label" value="Components..." crop="right"
|
||||
autostretch="never"/>
|
||||
|
||||
<template>
|
||||
<!--
|
||||
xpcom: here refers to the namespace declared in the <window> tag. If the
|
||||
resource has a http://www.mozilla.org/NC-xpcom#show arc pointing the
|
||||
literal value "false", no content will be created for that resource
|
||||
-->
|
||||
<rule xpcom:show="false"/>
|
||||
<!--
|
||||
If, on the otherhand, the resource has a
|
||||
http://www.mozilla.org/NC-xpcom#show arc pointing the literal value
|
||||
"true", the following content will be created.
|
||||
-->
|
||||
<rule xpcom:show="true">
|
||||
<treechildren flex="1">
|
||||
<treeitem uri="..." flex="1">
|
||||
<treerow onclick="onComponentClick(event);" flex="1" crop="right"
|
||||
contractid="rdf:http://www.mozilla.org/NC-xpcom#contractid">
|
||||
<!--
|
||||
Even though we specified the onClick handler as an attribute of the
|
||||
<treerow> tag, the event's target will be the <treecell>. We compensate
|
||||
by looking at the target's parentNode. See
|
||||
cview-handlers.js:onComponentClick().
|
||||
-->
|
||||
<treecell>
|
||||
<text value="rdf:http://www.mozilla.org/NC-xpcom#contractid"
|
||||
crop="right" flex="1" autostretch="never"/>
|
||||
</treecell>
|
||||
<treecell>
|
||||
<text value="rdf:http://www.mozilla.org/NC-xpcom#clsid"
|
||||
crop="right" flex="1" autostretch="never"/>
|
||||
</treecell>
|
||||
</treerow>
|
||||
</treeitem>
|
||||
</treechildren>
|
||||
</rule>
|
||||
</template>
|
||||
<outliner flex="1" id="component-outliner" persist="height"
|
||||
primary="true" onselect="onComponentSelect(event);"
|
||||
onclick="onComponentClick(event);">
|
||||
|
||||
<treecolgroup>
|
||||
<treecol flex="1" width="75%"
|
||||
resource="http://www.mozilla.org/NC-xpcom#contractid"/>
|
||||
<outlinercol id="cmp-name" label="Name" primary="true" flex="1"
|
||||
persist="hidden width"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol flex="1" width="25%"
|
||||
resource="http://www.mozilla.org/NC-xpcom#clsid"/>
|
||||
</treecolgroup>
|
||||
<outlinercol id="cmp-number" flex="1" label="Number"
|
||||
persist="hidden width"/>
|
||||
<outlinerbody id="project-body" flex="1"/>
|
||||
</outliner>
|
||||
|
||||
<treehead>
|
||||
<treerow>
|
||||
<treecell id="componentcol-contractid" flex="1"
|
||||
resource="http://www.mozilla.org/NC-xpcom#contractid"
|
||||
class="treecell-header sortDirectionIndicator" label="ContractID"
|
||||
onclick="return onSortCol('componentcol-contractid');"/>
|
||||
<treecell id="componentcol-clsid" flex="1"
|
||||
resource="http://www.mozilla.org/NC-xpcom#clsid"
|
||||
class="treecell-header sortDirectionIndicator" label="CLSID"
|
||||
onclick="return onSortCol('componentcol-clsid');"/>
|
||||
</treerow>
|
||||
</treehead>
|
||||
</tree>
|
||||
</vbox>
|
||||
|
||||
<splitter id="main-splitter" orient="vertical" collapse="before">
|
||||
<splitter id="main-splitter" orient="vertical" collapse="after">
|
||||
<grippy/>
|
||||
</splitter>
|
||||
|
||||
<vbox id="interface-box" flex="1" width="50%">
|
||||
<text id="interface-label" value="Interfaces..." crop="right"
|
||||
autostretch="never"/>
|
||||
<tree id="interface-list" container="true" datasources="rdf:null" flex="1"
|
||||
containment="http://www.mozilla.org/NC-xpcom#interface">
|
||||
|
||||
<template>
|
||||
<rule xpcom:show="false"/>
|
||||
<rule xpcom:show="true">
|
||||
<treechildren flex="1">
|
||||
<treeitem uri="...">
|
||||
<treerow onclick="onInterfaceClick(event);" crop="right"
|
||||
iname="rdf:http://www.mozilla.org/NC-xpcom#iname"
|
||||
context="interfacePopup">
|
||||
<treecell>
|
||||
<text value="rdf:http://www.mozilla.org/NC-xpcom#iname"
|
||||
crop="right" flex="1" autostretch="never"/>
|
||||
</treecell>
|
||||
<treecell>
|
||||
<text value="rdf:http://www.mozilla.org/NC-xpcom#iid"
|
||||
crop="right" flex="1" autostretch="never"/>
|
||||
</treecell>
|
||||
</treerow>
|
||||
</treeitem>
|
||||
</treechildren>
|
||||
</rule>
|
||||
</template>
|
||||
<outliner flex="1" id="interface-outliner" persist="height"
|
||||
onclick="onInterfaceClick(event);" context="interfacePopup"
|
||||
onselect="onInterfaceSelect(event);">
|
||||
|
||||
<treecolgroup>
|
||||
<treecol flex="1" width="75%"
|
||||
resource="http://www.mozilla.org/NC-xpcom#iname"/>
|
||||
<outlinercol id="ifc-name" label="Name" primary="true" flex="1"
|
||||
persist="hidden width"/>
|
||||
<splitter class="tree-splitter"/>
|
||||
<treecol flex="1" width="25%"
|
||||
resource="http://www.mozilla.org/NC-xpcom#iid"/>
|
||||
</treecolgroup>
|
||||
<outlinercol id="ifc-number" flex="1" label="Number"
|
||||
persist="hidden width"/>
|
||||
<outlinerbody id="project-body" flex="1"/>
|
||||
</outliner>
|
||||
|
||||
<treehead>
|
||||
<treerow>
|
||||
<treecell id="interfacecol-iname"
|
||||
resource="http://www.mozilla.org/NC-xpcom#iname"
|
||||
class="treecell-header sortDirectionIndicator" label="Interface"
|
||||
onclick="return onSortCol('interfacecol-iname');"/>
|
||||
<treecell id="interfacecol-iid"
|
||||
resource="http://www.mozilla.org/NC-xpcom#iid"
|
||||
class="treecell-header sortDirectionIndicator" label="IID"
|
||||
onclick="return onSortCol('interfacecol-iid');"/>
|
||||
</treerow>
|
||||
</treehead>
|
||||
</tree>
|
||||
</vbox>
|
||||
|
||||
</hbox>
|
||||
</hbox> <!-- inner-box -->
|
||||
|
||||
<textbox multiline="true" readonly="true" id="output-text" flex="1"/>
|
||||
|
||||
</vbox> <!-- outer-box -->
|
||||
</window>
|
||||
|
|
|
@ -22,3 +22,23 @@
|
|||
*/
|
||||
|
||||
@import url(chrome://communicator/skin/);
|
||||
|
||||
#output-text {
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(cmp-name,component) {
|
||||
list-style-image: url("chrome://cview/skin/images/component.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(cmp-name,interface) {
|
||||
list-style-image: url("chrome://cview/skin/images/interface.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(cmp-name,method) {
|
||||
list-style-image: url("chrome://cview/skin/images/method.gif");
|
||||
}
|
||||
|
||||
outlinerbody:-moz-outliner-image(ifc-name) {
|
||||
list-style-image: url("chrome://cview/skin/images/interface.gif");
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче