Bug 128629 -- speed up personal toolbar a bit. Patch by

neil@parkwaycc.co.uk, r=pierrechanial@netscape.net, sr=ben
This commit is contained in:
bzbarsky%mit.edu 2002-07-09 08:30:09 +00:00
parent a288b8e184
commit 328b5f5978
6 changed files with 36 additions and 49 deletions

View File

@ -496,7 +496,7 @@ function LoadBookmarksCallback()
.getService(Components.interfaces.nsIBookmarksService);
gBookmarksService.ReadBookmarks();
// tickle personal toolbar to load personal toolbar items
var personalToolbar = document.getElementById("innermostBox");
var personalToolbar = document.getElementById("NC:PersonalToolbarFolder");
personalToolbar.builder.rebuild();
} catch (e) {
}

View File

@ -242,7 +242,6 @@ Contributor(s):
<toolbar id="PersonalToolbar" class="chromeclass-directories" persist="collapsed"
grippytooltiptext="&personalToolbar.tooltip;" tbalign="stretch"
oncommand="OpenBookmarkURL(event.target,document.getElementById('BookmarksMenu').database)"
ondraggesture="nsDragAndDrop.startDrag(event, personalToolbarDNDObserver)"
ondragdrop="nsDragAndDrop.drop(event, personalToolbarDNDObserver); event.preventBubble()"
ondragenter="nsDragAndDrop.dragEnter(event, personalToolbarDNDObserver); event.preventBubble()"
@ -265,6 +264,7 @@ Contributor(s):
persist="hidden" label="&bookmarksButton.label;"
datasources="rdf:bookmarks rdf:files rdf:localsearch rdf:internetsearch"
ref="NC:BookmarksRoot" container="true" flags="dont-test-empty"
oncommand="OpenBookmarkURL(event.target, this.database)"
template="bookmarksMenuTemplate"
ondraggesture="if (event.target.id=='bookmarks-button') event.preventBubble()">
<menupopup onpopupshowing="checkBookmarksMenuTemplateBuilder(); updateGroupmarkMenuitem('PT_bookmarks_groupmark');">
@ -278,9 +278,10 @@ Contributor(s):
</toolbarbutton>
<!-- Personal toolbar items -->
<hbox id="innermostBox" flex="1" style="min-width: 1px;" context="bmContext"
<hbox id="NC:PersonalToolbarFolder" flex="1" style="min-width: 1px;" context="bmContext"
datasources="rdf:bookmarks rdf:files rdf:localsearch rdf:internetsearch"
ref="NC:PersonalToolbarFolder" flags="dont-test-empty"
oncommand="OpenBookmarkURL(event.target, this.database)"
rdf:type="http://home.netscape.com/NC-rdf#Folder">
<tooltip id="ptTooltip" noautohide="true" onpopupshowing="return FillInPTTooltip(document.tooltipNode)">
<vbox id="ptTooltipTextBox" flex="1">

View File

@ -252,7 +252,7 @@ var personalToolbarDNDObserver = {
return;
//PCH: cleanup needed here, url is already calculated in isBookmark()
var db = document.getElementById("innermostBox").database;
var db = document.getElementById("NC:PersonalToolbarFolder").database;
var url = RDFUtils.getTarget(db, uri, NC_RDF("URL"));
if (url)
url = url.QueryInterface(Components.interfaces.nsIRDFLiteral).Value;
@ -323,7 +323,7 @@ var personalToolbarDNDObserver = {
return;
var elementRes = RDFUtils.getResource(xferData[0]);
var childDB = document.getElementById("innermostBox").database;
var childDB = document.getElementById("NC:PersonalToolbarFolder").database;
var rdfContainer = Components.classes["@mozilla.org/rdf/container;1"].createInstance(Components.interfaces.nsIRDFContainer);
// if dragged url is already bookmarked, remove it from current location first
@ -362,8 +362,6 @@ var personalToolbarDNDObserver = {
if (aEvent.target.id == "bookmarks-button")
// dropPosition is always DROP_ON
parentContainer = RDFUtils.getResource("NC:BookmarksRoot");
else if (aEvent.target.id == "innermostBox")
parentContainer = RDFUtils.getResource("NC:PersonalToolbarFolder");
else if (dropPosition == this.DROP_ON)
parentContainer = RDFUtils.getResource(aEvent.target.id);
else {
@ -431,7 +429,7 @@ var personalToolbarDNDObserver = {
{
var children = aNode.childNodes;
for (var i = 0; i < children.length; i++) {
if (children[i].id == "innermostBox") {
if (children[i].id == "NC:PersonalToolbarFolder") {
this.onDragCloseMenu(children[i]);
}
else if (this.isContainer(children[i]) && children[i].getAttribute("open") == "true") {
@ -450,7 +448,7 @@ var personalToolbarDNDObserver = {
return
}
// The bookmark button is not a sibling of the folders in the PT
if (this.mCurrentDragOverTarget.parentNode.id == "innermostBox")
if (this.mCurrentDragOverTarget.parentNode.id == "NC:PersonalToolbarFolder")
this.onDragCloseMenu(document.getElementById("PersonalToolbar"));
else
this.onDragCloseMenu(this.mCurrentDragOverTarget.parentNode);
@ -642,7 +640,7 @@ var personalToolbarDNDObserver = {
{
if (!aURI)
return false;
var db = document.getElementById("innermostBox").database;
var db = document.getElementById("NC:PersonalToolbarFolder").database;
var typeValue = RDFUtils.getTarget(db, aURI, _RDF("type"));
typeValue = RDFUtils.getValueFromResource(typeValue);
return (typeValue == NC_RDF("BookmarkSeparator") ||

View File

@ -297,7 +297,7 @@
<menu id="BookmarksMenu" label="&bookmarksMenu.label;" accesskey="&bookmarksMenu.accesskey;"
datasources="rdf:bookmarks rdf:files rdf:localsearch rdf:internetsearch"
ref="NC:BookmarksRoot" flags="dont-test-empty" template="bookmarksMenuTemplate"
oncommand="OpenBookmarkURL(event.target, document.getElementById('BookmarksMenu').database)">
oncommand="OpenBookmarkURL(event.target, this.database)">
<template id="bookmarksMenuTemplate" xmlns:nc="http://home.netscape.com/NC-rdf#">
<rule nc:FolderGroup="true" iscontainer="true">
<menupopup>

View File

@ -120,9 +120,7 @@ BookmarksToolbar.prototype = {
// needs to be modified in the datasource.
postModifyCallback: function (aParams)
{
var aShell = aParams[0];
var selItemURI = NODE_ID(aParams[1]);
aShell.propertySet(selItemURI, aParams[2], aParams[3]);
aParams[0].propertySet(aParams[1].id, aParams[2], aParams[3]);
},
///////////////////////////////////////////////////////////////////////////
@ -151,12 +149,12 @@ BookmarksToolbar.prototype = {
var parentNode = relativeNode ? gBookmarksShell.findRDFNode(relativeNode, false) : gBookmarksShell.element;
var args = [{ property: NC_NS + "parent",
resource: NODE_ID(parentNode) },
resource: parentNode.id },
{ property: NC_NS + "Name",
literal: stringValue.value }];
const kBMDS = gBookmarksShell.RDF.GetDataSource("rdf:bookmarks");
var relId = relativeNode ? NODE_ID(relativeNode) : "NC:PersonalToolbarFolder";
var relId = relativeNode ? relativeNode.id : "NC:PersonalToolbarFolder";
BookmarksUtils.doBookmarksCommand(relId, NC_NS_CMD + "newfolder", args);
}
@ -213,12 +211,11 @@ BookmarksToolbar.prototype = {
}
var args = [{ property: NC_NS + "parent",
resource: NODE_ID(parentNode) },
resource: parentNode.id },
{ property: NC_NS + "Name",
literal: name }];
BookmarksUtils.doBookmarksCommand(NODE_ID(relativeNode),
NC_NS_CMD + "newfolder", args);
BookmarksUtils.doBookmarksCommand(relativeNode.id, NC_NS_CMD + "newfolder", args);
// We need to do this because somehow focus shifts and no commands
// operate any more.
//gBookmarksShell._focusElt.focus();
@ -388,7 +385,7 @@ BookmarksToolbar.prototype = {
case "cmd_bm_cut":
case "cmd_bm_copy":
case "cmd_bm_delete":
return (document.popupNode != null) && (NODE_ID(document.popupNode) != "NC:PersonalToolbarFolder");
return document.popupNode && document.popupNode.id != "NC:PersonalToolbarFolder";
case "cmd_bm_selectAll":
return false;
case "cmd_bm_open":
@ -413,17 +410,17 @@ BookmarksToolbar.prototype = {
seln = gBookmarksShell.getSelection();
if (!seln.length) return false;
var folderType = seln[0].getAttributeNS(RDF_NS, "type") == (NC_NS + "Folder");
return document.popupNode != null && !(NODE_ID(seln[0]) == "NC:NewBookmarkFolder") && folderType;
return document.popupNode && seln[0].id != "NC:NewBookmarkFolder" && folderType;
case "cmd_bm_setpersonaltoolbarfolder":
seln = gBookmarksShell.getSelection();
if (!seln.length) return false;
folderType = seln[0].getAttributeNS(RDF_NS, "type") == (NC_NS + "Folder");
return document.popupNode != null && !(NODE_ID(seln[0]) == "NC:PersonalToolbarFolder") && folderType;
return document.popupNode && seln[0].id != "NC:PersonalToolbarFolder" && folderType;
case "cmd_bm_setnewsearchfolder":
seln = gBookmarksShell.getSelection();
if (!seln.length) return false;
folderType = seln[0].getAttributeNS(RDF_NS, "type") == (NC_NS + "Folder");
return document.popupNode != null && !(NODE_ID(seln[0]) == "NC:NewSearchFolder") && folderType;
return document.popupNode && seln[0].id != "NC:NewSearchFolder" && folderType;
case "cmd_bm_fileBookmark":
seln = gBookmarksShell.getSelection();
return seln.length > 0;
@ -477,7 +474,7 @@ BookmarksToolbar.prototype = {
function BM_navigatorLoad(aEvent)
{
if (!gBookmarksShell) {
gBookmarksShell = new BookmarksToolbar("innermostBox");
gBookmarksShell = new BookmarksToolbar("NC:PersonalToolbarFolder");
controllers.appendController(gBookmarksShell.controller);
removeEventListener("load", BM_navigatorLoad, false);
}

View File

@ -62,15 +62,10 @@ const NC_NS_CMD = NC_NS + "command?cmd=";
* and I WILL come after you with a knife.
*/
function NODE_ID (aElement)
{
return aElement.getAttribute("ref") || aElement.id;
}
function LITERAL (aDB, aElement, aPropertyID)
{
var RDF = BookmarksUIElement.prototype.RDF;
var rSource = RDF.GetResource(NODE_ID(aElement));
var rSource = RDF.GetResource(aElement.id);
var rProperty = RDF.GetResource(aPropertyID);
var node = aDB.GetTarget(rSource, rProperty, true);
return node ? node.QueryInterface(Components.interfaces.nsIRDFLiteral).Value : "";
@ -134,8 +129,7 @@ BookmarksUIElement.prototype = {
var selection = this.getContextSelection (itemNode);
var commonCommands = [];
for (var i = 0; i < selection.length; ++i) {
var nodeURI = NODE_ID(selection[i]);
var commands = this.getAllCmds(nodeURI);
var commands = this.getAllCmds(selection[i].id);
if (!commands) {
aEvent.preventDefault();
return;
@ -333,8 +327,7 @@ BookmarksUIElement.prototype = {
case "bm_setnewbookmarkfolder":
case "bm_setpersonaltoolbarfolder":
case "bm_setnewsearchfolder":
BookmarksUtils.doBookmarksCommand(NODE_ID(selectedItem),
NC_NS_CMD + aCommandID, args);
BookmarksUtils.doBookmarksCommand(selectedItem.id, NC_NS_CMD + aCommandID, args);
// XXX - The containing node seems to be closed here and the
// focus/selection is destroyed.
this.selectElement(selectedItem);
@ -364,16 +357,16 @@ BookmarksUIElement.prototype = {
"centerscreen,chrome,modal=yes,dialog=yes,resizable=yes", null, null, folder, null, "selectFolder", rv);
if (rv.selectedFolder) {
for (var k = 0; k < selection.length; ++k) {
if (NODE_ID(selection[k]) == rv.selectedFolder)
if (selection[k].id == rv.selectedFolder)
return; // Selection contains the target folder. Just fail silently.
}
var additiveFlag = false;
var selectedItems = [].concat(this.getSelection())
for (var i = 0; i < selectedItems.length; ++i) {
var currItem = selectedItems[i];
var currURI = NODE_ID(currItem);
var currURI = currItem.id;
var parent = gBookmarksShell.findRDFNode(currItem, false);
gBookmarksShell.moveBookmark(currURI, NODE_ID(parent), rv.selectedFolder);
gBookmarksShell.moveBookmark(currURI, parent.id, rv.selectedFolder);
gBookmarksShell.selectFolderItem(rv.selectedFolder, currURI, additiveFlag);
if (!additiveFlag) additiveFlag = true;
}
@ -393,9 +386,8 @@ BookmarksUIElement.prototype = {
nfseln = this.getBestItem();
var parentNode = this.findRDFNode(nfseln, false);
args = [{ property: NC_NS + "parent",
resource: NODE_ID(parentNode) }];
BookmarksUtils.doBookmarksCommand(NODE_ID(nfseln),
NC_NS_CMD + "newseparator", args);
resource: parentNode.id }];
BookmarksUtils.doBookmarksCommand(nfseln.id, NC_NS_CMD + "newseparator", args);
break;
case "bm_import":
case "bm_export":
@ -420,7 +412,7 @@ BookmarksUIElement.prototype = {
}
var seln = this.getBestItem();
args = [{ property: NC_NS + "URL", literal: fileName}];
BookmarksUtils.doBookmarksCommand(NODE_ID(seln), NC_NS_CMD + aCommandID, args);
BookmarksUtils.doBookmarksCommand(seln.id, NC_NS_CMD + aCommandID, args);
break;
}
},
@ -428,7 +420,7 @@ BookmarksUIElement.prototype = {
openFolderInNewWindow: function (aSelectedItem)
{
openDialog("chrome://communicator/content/bookmarks/bookmarks.xul",
"", "chrome,all,dialog=no", NODE_ID(aSelectedItem));
"", "chrome,all,dialog=no", aSelectedItem.id);
},
copySelection: function (aSelection)
@ -447,7 +439,7 @@ BookmarksUIElement.prototype = {
for (var i = 0; i < aSelection.length; ++i) {
var url = LITERAL(this.db, aSelection[i], NC_NS + "URL");
var name = LITERAL(this.db, aSelection[i], NC_NS + "Name");
sBookmarkItem += NODE_ID(aSelection[i]) + "\n";
sBookmarkItem += aSelection[i].id + "\n";
sTextUnicode += url + "\n";
sTextHTML += "<A HREF=\"" + url + "\">" + name + "</A>";
}
@ -509,8 +501,8 @@ BookmarksUIElement.prototype = {
const lastSelected = aSelection[aSelection.length-1];
const kParentNode = this.resolvePasteFolder(aSelection);
const krParent = this.RDF.GetResource(NODE_ID(kParentNode));
const krSource = this.RDF.GetResource(NODE_ID(lastSelected));
const krParent = this.RDF.GetResource(kParentNode.id);
const krSource = this.RDF.GetResource(lastSelected.id);
const kRDFCContractID = "@mozilla.org/rdf/container;1";
const kRDFCIID = Components.interfaces.nsIRDFContainer;
@ -616,7 +608,7 @@ BookmarksUIElement.prototype = {
var selectionLength = aSelection.length;
while (aSelection.length && aSelection[count]) {
const currParent = this.findRDFNode(aSelection[count], false);
const kSelectionURI = NODE_ID(aSelection[count]);
const kSelectionURI = aSelection[count].id;
// Disallow the removal of certain 'special' nodes
if (kSelectionURI == "NC:BookmarksRoot") {
@ -634,7 +626,7 @@ BookmarksUIElement.prototype = {
kPrefSvc.setBoolPref("browser.bookmarks.import_system_favorites", false);
}
const krParent = this.RDF.GetResource(NODE_ID(currParent));
const krParent = this.RDF.GetResource(currParent.id);
const krBookmark = this.RDF.GetResource(kSelectionURI);
const kBMDS = this.RDF.GetDataSource("rdf:bookmarks");
@ -693,8 +685,7 @@ BookmarksUIElement.prototype = {
{
if (aBookmarkItem.getAttribute("type") != NC_NS + "BookmarkSeparator")
openDialog("chrome://communicator/content/bookmarks/bm-props.xul",
"", "centerscreen,chrome,resizable=no",
NODE_ID(aBookmarkItem));
"", "centerscreen,chrome,resizable=no", aBookmarkItem.id);
},
findInBookmarks: function ()