mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-13 05:15:45 +00:00
315940 - hack in dynamic updating for tree views. NPOB
This commit is contained in:
parent
424cabce67
commit
ae320f0df3
@ -2,3 +2,6 @@
|
||||
-moz-binding: url("chrome://browser/content/places/toolbar.xml#places-bar");
|
||||
}
|
||||
|
||||
menupopup[type="places"] {
|
||||
-moz-binding: url("chrome://browser/content/places/menu.xml#places-menupopup");
|
||||
}
|
||||
|
@ -37,8 +37,17 @@
|
||||
item = item.parent;
|
||||
item.QueryInterface(Ci.nsIInterfaceRequestor);
|
||||
this._browserWindow = item.getInterface(Ci.nsIDOMWindowInternal);
|
||||
|
||||
this._bms =
|
||||
Cc["@mozilla.org/browser/nav-bookmarks-service;1"].
|
||||
getService(Ci.nsINavBookmarksService);
|
||||
this._bms.addObserver(this._bookmarkObserver);
|
||||
]]></constructor>
|
||||
|
||||
<destructor><![CDATA[
|
||||
this._bms.removeObserver(this._bookmarkObserver);
|
||||
]]></destructor>
|
||||
|
||||
<method name="_fireEvent">
|
||||
<parameter name="name"/>
|
||||
<body><![CDATA[
|
||||
@ -151,13 +160,11 @@
|
||||
<parameter name="folderId"/>
|
||||
<parameter name="filterOptions"/>
|
||||
<body><![CDATA[
|
||||
var bms =
|
||||
Cc["@mozilla.org/browser/nav-bookmarks-service;1"].
|
||||
getService(Ci.nsINavBookmarksService);
|
||||
var filterOptions = filterOptions || bms.ALL_CHILDREN;
|
||||
var result = bms.getFolderChildren(folderId, filterOptions);
|
||||
var filterOptions = filterOptions || this._bms.ALL_CHILDREN;
|
||||
var result = this._bms.getFolderChildren(folderId, filterOptions);
|
||||
result.QueryInterface(Ci.nsITreeView);
|
||||
this.view = result;
|
||||
this._lastFilterOptions = filterOptions;
|
||||
this._fireEvent("reloaded");
|
||||
]]></body>
|
||||
</method>
|
||||
@ -412,6 +419,56 @@
|
||||
})
|
||||
]]></field>
|
||||
|
||||
<method name="_reloadView">
|
||||
<body><![CDATA[
|
||||
var result = this.getResult();
|
||||
if (PlacesController.nodeIsFolder(result))
|
||||
this.loadFolder(result.folderId, this._lastFilterOptions);
|
||||
else
|
||||
this.load(result.getSourceQueries({ }), result.sourceQueryOptions);
|
||||
]]></body>
|
||||
</method>
|
||||
|
||||
<!-- nsINavBookmarkObserver -->
|
||||
<field name="_bookmarkObserver"><![CDATA[({
|
||||
_numBatches: 0,
|
||||
_self: this,
|
||||
onBeginUpdateBatch: function PT_O_onBeginUpdateBatch() {
|
||||
++this._numBatches;
|
||||
},
|
||||
onEndUpdateBatch: function PT_O_onEndUpdateBatch() {
|
||||
if (!--this._numBatches)
|
||||
this._self._reloadView();
|
||||
},
|
||||
get wantAllDetails() {
|
||||
return false;
|
||||
},
|
||||
onItemAdded: function PT_O_onItemAdded(bookmark, folder, index) {
|
||||
this._self._reloadView();
|
||||
},
|
||||
onItemRemoved: function PT_O_onItemRemoved(bookmark, folder, index) {
|
||||
this._self._reloadView();
|
||||
},
|
||||
onItemMoved: function PT_O_onItemMoved(bookmark, folder, oldIndex, newIndex) {
|
||||
this._self._reloadView();
|
||||
},
|
||||
onItemChanged: function PT_O_onItemChanged(bookmark, property) {
|
||||
this._self._reloadView();
|
||||
},
|
||||
onFolderAdded: function PT_O_onFolderAdded(folder, parent, index) {
|
||||
this._self._reloadView();
|
||||
},
|
||||
onFolderRemoved: function PT_O_onFolderRemoved(folder, parent, index) {
|
||||
this._self._reloadView();
|
||||
},
|
||||
onFolderMoved: function PT_O_onFolderMoved(folder, oldParent, oldIndex, newParent, newIndex) {
|
||||
this._self._reloadView();
|
||||
},
|
||||
onFolderChanged: function PT_O_onFolderChanged(folder, property) {
|
||||
this._self._reloadView();
|
||||
},
|
||||
})]]></field>
|
||||
|
||||
</implementation>
|
||||
<handlers>
|
||||
<handler event="focus"><![CDATA[
|
||||
|
@ -7,7 +7,7 @@
|
||||
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||
|
||||
<binding id="places-bar">
|
||||
<implementation implements="nsINavBookmarkObserver">
|
||||
<implementation>
|
||||
<constructor><![CDATA[
|
||||
this._places =
|
||||
Cc["@mozilla.org/browser/nav-history;1"].
|
||||
@ -55,8 +55,12 @@
|
||||
if (PlacesController.nodeIsURL(child))
|
||||
button.setAttribute("url", child.url)
|
||||
else if (PlacesController.nodeIsFolder(child)) {
|
||||
button.setAttribute("folder-id", child.folderId);
|
||||
button.setAttribute("type", "menu");
|
||||
button.setAttribute("container", "true");
|
||||
var popup = document.createElementNS(XULNS, "menupopup");
|
||||
popup.setAttribute("type", "places");
|
||||
button.appendChild(popup);
|
||||
popup.folderId = child.folderId;
|
||||
}
|
||||
button.className = "bookmark-item";
|
||||
button.node = child;
|
||||
|
@ -5,6 +5,7 @@ browser.jar:
|
||||
content/browser/places/places.xml (content/places.xml)
|
||||
content/browser/places/places.css (content/places.css)
|
||||
content/browser/places/toolbar.xml (content/toolbar.xml)
|
||||
content/browser/places/menu.xml (content/menu.xml)
|
||||
content/browser/places/controller.js (content/controller.js)
|
||||
content/browser/places/browserShim.js (content-shim/browserShim.js)
|
||||
* content/browser/places/browserShim.xul (content-shim/browserShim.xul)
|
||||
|
Loading…
Reference in New Issue
Block a user