pjs/xpfe/components/regviewer/regviewer.js

120 строки
3.6 KiB
JavaScript

/* -*- Mode: Java; tab-width: 4; c-basic-offset: 4; -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*/
/*
Script for the registry viewer window
*/
var RDF = Components.classes['component://netscape/rdf/rdf-service'].getService();
RDF = RDF.QueryInterface(Components.interfaces.nsIRDFService);
var Registry;
var REGISTRY_NAMESPACE_URI = 'urn:mozilla-registry:'
var REGISTRY_VALUE_PREFIX = REGISTRY_NAMESPACE_URI + 'value:';
var kRegistry_Subkeys = RDF.GetResource(REGISTRY_NAMESPACE_URI + 'subkeys');
function debug(msg)
{
//dump(msg + '\n');
}
function OnLoad()
{
Registry = Components.classes['component://netscape/registry-viewer'].createInstance();
Registry = Registry.QueryInterface(Components.interfaces.nsIRegistryDataSource);
Registry.openWellKnownRegistry(Registry.ApplicationComponentRegistry);
Registry = Registry.QueryInterface(Components.interfaces.nsIRDFDataSource);
var tree = document.getElementById('tree');
tree.database.AddDataSource(Registry);
tree.setAttribute('ref', 'urn:mozilla-registry:key:/');
}
function OnSelect(event)
{
var tree = event.target;
var items = tree.selectedItems;
var properties = document.getElementById('properties');
if (properties.firstChild) {
properties.removeChild(properties.firstChild);
}
if (items.length == 1) {
// Exactly one item is selected. Show as much information as we
// can about it.
var table = document.createElement('html:table');
debug('selected item = ' + items[0].getAttribute('id'));
var uri = items[0].getAttribute('id');
var source = RDF.GetResource(uri);
var arcs = Registry.ArcLabelsOut(source);
while (arcs.HasMoreElements()) {
var property = arcs.GetNext().QueryInterface(Components.interfaces.nsIRDFResource);
if (property == kRegistry_Subkeys)
continue;
var propstr = property.Value.substr(REGISTRY_VALUE_PREFIX.length);
debug('propstr = ' + propstr);
var target = Registry.GetTarget(source, property, true);
var targetstr;
var literal;
literal = target.QueryInterface(Components.interfaces.nsIRDFLiteral);
if (literal) {
targetstr = literal.Value;
}
else {
literal = target.QueryInterface(Components.interfaces.nsIRDFInt)
if (literal) {
targetstr = literal.Value;
}
else {
// Hmm. Not sure!
}
}
debug('targetstr = ' + targetstr);
var tr = document.createElement('html:tr');
table.appendChild(tr);
var td1 = document.createElement('html:td');
td1.appendChild(document.createTextNode(propstr));
tr.appendChild(td1);
var td2 = document.createElement('html:td');
td2.appendChild(document.createTextNode(targetstr));
tr.appendChild(td2);
}
properties.appendChild(table);
}
}