www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

commit 211d5f3b628ab700a923472330005a491656398b
parent ef2b912339d521eaa5293d4803309bb2ad3c5dde
Author: Dan Stillman <dstillman@zotero.org>
Date:   Sat, 30 May 2009 08:13:04 +0000

- Double-clicking an item now takes you to its associated web page if there is a URL or DOI value

The tree expand/collapse behavior still happens concurrently, which is a little awkward.

- Double-clicking a group no longer expands/collapses the group while taking you to the group page



Diffstat:
Mchrome/content/zotero/overlay.js | 101+++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------
Mchrome/content/zotero/overlay.xul | 2--
2 files changed, 66 insertions(+), 37 deletions(-)

diff --git a/chrome/content/zotero/overlay.js b/chrome/content/zotero/overlay.js @@ -67,7 +67,6 @@ var ZoteroPane = new function() this.getSortField = getSortField; this.getSortDirection = getSortDirection; this.buildItemContextMenu = buildItemContextMenu; - this.onDoubleClick = onDoubleClick; this.loadURI = loadURI; this.setItemsPaneMessage = setItemsPaneMessage; this.clearItemsPaneMessage = clearItemsPaneMessage; @@ -146,9 +145,11 @@ var ZoteroPane = new function() var collectionsTree = document.getElementById('zotero-collections-tree'); collectionsTree.view = this.collectionsView; collectionsTree.controllers.appendController(new Zotero.CollectionTreeCommandController(collectionsTree)); + collectionsTree.addEventListener("click", ZoteroPane.onTreeClick, true); var itemsTree = document.getElementById('zotero-items-tree'); itemsTree.controllers.appendController(new Zotero.ItemTreeCommandController(itemsTree)); + itemsTree.addEventListener("click", ZoteroPane.onTreeClick, true); // Create the New Item (+) menu with each item type var addMenu = document.getElementById('zotero-tb-add').firstChild; @@ -1861,45 +1862,75 @@ var ZoteroPane = new function() // Adapted from: http://www.xulplanet.com/references/elemref/ref_tree.html#cmnote-9 - function onDoubleClick(event, tree) - { - if (event && tree && event.type == "dblclick") { - var row = {}, col = {}, obj = {}; - tree.treeBoxObject.getCellAt(event.clientX, event.clientY, row, col, obj); - - // obj.value == 'cell'/'text'/'image' - if (!obj.value) { - return; + this.onTreeClick = function (event) { + // We only care about primary button double-clicks + if (!event || event.detail != 2 || event.button != 0) { + return; + } + + var t = event.originalTarget; + + if (t.localName != 'treechildren') { + return; + } + + var tree = t.parentNode; + + var row = {}, col = {}, obj = {}; + tree.treeBoxObject.getCellAt(event.clientX, event.clientY, row, col, obj); + + // obj.value == 'cell'/'text'/'image' + if (!obj.value) { + return; + } + + if (tree.id == 'zotero-collections-tree') { + var itemGroup = ZoteroPane.collectionsView._getItemAtRow(ZoteroPane.collectionsView.selection.currentIndex); + if (itemGroup.isSearch()) { + ZoteroPane.editSelectedCollection(); } - - if (tree.id == 'zotero-collections-tree') { - var itemGroup = this.collectionsView._getItemAtRow(this.collectionsView.selection.currentIndex); - if (itemGroup.isSearch()) { - this.editSelectedCollection(); - } - else if (itemGroup.isGroup()) { - var uri = Zotero.URI.getGroupURI(itemGroup.ref, true); - window.loadURI(uri); - } - else if (itemGroup.isHeader()) { - if (itemGroup.ref.id == 'group-libraries-header') { - var uri = Zotero.URI.getGroupsURL(); - window.loadURI(uri); - } - } + else if (itemGroup.isGroup()) { + var uri = Zotero.URI.getGroupURI(itemGroup.ref, true); + ZoteroPane.loadURI(uri, event); + event.stopPropagation(); } - else if (tree.id == 'zotero-items-tree') { - if (!this.collectionsView.editable) { - return; + else if (itemGroup.isHeader()) { + if (itemGroup.ref.id == 'group-libraries-header') { + var uri = Zotero.URI.getGroupsURL(); + ZoteroPane.loadURI(uri, event); + event.stopPropagation(); } - - if (this.itemsView && this.itemsView.selection.currentIndex > -1) { - var item = this.getSelectedItems()[0]; - if (item && item.isNote()) { + } + } + else if (tree.id == 'zotero-items-tree') { + if (ZoteroPane.itemsView && ZoteroPane.itemsView.selection.currentIndex > -1) { + var item = ZoteroPane.getSelectedItems()[0]; + if (item) { + if (item.isRegularItem()) { + var uri = item.getField('url'); + if (!uri) { + var doi = item.getField('DOI'); + if (doi) { + // Pull out DOI, in case there's a prefix + doi = doi.match(/10\..*/); + if (doi) { + uri = "http://dx.doi.org/" + encodeURIComponent(doi); + } + } + } + if (uri) { + ZoteroPane.loadURI(uri, event); + //event.stopPropagation(); + } + } + else if (item.isNote()) { + if (!ZoteroPane.collectionsView.editable) { + return; + } document.getElementById('zotero-view-note-button').doCommand(); } - else if (item && item.isAttachment()) { - this.viewSelectedAttachment(event); + else if (item.isAttachment()) { + ZoteroPane.viewSelectedAttachment(event); } } } diff --git a/chrome/content/zotero/overlay.xul b/chrome/content/zotero/overlay.xul @@ -154,7 +154,6 @@ </hbox> <tree id="zotero-collections-tree" hidecolumnpicker="true" context="zotero-collectionmenu" onmouseover="ZoteroPane.collectionsView.setHighlightedRows();" - ondblclick="ZoteroPane.onDoubleClick(event, this);" onkeypress="ZoteroPane.handleKeyPress(event, this.id)" onselect="ZoteroPane.onCollectionSelected();" seltype="cell" ondraggesture="if (event.target.localName == 'treechildren') { ZoteroPane.startDrag(event, ZoteroPane.collectionsView); }" @@ -218,7 +217,6 @@ <deck id="zotero-items-pane-content" selectedIndex="0" flex="1"> <tree id="zotero-items-tree" context="zotero-itemmenu" - ondblclick="ZoteroPane.onDoubleClick(event, this);" enableColumnDrag="true" onfocus="if (ZoteroPane.itemsView.rowCount &amp;&amp; !ZoteroPane.itemsView.selection.count) { ZoteroPane.itemsView.selection.select(0); }" onkeypress="ZoteroPane.handleKeyPress(event, this.id)"