diff --git a/mozilla/suite/common/bookmarks/bookmarks.js b/mozilla/suite/common/bookmarks/bookmarks.js index 06108c51f98..add4f31c126 100644 --- a/mozilla/suite/common/bookmarks/bookmarks.js +++ b/mozilla/suite/common/bookmarks/bookmarks.js @@ -207,7 +207,81 @@ function fillContextMenu(name) function doContextCmd(cmdName) { - dump("doContextCmd: cmd='" + cmdName + "'\n"); + dump("doContextCmd start: cmd='" + cmdName + "'\n"); + + var treeNode = document.getElementById("bookmarksTree"); + if (!treeNode) return(false); + var db = treeNode.database; + if (!db) return(false); + + var compositeDB = db.QueryInterface(Components.interfaces.nsIRDFDataSource); + if (!compositeDB) return(false); + + var isupports = Components.classes["component://netscape/rdf/rdf-service"].getService(); + if (!isupports) return(false); + var rdf = isupports.QueryInterface(Components.interfaces.nsIRDFService); + if (!rdf) return(false); + + // need a resource for the command + var cmdResource = rdf.GetResource(cmdName); + if (!cmdResource) return(false); + cmdResource = cmdResource.QueryInterface(Components.interfaces.nsIRDFResource); + if (!cmdResource) return(false); + + var select_list = treeNode.getElementsByAttribute("selected", "true"); + if (select_list.length < 1) return(false); + + dump("# of Nodes selected: " + select_list.length + "\n\n"); + + // build up selection nsISupportsArray + var selectionInstance = Components.classes["component://netscape/supports-array"].createInstance(); + if (!selectionInstance) + { + dump("unable to create selectionInstance.\n"); + return(false); + } + var selectionArray = selectionInstance.QueryInterface(Components.interfaces.nsISupportsArray); + if (!selectionArray) + { + dump("unable to QI to selectionArray.\n"); + return(false); + } + + for (var nodeIndex=0; nodeIndex