зеркало из https://github.com/mozilla/gecko-dev.git
Clean-up and parameterize more.
This commit is contained in:
Родитель
e397a910fc
Коммит
a9a2856f45
|
@ -36,20 +36,37 @@ function debug(msg)
|
||||||
|
|
||||||
function Init()
|
function Init()
|
||||||
{
|
{
|
||||||
sidebar.datasource_uri = window.arguments[0];
|
var all_panels_datasources = window.arguments[0];
|
||||||
sidebar.resource = window.arguments[1];
|
var all_panels_resource = window.arguments[1];
|
||||||
|
sidebar.datasource_uri = window.arguments[2];
|
||||||
|
sidebar.resource = window.arguments[3];
|
||||||
|
|
||||||
|
debug("all panels datasources = " + all_panels_datasources);
|
||||||
|
debug("all panels resource = " + all_panels_resource);
|
||||||
debug("sidebar.datasource_uri = " + sidebar.datasource_uri);
|
debug("sidebar.datasource_uri = " + sidebar.datasource_uri);
|
||||||
debug("sidebar.resource = " + sidebar.resource);
|
debug("sidebar.resource = " + sidebar.resource);
|
||||||
|
|
||||||
// This will load the datasource, if it isn't already.
|
var all_panels = document.getElementById('other-panels');
|
||||||
sidebar.datasource = RDF.GetDataSource(sidebar.datasource_uri);
|
var current_panels = document.getElementById('current-panels');
|
||||||
|
|
||||||
// Add the necessary datasources to the select list
|
all_panels_datasources = all_panels_datasources.split(/\s+/);
|
||||||
var select_list = document.getElementById('selected-panels');
|
for (var ii = 0; ii < all_panels_datasources.length; ii++) {
|
||||||
select_list.database.AddDataSource(sidebar.datasource);
|
debug("Adding "+all_panels_datasources[ii]);
|
||||||
|
|
||||||
|
// This will load the datasource, if it isn't already.
|
||||||
|
var datasource = RDF.GetDataSource(all_panels_datasources[ii]);
|
||||||
|
all_panels.database.AddDataSource(datasource);
|
||||||
|
current_panels.database.AddDataSource(datasource);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add the datasource for current list of panels. It selects panels out
|
||||||
|
// of the other datasources.
|
||||||
|
sidebar.datasource = RDF.GetDataSource(sidebar.datasource_uri);
|
||||||
|
current_panels.database.AddDataSource(sidebar.datasource);
|
||||||
|
|
||||||
// Root the customize dialog at the correct place.
|
// Root the customize dialog at the correct place.
|
||||||
select_list.setAttribute('ref', sidebar.resource);
|
all_panels.setAttribute('ref', all_panels_resource);
|
||||||
|
current_panels.setAttribute('ref', sidebar.resource);
|
||||||
|
|
||||||
saveInitialPanels();
|
saveInitialPanels();
|
||||||
enableButtons();
|
enableButtons();
|
||||||
|
@ -57,7 +74,7 @@ function Init()
|
||||||
|
|
||||||
function saveInitialPanels()
|
function saveInitialPanels()
|
||||||
{
|
{
|
||||||
var root = document.getElementById('selected-panels-root');
|
var root = document.getElementById('current-panels-root');
|
||||||
for (var node = root.firstChild; node != null; node = node.nextSibling) {
|
for (var node = root.firstChild; node != null; node = node.nextSibling) {
|
||||||
original_panels[original_panels.length] = node.getAttribute('id');
|
original_panels[original_panels.length] = node.getAttribute('id');
|
||||||
}
|
}
|
||||||
|
@ -70,8 +87,8 @@ function addOption(registry, service, selectIt)
|
||||||
var option_customize = getAttr(registry, service, 'customize');
|
var option_customize = getAttr(registry, service, 'customize');
|
||||||
var option_content = getAttr(registry, service, 'content');
|
var option_content = getAttr(registry, service, 'content');
|
||||||
|
|
||||||
var tree = document.getElementById('selected-panels');
|
var tree = document.getElementById('current-panels');
|
||||||
var treeroot = document.getElementById('selected-panels-root');
|
var treeroot = document.getElementById('current-panels-root');
|
||||||
|
|
||||||
// Check to see if the panel already exists...
|
// Check to see if the panel already exists...
|
||||||
for (var ii = treeroot.firstChild; ii != null; ii = ii.nextSibling) {
|
for (var ii = treeroot.firstChild; ii != null; ii = ii.nextSibling) {
|
||||||
|
@ -124,15 +141,15 @@ function getAttr(registry,service,attr_name) {
|
||||||
|
|
||||||
function selectChange() {
|
function selectChange() {
|
||||||
// Remove the selection in the other list
|
// Remove the selection in the other list
|
||||||
var other_panels = document.getElementById('other-panels');
|
var all_panels = document.getElementById('other-panels');
|
||||||
other_panels.clearItemSelection();
|
all_panels.clearItemSelection();
|
||||||
|
|
||||||
enableButtons();
|
enableButtons();
|
||||||
enableOtherButtons();
|
enableOtherButtons();
|
||||||
}
|
}
|
||||||
|
|
||||||
function moveUp() {
|
function moveUp() {
|
||||||
var tree = document.getElementById('selected-panels');
|
var tree = document.getElementById('current-panels');
|
||||||
if (tree.selectedItems.length == 1) {
|
if (tree.selectedItems.length == 1) {
|
||||||
var selected = tree.selectedItems[0];
|
var selected = tree.selectedItems[0];
|
||||||
if (selected.previousSibling) {
|
if (selected.previousSibling) {
|
||||||
|
@ -145,7 +162,7 @@ function moveUp() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function moveDown() {
|
function moveDown() {
|
||||||
var tree = document.getElementById('selected-panels');
|
var tree = document.getElementById('current-panels');
|
||||||
if (tree.selectedItems.length == 1) {
|
if (tree.selectedItems.length == 1) {
|
||||||
var selected = tree.selectedItems[0];
|
var selected = tree.selectedItems[0];
|
||||||
if (selected.nextSibling) {
|
if (selected.nextSibling) {
|
||||||
|
@ -165,7 +182,7 @@ function moveDown() {
|
||||||
function enableButtons() {
|
function enableButtons() {
|
||||||
var up = document.getElementById('up');
|
var up = document.getElementById('up');
|
||||||
var down = document.getElementById('down');
|
var down = document.getElementById('down');
|
||||||
var tree = document.getElementById('selected-panels');
|
var tree = document.getElementById('current-panels');
|
||||||
var customize = document.getElementById('customize-button');
|
var customize = document.getElementById('customize-button');
|
||||||
var remove = document.getElementById('remove-button');
|
var remove = document.getElementById('remove-button');
|
||||||
|
|
||||||
|
@ -193,7 +210,7 @@ function enableButtons() {
|
||||||
}
|
}
|
||||||
// "Customize..." button
|
// "Customize..." button
|
||||||
var customizeURL = null;
|
var customizeURL = null;
|
||||||
if (selectedNode) {
|
if (numSelected == 1) {
|
||||||
customizeURL = selectedNode.getAttribute('customize');
|
customizeURL = selectedNode.getAttribute('customize');
|
||||||
}
|
}
|
||||||
if (customizeURL == null || customizeURL == '') {
|
if (customizeURL == null || customizeURL == '') {
|
||||||
|
@ -229,7 +246,7 @@ function CustomizePanel()
|
||||||
|
|
||||||
function RemovePanel()
|
function RemovePanel()
|
||||||
{
|
{
|
||||||
var tree = document.getElementById('selected-panels');
|
var tree = document.getElementById('current-panels');
|
||||||
|
|
||||||
var nextNode = null;
|
var nextNode = null;
|
||||||
var numSelected = tree.selectedItems.length
|
var numSelected = tree.selectedItems.length
|
||||||
|
@ -252,12 +269,12 @@ function RemovePanel()
|
||||||
|
|
||||||
function Save()
|
function Save()
|
||||||
{
|
{
|
||||||
// Iterate through the 'selected-panels' tree to collect the panels
|
// Iterate through the 'current-panels' tree to collect the panels
|
||||||
// that the user has chosen. We need to do this _before_ we remove
|
// that the user has chosen. We need to do this _before_ we remove
|
||||||
// the panels from the datasource, because the act of removing them
|
// the panels from the datasource, because the act of removing them
|
||||||
// from the datasource will change the tree!
|
// from the datasource will change the tree!
|
||||||
var panels = new Array();
|
var panels = new Array();
|
||||||
var root = document.getElementById('selected-panels-root');
|
var root = document.getElementById('current-panels-root');
|
||||||
for (var node = root.firstChild; node != null; node = node.nextSibling) {
|
for (var node = root.firstChild; node != null; node = node.nextSibling) {
|
||||||
panels[panels.length] = node.getAttribute('id');
|
panels[panels.length] = node.getAttribute('id');
|
||||||
}
|
}
|
||||||
|
@ -290,7 +307,7 @@ function Save()
|
||||||
function otherPanelSelected(event, target)
|
function otherPanelSelected(event, target)
|
||||||
{
|
{
|
||||||
// Remove the selection in the "current" panels list
|
// Remove the selection in the "current" panels list
|
||||||
var current_panels = document.getElementById('selected-panels');
|
var current_panels = document.getElementById('current-panels');
|
||||||
current_panels.clearItemSelection();
|
current_panels.clearItemSelection();
|
||||||
enableButtons();
|
enableButtons();
|
||||||
|
|
||||||
|
@ -309,12 +326,12 @@ function enableOtherButtons()
|
||||||
{
|
{
|
||||||
var add_button = document.getElementById('add_button');
|
var add_button = document.getElementById('add_button');
|
||||||
var preview_button = document.getElementById('preview_button');
|
var preview_button = document.getElementById('preview_button');
|
||||||
var other_panels = document.getElementById('other-panels');
|
var all_panels = document.getElementById('other-panels');
|
||||||
|
|
||||||
var num_selected = 0;
|
var num_selected = 0;
|
||||||
// Only count non-folders as selected for button enabling
|
// Only count non-folders as selected for button enabling
|
||||||
for (var ii=0; ii<other_panels.selectedItems.length; ii++) {
|
for (var ii=0; ii<all_panels.selectedItems.length; ii++) {
|
||||||
var node = other_panels.selectedItems[ii];
|
var node = all_panels.selectedItems[ii];
|
||||||
if (node.getAttribute('container') != 'true') {
|
if (node.getAttribute('container') != 'true') {
|
||||||
num_selected++;
|
num_selected++;
|
||||||
}
|
}
|
||||||
|
@ -353,8 +370,8 @@ function AddPanel()
|
||||||
|
|
||||||
// Remove the selection in the other list.
|
// Remove the selection in the other list.
|
||||||
// Selection will move to "current" list.
|
// Selection will move to "current" list.
|
||||||
var other_panels = document.getElementById('other-panels');
|
var all_panels = document.getElementById('other-panels');
|
||||||
other_panels.clearItemSelection();
|
all_panels.clearItemSelection();
|
||||||
|
|
||||||
enableButtons();
|
enableButtons();
|
||||||
enableOtherButtons();
|
enableOtherButtons();
|
||||||
|
@ -391,7 +408,7 @@ function PreviewPanel()
|
||||||
|
|
||||||
function enableSave() {
|
function enableSave() {
|
||||||
debug("in enableSave()");
|
debug("in enableSave()");
|
||||||
var root = document.getElementById('selected-panels-root');
|
var root = document.getElementById('current-panels-root');
|
||||||
var panels = root.childNodes;
|
var panels = root.childNodes;
|
||||||
var list_unchanged = (panels.length == original_panels.length);
|
var list_unchanged = (panels.length == original_panels.length);
|
||||||
debug ("panels.length="+panels.length);
|
debug ("panels.length="+panels.length);
|
||||||
|
|
|
@ -32,8 +32,9 @@
|
||||||
windowtype="sidebar:customize"
|
windowtype="sidebar:customize"
|
||||||
align="vertical">
|
align="vertical">
|
||||||
|
|
||||||
<!-- Dialog title -->
|
|
||||||
<html:script src="chrome://sidebar/content/customize.js" />
|
<html:script src="chrome://sidebar/content/customize.js" />
|
||||||
|
|
||||||
|
<!-- Dialog title -->
|
||||||
<html:div class="title">
|
<html:div class="title">
|
||||||
&sidebar.customize.title.label;
|
&sidebar.customize.title.label;
|
||||||
</html:div>
|
</html:div>
|
||||||
|
@ -54,9 +55,7 @@
|
||||||
|
|
||||||
<html:div style="width:15em;height:15em" flex="1*">
|
<html:div style="width:15em;height:15em" flex="1*">
|
||||||
<tree id="other-panels" size="10"
|
<tree id="other-panels" size="10"
|
||||||
datasources="chrome://sidebar/content/local-panels.rdf
|
datasources="rdf:null"
|
||||||
chrome://sidebar/content/remote-panels.rdf"
|
|
||||||
ref="urn:sidebar:master-panel-list"
|
|
||||||
indent="true"
|
indent="true"
|
||||||
style="width:100%;height:100%">
|
style="width:100%;height:100%">
|
||||||
|
|
||||||
|
@ -104,9 +103,8 @@
|
||||||
|
|
||||||
<box align="horizontal" class="box-group" flex="1*">
|
<box align="horizontal" class="box-group" flex="1*">
|
||||||
<html:div style="width:15em;height:15em" flex="1*">
|
<html:div style="width:15em;height:15em" flex="1*">
|
||||||
<tree id="selected-panels" onclick="selectChange();"
|
<tree id="current-panels" onclick="selectChange();"
|
||||||
datasources="chrome://sidebar/content/local-panels.rdf
|
datasources="rdf:null"
|
||||||
chrome://sidebar/content/remote-panels.rdf"
|
|
||||||
style="width:100%;height:100%">
|
style="width:100%;height:100%">
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
|
@ -128,7 +126,7 @@
|
||||||
|
|
||||||
<!-- We explicitly create a 'treechildren' so we can refer
|
<!-- We explicitly create a 'treechildren' so we can refer
|
||||||
to it from the script -->
|
to it from the script -->
|
||||||
<treechildren id="selected-panels-root"/>
|
<treechildren id="current-panels-root"/>
|
||||||
</tree>
|
</tree>
|
||||||
</html:div>
|
</html:div>
|
||||||
|
|
||||||
|
|
|
@ -86,6 +86,7 @@ function getSidebarDatasourceURI(panels_file_id) {
|
||||||
function sidebarOverlayInit() {
|
function sidebarOverlayInit() {
|
||||||
sidebar.datasource_uri = getSidebarDatasourceURI(PANELS_RDF_FILE);
|
sidebar.datasource_uri = getSidebarDatasourceURI(PANELS_RDF_FILE);
|
||||||
sidebar.resource = 'urn:sidebar:current-panel-list';
|
sidebar.resource = 'urn:sidebar:current-panel-list';
|
||||||
|
sidebar.master_resource = 'urn:sidebar:master-panel-list';
|
||||||
|
|
||||||
// Initialize the display
|
// Initialize the display
|
||||||
var sidebar_element = document.getElementById('sidebar-box')
|
var sidebar_element = document.getElementById('sidebar-box')
|
||||||
|
@ -113,7 +114,7 @@ function sidebarOverlayInit() {
|
||||||
panels.database.AddObserver(panel_observer);
|
panels.database.AddObserver(panel_observer);
|
||||||
|
|
||||||
// XXX This is a hack to force re-display
|
// XXX This is a hack to force re-display
|
||||||
panels.setAttribute('ref', 'urn:sidebar:current-panel-list');
|
panels.setAttribute('ref', sidebar.resource);
|
||||||
|
|
||||||
sidebarOpenDefaultPanel(100, 0);
|
sidebarOpenDefaultPanel(100, 0);
|
||||||
}
|
}
|
||||||
|
@ -185,7 +186,6 @@ function enableCustomize() {
|
||||||
|
|
||||||
function sidebarCustomize() {
|
function sidebarCustomize() {
|
||||||
// Use a single sidebar customize dialog
|
// Use a single sidebar customize dialog
|
||||||
|
|
||||||
var cwindowManager = Components.classes['component://netscape/rdf/datasource?name=window-mediator'].getService();
|
var cwindowManager = Components.classes['component://netscape/rdf/datasource?name=window-mediator'].getService();
|
||||||
var iwindowManager = Components.interfaces.nsIWindowMediator;
|
var iwindowManager = Components.interfaces.nsIWindowMediator;
|
||||||
var windowManager = cwindowManager.QueryInterface(iwindowManager);
|
var windowManager = cwindowManager.QueryInterface(iwindowManager);
|
||||||
|
@ -198,19 +198,21 @@ function sidebarCustomize() {
|
||||||
} else {
|
} else {
|
||||||
debug("Open a new customize dialog");
|
debug("Open a new customize dialog");
|
||||||
|
|
||||||
if (true == gDisableCustomize) {
|
if (false == gDisableCustomize) {
|
||||||
debug("Recently opened one. Wait a little bit.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
gDisableCustomize = true;
|
gDisableCustomize = true;
|
||||||
|
|
||||||
|
var panels = document.getElementById('sidebar-panels');
|
||||||
|
var datasources = panels.getAttribute('datasources');
|
||||||
|
|
||||||
customizeWindow = window.openDialog(
|
customizeWindow = window.openDialog(
|
||||||
'chrome://sidebar/content/customize.xul',
|
'chrome://sidebar/content/customize.xul',
|
||||||
'_blank','chrome',
|
'_blank','chrome',
|
||||||
|
datasources, sidebar.master_resource,
|
||||||
sidebar.datasource_uri, sidebar.resource);
|
sidebar.datasource_uri, sidebar.resource);
|
||||||
setTimeout(enableCustomize, 2000);
|
setTimeout(enableCustomize, 2000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function sidebarShowHide() {
|
function sidebarShowHide() {
|
||||||
var sidebar = document.getElementById('sidebar-box')
|
var sidebar = document.getElementById('sidebar-box')
|
||||||
|
@ -232,50 +234,5 @@ function sidebarShowHide() {
|
||||||
document.persist('sidebar-box', 'width');
|
document.persist('sidebar-box', 'width');
|
||||||
}
|
}
|
||||||
|
|
||||||
function dumpAttributes(node) {
|
|
||||||
var attributes = node.attributes
|
|
||||||
|
|
||||||
if (!attributes || attributes.length == 0) {
|
|
||||||
debug("no attributes")
|
|
||||||
}
|
|
||||||
for (var ii=0; ii < attributes.length; ii++) {
|
|
||||||
var attr = attributes.item(ii)
|
|
||||||
debug("attr "+ii+": "+ attr.name +"="+attr.value)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function dumpStats() {
|
|
||||||
var box = document.getElementById('sidebar-box');
|
|
||||||
var splitter = document.getElementById('sidebar-splitter');
|
|
||||||
var style = box.getAttribute('style')
|
|
||||||
|
|
||||||
var visibility = style.match('visibility:([^;]*)')
|
|
||||||
if (visibility) {
|
|
||||||
visibility = visibility[1]
|
|
||||||
}
|
|
||||||
debug("sidebar-box.style="+style)
|
|
||||||
debug("sidebar-box.visibility="+visibility)
|
|
||||||
debug('sidebar-box.width='+box.getAttribute('width'))
|
|
||||||
debug('sidebar-box attrs\n---------------------')
|
|
||||||
dumpAttributes(box)
|
|
||||||
debug('sidebar-splitter attrs\n--------------------------')
|
|
||||||
dumpAttributes(splitter)
|
|
||||||
}
|
|
||||||
|
|
||||||
function dumpTree(node, depth) {
|
|
||||||
var indent = "| | | | | | | | | | | | | | | | | | | | | | | | | | | | | + "
|
|
||||||
var kids = node.childNodes
|
|
||||||
debug(indent.substr(indent.length - depth*2))
|
|
||||||
|
|
||||||
// Print your favorite attributes here
|
|
||||||
debug(node.nodeName)
|
|
||||||
debug(" "+node.getAttribute('id'))
|
|
||||||
debug("")
|
|
||||||
|
|
||||||
for (var ii=0; ii < kids.length; ii++) {
|
|
||||||
dumpTree(kids[ii], depth + 1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Install our load handler
|
// Install our load handler
|
||||||
addEventListener("load", sidebarOverlayInit, false);
|
addEventListener("load", sidebarOverlayInit, false);
|
||||||
|
|
|
@ -61,7 +61,7 @@
|
||||||
|
|
||||||
<!-- Splitter on the right of sidebar -->
|
<!-- Splitter on the right of sidebar -->
|
||||||
<splitter id="sidebar-splitter" collapse="before" persist="state hidden"
|
<splitter id="sidebar-splitter" collapse="before" persist="state hidden"
|
||||||
chromeclass="extrachrome" onclick="dumpStats();">
|
chromeclass="extrachrome">
|
||||||
<box id="topright-cap" align="vertical">
|
<box id="topright-cap" align="vertical">
|
||||||
<spring flex="100%"/>
|
<spring flex="100%"/>
|
||||||
</box>
|
</box>
|
||||||
|
|
Загрузка…
Ссылка в новой задаче