www

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

zoteroPane.xul (36613B)


      1 <?xml version="1.0"?>
      2 <!--
      3     ***** BEGIN LICENSE BLOCK *****
      4     
      5     Copyright © 2009 Center for History and New Media
      6                      George Mason University, Fairfax, Virginia, USA
      7                      http://zotero.org
      8     
      9     This file is part of Zotero.
     10     
     11     Zotero is free software: you can redistribute it and/or modify
     12     it under the terms of the GNU Affero General Public License as published by
     13     the Free Software Foundation, either version 3 of the License, or
     14     (at your option) any later version.
     15     
     16     Zotero is distributed in the hope that it will be useful,
     17     but WITHOUT ANY WARRANTY; without even the implied warranty of
     18     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     19     GNU Affero General Public License for more details.
     20     
     21     You should have received a copy of the GNU Affero General Public License
     22     along with Zotero.  If not, see <http://www.gnu.org/licenses/>.
     23     
     24     ***** END LICENSE BLOCK *****
     25 -->
     26 
     27 
     28 <?xml-stylesheet href="chrome://zotero/skin/overlay.css" type="text/css"?>
     29 <?xml-stylesheet href="chrome://zotero-platform/content/overlay.css" type="text/css"?>
     30 
     31 <!DOCTYPE overlay [
     32 	<!ENTITY % globalDTD SYSTEM "chrome://global/locale/global.dtd"> %globalDTD;
     33 	<!ENTITY % zoteroDTD SYSTEM "chrome://zotero/locale/zotero.dtd"> %zoteroDTD;
     34 	<!ENTITY % dialogOverlayDTD SYSTEM "chrome://global/locale/dialogOverlay.dtd"> %dialogOverlayDTD;
     35 ]>
     36 
     37 <overlay id="zotero"
     38 	xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
     39 	
     40 	<script src="include.js"/>
     41 	<script src="zoteroPane.js" type="application/javascript;version=1.8"/>
     42 	<script src="fileInterface.js"/>
     43 	<script src="reportInterface.js"/>
     44 	<script src="timelineInterface.js"/>
     45 	<script src="recognizePDFDialog.js"/>
     46 	<script src="browser.js" type="application/javascript;version=1.8"/>
     47 	<script src="lookup.js"/>
     48 	<script src="locateMenu.js" type="application/javascript;version=1.8"/>
     49 	
     50 	<commandset id="mainCommandSet">
     51 		<command id="cmd_zotero_reportErrors" oncommand="ZoteroPane_Local.reportErrors();"/>
     52 		<command id="cmd_zotero_import" oncommand="Zotero_File_Interface.showImportWizard();"/>
     53 		<command id="cmd_zotero_importFromClipboard" oncommand="Zotero_File_Interface.importFromClipboard();"/>
     54 		<command id="cmd_zotero_exportLibrary" oncommand="Zotero_File_Interface.exportFile();"/>
     55 		<command id="cmd_zotero_advancedSearch" oncommand="ZoteroPane_Local.openAdvancedSearchWindow();"/>
     56 		<command id="cmd_zotero_copyCitation"
     57 			oncommand="ZoteroPane_Local.copySelectedItemsToClipboard(true);"
     58 			disabled="true"/>
     59 		<command id="cmd_zotero_copyBibliography"
     60 			oncommand="ZoteroPane_Local.copySelectedItemsToClipboard();"
     61 			disabled="true"/>
     62 		<command id="cmd_zotero_createTimeline" oncommand="Zotero_Timeline_Interface.loadTimeline();"/>
     63 		<command id="cmd_zotero_rtfScan" oncommand="window.openDialog('chrome://zotero/content/rtfScan.xul', 'rtfScan', 'chrome,centerscreen')"/>
     64 		<command id="cmd_zotero_newCollection" oncommand="ZoteroPane_Local.newCollection()"/>
     65 		<command id="cmd_zotero_newFeed_fromURL" oncommand="ZoteroPane_Local.newFeedFromURL()"/>
     66 		<command id="cmd_zotero_newSavedSearch" oncommand="ZoteroPane_Local.newSearch()"/>
     67 		<command id="cmd_zotero_newStandaloneNote" oncommand="ZoteroPane_Local.newNote(event.shiftKey);"/>
     68 		<command id="cmd_zotero_newChildNote" oncommand="ZoteroPane_Local.newChildNote(event.shiftKey);"/>
     69 		<!-- Keep in sync with browser.js::scrapeThisPage(), until that calls this directly -->
     70 		<command id="cmd_zotero_newItemFromCurrentPage" oncommand="ZoteroPane.addItemFromPage('temporaryPDFHack', event.shiftKey ? !Zotero.Prefs.get('automaticSnapshots') : null)"/>
     71 	</commandset>
     72 	
     73 	<popup id="contentAreaContextMenu">
     74 		<menu id="zotero-content-area-context-menu" label="Zotero">
     75 			<menupopup>
     76 				<menuitem id="zotero-context-item-from-page" class="menu-iconic"
     77 					label="&zotero.toolbar.newItemFromPage.label;"
     78 					command="cmd_zotero_newItemFromCurrentPage"/>
     79 				<menuitem id="zotero-context-add-to-current-note" class="menu-iconic"
     80 					label="&zotero.contextMenu.addTextToCurrentNote;" hidden="true"
     81 					oncommand="ZoteroPane.addSelectedTextToCurrentNote()"/>
     82 				<menuitem id="zotero-context-add-to-new-note" class="menu-iconic"
     83 					label="&zotero.contextMenu.addTextToNewNote;" hidden="true"
     84 					oncommand="ZoteroPane.createItemAndNoteFromSelectedText()"/>
     85 				<menuitem id="zotero-context-save-link-as-item" class="menu-iconic"
     86 					label="&zotero.contextMenu.saveLinkAsItem;" hidden="true"
     87 					oncommand="ZoteroPane.addItemFromURL(window.gContextMenu.linkURL, 'temporaryPDFHack')"/>
     88 				<menuitem id="zotero-context-save-image-as-item" class="menu-iconic"
     89 					label="&zotero.contextMenu.saveImageAsItem;" hidden="true"
     90 					oncommand="ZoteroPane.addItemFromURL(window.gContextMenu.onImage ? (window.gContextMenu.mediaURL ? window.gContextMenu.mediaURL : window.gContextMenu.imageURL) : window.gContextMenu.bgImageURL, 'artwork')"/>
     91 			</menupopup>
     92 		</menu>
     93 	</popup>
     94 	
     95 	<stack id="zotero-pane-stack">
     96 		<!-- Barrier to prevent tabbing into Zotero pane when busy -->
     97 		<box id="zotero-pane-tab-catcher-top" hidden="true" align="center" pack="center" style="opacity: 0">
     98 			<checkbox/>
     99 		</box>
    100 		
    101 		<vbox id="zotero-pane"
    102 			onkeydown="ZoteroPane_Local.handleKeyDown(event, this.id)"
    103 			onkeyup="ZoteroPane_Local.handleKeyUp(event, this.id)"
    104 			onkeypress="ZoteroPane_Local.handleKeyPress(event)"
    105 			chromedir="&locale.dir;">
    106 			
    107 			<toolbar id="zotero-toolbar" class="toolbar toolbar-primary">
    108 				<hbox id="zotero-collections-toolbar" align="center">
    109 					<toolbarbutton id="zotero-tb-collection-add" class="zotero-tb-button" tooltiptext="&zotero.toolbar.newCollection.label;" command="cmd_zotero_newCollection"/>
    110 					<toolbarbutton id="zotero-tb-library-add-menu" class="zotero-tb-button" tooltiptext="&zotero.toolbar.newLibrary.label;" type="menu">
    111 						<menupopup id="zotero-tb-library-add-popup">
    112 							<menuitem id="zotero-tb-group-add" label="&zotero.toolbar.newGroup;" oncommand="ZoteroPane_Local.newGroup()"/>
    113 							<menu id="zotero-tb-feed-add-menu" label="&zotero.toolbar.feeds.new;">
    114 								<menupopup>
    115 									<menuitem id="zotero-tb-feed-add-fromURL" label="&zotero.toolbar.feeds.new.fromURL;" 
    116 										command="cmd_zotero_newFeed_fromURL"/>
    117 									<menuitem id="zotero-tb-feed-add-fromPage" label="&zotero.toolbar.feeds.new.fromPage;"
    118 										oncommand="ZoteroPane_Local.newFeedFromPage()" observes="singleFeedMenuitemState"/>
    119 									<menu id="zotero-tb-feed-add-fromPage-menu" label="&zotero.toolbar.feeds.new.fromPage;"
    120 										observes="multipleFeedsMenuState">
    121 											<menupopup oncommand="ZoteroPane_Local.newFeedFromPage(event)" 
    122 												onpopupshowing="FeedHandler.buildFeedList(event.target)"/>
    123 									</menu>
    124 									<menuitem id="zotero-tb-feed-add-fromOPML" label="&zotero.toolbar.feeds.new.fromOPML;" 
    125 										oncommand="ZoteroPane_Local.importFeedsFromOPML()"/>
    126 								</menupopup>
    127 							</menu>
    128 						</menupopup>
    129 					</toolbarbutton>
    130 					<spacer id="zotero-tb-actions-menu-separator" flex="1" hidden="true"/>
    131 					<toolbarbutton id="zotero-tb-actions-menu" class="zotero-tb-button" tooltiptext="&zotero.toolbar.actions.label;" type="menu" hidden="true">
    132 						<menupopup id="zotero-tb-actions-popup">
    133 							<menuitem id="zotero-tb-actions-import" label="&zotero.toolbar.import.label;" command="cmd_zotero_import"/>
    134 							<menuitem id="zotero-tb-actions-import-clipboard" label="&zotero.toolbar.importFromClipboard;" command="cmd_zotero_importFromClipboard"/>
    135 							<menuitem id="zotero-tb-actions-export" label="&zotero.toolbar.export.label;" command="cmd_zotero_exportLibrary"/>
    136 							<menuitem id="zotero-tb-actions-rtfScan" label="&zotero.toolbar.rtfScan.label;" command="cmd_zotero_rtfScan"/>
    137 							<menuitem hidden="true" id="zotero-tb-actions-zeroconf-update"
    138 								label="Search for Shared Libraries" oncommand="Zotero.Zeroconf.findInstances()"/>
    139 							<menuseparator id="zotero-tb-actions-plugins-separator"/>
    140 							<menuitem id="zotero-tb-actions-timeline" label="&zotero.toolbar.timeline.label;" command="cmd_zotero_createTimeline"/>
    141 							<menuseparator id="zotero-tb-actions-separator"/>
    142 							<menuitem id="zotero-tb-actions-prefs" label="&zotero.toolbar.preferences.label;"
    143 								oncommand="ZoteroPane_Local.openPreferences()"/>
    144 							<menuitem id="zotero-tb-actions-reportErrors" command="cmd_zotero_reportErrors" disabled="true"/>
    145 							<menuitem id="zotero-tb-actions-support" label="&zotero.toolbar.supportAndDocumentation;" oncommand="ZoteroPane.loadURI('http://www.zotero.org/support/', {'metaKey':true, 'shiftKey':true})"/>
    146 							<menuitem id="zotero-tb-actions-about" label="&zotero.toolbar.about.label;" oncommand="ZoteroPane_Local.openAboutDialog()"/>
    147 						</menupopup>
    148 					</toolbarbutton>
    149 				</hbox>
    150 				
    151 				<hbox id="zotero-items-toolbar" align="center">
    152 					<toolbarbutton id="zotero-tb-add" class="zotero-tb-button" tooltiptext="&zotero.toolbar.newItem.label;" type="menu">
    153 						<menupopup onpopupshowing="ZoteroPane_Local.updateNewItemTypes()">
    154 							<menuseparator/>
    155 							<menuitem label="&zotero.toolbar.attachment.linked;" oncommand="ZoteroPane_Local.addAttachmentFromDialog(true);" tooltiptext=""/>
    156 							<menuitem label="&zotero.toolbar.attachment.add;" oncommand="ZoteroPane_Local.addAttachmentFromDialog();"  tooltiptext=""/>
    157 							<menuseparator/>
    158 							<menu label="&zotero.toolbar.moreItemTypes.label;" tooltiptext="">
    159 								<menupopup id="zotero-tb-add-more" onpopupshowing="event.stopPropagation()"/>
    160 							</menu>
    161 						</menupopup>
    162 					</toolbarbutton>
    163 					
    164 					<toolbarbutton id="zotero-tb-lookup" class="zotero-tb-button" tooltiptext="&zotero.toolbar.lookup.label;" type="panel"
    165 							onmousedown="Zotero_Lookup.showPanel(this)"/>
    166 					
    167 					<panel id="zotero-lookup-panel" type="arrow" onpopupshown="Zotero_Lookup.onShowing(event)"
    168 							onpopuphidden="Zotero_Lookup.onHidden(event)">
    169 						<vbox>
    170 							<description>&zotero.lookup.description;</description>
    171 							<vbox id="zotero-lookup-singleLine">
    172 								<stack>
    173 									<progressmeter id="zotero-lookup-progress" mode="determined"/>
    174 									<textbox id="zotero-lookup-textbox"
    175 										onkeypress="return Zotero_Lookup.onKeyPress(event, this)"
    176 										oninput="Zotero_Lookup.onInput(event, this)"
    177 										flex="1"
    178 										newlines="pasteintact"/>
    179 								</stack>
    180 							</vbox>
    181 							<vbox id="zotero-lookup-multiline" collapsed="true">
    182 								<textbox id="zotero-lookup-multiline-textbox" onkeypress="return Zotero_Lookup.onKeyPress(event, this)" multiline="true" rows="5" wrap="off" flex="1"/>
    183 								<hbox align="start" id="zotero-lookup-buttons" class="zotero-button-clear-image">
    184 									<button label="&zotero.lookup.button.search;" align="start" oncommand="Zotero_Lookup.accept(document.getElementById('zotero-lookup-multiline-textbox'))"/>
    185 									<progressmeter id="zotero-lookup-multiline-progress" mode="determined" flex="1"/>
    186 								</hbox>
    187 							</vbox>
    188 						</vbox>
    189 					</panel>
    190 					
    191 					<!--<toolbarbutton id="zotero-tb-note-add" class="zotero-tb-button" tooltiptext="&zotero.toolbar.note.standalone;" oncommand="ZoteroPane_Local.newNote(event.shiftKey);"/>-->
    192 					<toolbarbutton id="zotero-tb-note-add" class="zotero-tb-button" tooltiptext="&zotero.toolbar.newNote;" type="menu">
    193 						<menupopup onpopupshowing="ZoteroPane_Local.updateNoteButtonMenu()">
    194 							<menuitem label="&zotero.toolbar.note.standalone;" command="cmd_zotero_newStandaloneNote"/>
    195 							<menuitem label="&zotero.toolbar.note.child;" command="cmd_zotero_newChildNote"/>
    196 						</menupopup>
    197 					</toolbarbutton>
    198 					<toolbarbutton id="zotero-tb-attachment-add" class="zotero-tb-button" tooltiptext="&zotero.items.menu.attach;" type="menu">
    199 						<menupopup onpopupshowing="ZoteroPane_Local.updateAttachmentButtonMenu(this)">
    200 							<menuitem class="menuitem-iconic zotero-menuitem-attachments-snapshot standalone-no-display" label="&zotero.items.menu.attach.snapshot;" oncommand="var itemID = ZoteroPane_Local.getSelectedItems()[0].id; ZoteroPane_Local.addAttachmentFromPage(false, itemID)"/>
    201 							<menuitem class="menuitem-iconic zotero-menuitem-attachments-web-link standalone-no-display" label="&zotero.items.menu.attach.link;" oncommand="var itemID = ZoteroPane_Local.getSelectedItems()[0].id; ZoteroPane_Local.addAttachmentFromPage(true, itemID)"/>
    202 							<menuitem class="menuitem-iconic zotero-menuitem-attachments-web-link" label="&zotero.items.menu.attach.link.uri;" oncommand="var itemID = ZoteroPane_Local.getSelectedItems()[0].id; ZoteroPane_Local.addAttachmentFromURI(true, itemID);"/>
    203 							<menuitem class="menuitem-iconic zotero-menuitem-attachments-file" label="&zotero.items.menu.attach.file;" oncommand="var itemID = ZoteroPane_Local.getSelectedItems()[0].id; ZoteroPane_Local.addAttachmentFromDialog(false, itemID);"/>
    204 							<menuitem class="menuitem-iconic zotero-menuitem-attachments-link" label="&zotero.items.menu.attach.fileLink;" oncommand="var itemID = ZoteroPane_Local.getSelectedItems()[0].id; ZoteroPane_Local.addAttachmentFromDialog(true, itemID);" id="zotero-tb-attachment-add-file-link"/>
    205 						</menupopup>
    206 					</toolbarbutton>
    207 					<toolbarseparator/>
    208 					<toolbarbutton id="zotero-tb-advanced-search" class="zotero-tb-button" tooltiptext="&zotero.toolbar.advancedSearch;" command="cmd_zotero_advancedSearch"/>
    209 					<spacer flex="1"/>
    210 					<image id="zotero-tb-search-spinner" class="zotero-spinner-14" style="display: none"/>
    211 					<textbox id="zotero-tb-search" type="search" timeout="250"
    212 							onkeypress="ZoteroPane_Local.handleSearchKeypress(this, event)"
    213 							oninput="ZoteroPane_Local.handleSearchInput(this, event)"
    214 							oncommand="ZoteroPane_Local.search()"/>
    215 				</hbox>
    216 				
    217 				<hbox id="zotero-item-toolbar" flex="1" align="center">
    218 					<hbox align="center" pack="start" flex="1">
    219 						<toolbarbutton id="zotero-tb-locate" class="zotero-tb-button" tooltiptext="&zotero.toolbar.openURL.label;" type="menu">
    220 							<menupopup id="zotero-tb-locate-menu" onpopupshowing="Zotero_LocateMenu.buildLocateMenu()"/>
    221 						</toolbarbutton>
    222 					</hbox>
    223 					<hbox align="center" pack="end">
    224 						<toolbarbutton id="zotero-tb-sync-stop"
    225 							tooltiptext="&zotero.sync.stop;"
    226 							oncommand="this.hidden = true; Zotero.Sync.Runner.stop()"
    227 							hidden="true"/>
    228 						<hbox id="zotero-tb-sync-progress-box" hidden="true" align="center">
    229 							<!-- TODO: localize -->
    230 							<toolbarbutton id="zotero-tb-sync-storage-cancel"
    231 								tooltiptext="Stop sync"
    232 								oncommand="Zotero.Sync.Runner.stop()"/>
    233 							<progressmeter id="zotero-tb-sync-progress" mode="determined"
    234 								value="0" tooltip="zotero-tb-sync-progress-tooltip">
    235 							</progressmeter>
    236 							<tooltip id="zotero-tb-sync-progress-tooltip" noautohide="true">
    237 								<hbox id="zotero-tb-sync-progress-tooltip-progress">
    238 									<label value="&zotero.sync.storage.progress;"/>
    239 									<label/>
    240 								</hbox>
    241 								<zoterofilesyncstatus id="zotero-tb-sync-progress-status"/>
    242 							</tooltip>
    243 						</hbox>
    244 					</hbox>
    245 
    246 					<toolbarbutton id="zotero-tb-recognize" hidden="true"
    247 						oncommand="Zotero_RecognizePDF_Dialog.open()"/>
    248 
    249 					<toolbarbutton id="zotero-tb-sync-error" hidden="true"/>
    250 					
    251 					<!--
    252 						We put this here, but it can be used wherever
    253 						Zotero.Sync.Runner.updateErrorPanel() puts it
    254 					-->
    255 					<panel id="zotero-sync-error-panel" type="arrow"/>
    256 					
    257 					<toolbarbutton id="zotero-tb-sync" class="zotero-tb-button" tooltip="_child"
    258 							oncommand="Zotero.Sync.Server.canAutoResetClient = true; Zotero.Sync.Server.manualSyncRequired = false; Zotero.Sync.Runner.sync()">
    259 						<tooltip
    260 								id="zotero-tb-sync-tooltip"
    261 								onpopupshowing="Zotero.Sync.Runner.registerSyncStatus(this)"
    262 								onpopuphiding="Zotero.Sync.Runner.registerSyncStatus()"
    263 								noautohide="true">
    264 							<label id="zotero-tb-sync-label"/>
    265 							<label id="zotero-tb-sync-status" hidden="true"/>
    266 							<label id="zotero-tb-sync-last-sync"/>
    267 						</tooltip>
    268 					</toolbarbutton>
    269 
    270 					<toolbarbutton id="zotero-close-button" class="tabs-closebutton close-icon standalone-no-display" oncommand="ZoteroOverlay.toggleDisplay()"/>
    271 				</hbox>
    272 			</toolbar>
    273 			
    274 			<popupset>
    275 				<menupopup id="zotero-collectionmenu"
    276 						oncommand="ZoteroPane.onCollectionContextMenuSelect(event)">
    277 					<!-- Keep order in sync with buildCollectionContextMenu, which adds additional attributes -->
    278 					<menuitem class="zotero-menuitem-sync"/>
    279 					<menuseparator/>
    280 					<menuitem class="zotero-menuitem-new-collection" label="&zotero.toolbar.newCollection.label;"/>
    281 					<menuitem class="zotero-menuitem-new-saved-search" label="&zotero.toolbar.newSavedSearch.label;"/>
    282 					<menuitem class="zotero-menuitem-new-collection" label="&zotero.toolbar.newSubcollection.label;"/>
    283 					<menuitem class="zotero-menuitem-refresh-feed" label="&zotero.toolbar.feeds.refresh;"/>
    284 					<menuseparator/>
    285 					<menuitem class="zotero-menuitem-show-duplicates" label="&zotero.toolbar.duplicate.label;"/>
    286 					<menuitem class="zotero-menuitem-show-unfiled" label="&zotero.collections.showUnfiledItems;"/>
    287 					<menuitem class="zotero-menuitem-edit-collection"/>
    288 					<menuitem class="zotero-menuitem-mark-read-feed" label="&zotero.toolbar.markFeedRead.label;"/>
    289 					<menuitem class="zotero-menuitem-edit-feed" label="&zotero.toolbar.feeds.edit;"/>
    290 					<menuitem class="zotero-menuitem-delete-collection"/>
    291 					<menuitem class="zotero-menuitem-move-to-trash"/>
    292 					<menuseparator/>
    293 					<menuitem class="zotero-menuitem-export"/>
    294 					<menuitem class="zotero-menuitem-create-bibliography"/>
    295 					<menuitem class="zotero-menuitem-export" label="&zotero.toolbar.export.label;"/>
    296 					<menuitem class="zotero-menuitem-create-report"/>
    297 					<menuitem class="zotero-menuitem-delete-from-lib" label="&zotero.toolbar.emptyTrash.label;"/>
    298 					<menuitem class="zotero-menuitem-removeLibrary"/>
    299 				</menupopup>
    300 				<menupopup id="zotero-itemmenu">
    301 					<!-- Keep order in sync with buildItemContextMenu -->
    302 					<menuitem class="menuitem-iconic zotero-menuitem-show-in-library" label="&zotero.items.menu.showInLibrary;" oncommand="ZoteroPane.selectItem(parseInt(this.parentNode.getAttribute('itemID')), true)"/>
    303 					<menuseparator/>
    304 					<!-- with icon: <menuitem class="menuitem-iconic" id="zotero-menuitem-note" label="&zotero.items.menu.attach.note;" oncommand="ZoteroPane_Local.newNote(false, this.parentNode.getAttribute('itemID'))"/>-->
    305 					<menuitem class="menuitem-iconic zotero-menuitem-attach-note" label="&zotero.items.menu.attach.note;" oncommand="ZoteroPane_Local.newNote(false, this.parentNode.getAttribute('itemKey'))"/>
    306 					<menu class="menu-iconic zotero-menuitem-attach" label="&zotero.items.menu.attach;">
    307 						<menupopup id="zotero-add-attachment-popup">
    308 							<menuitem class="menuitem-iconic zotero-menuitem-attachments-snapshot standalone-no-display" label="&zotero.items.menu.attach.snapshot;" oncommand="var itemID = parseInt(this.parentNode.parentNode.parentNode.getAttribute('itemID')); ZoteroPane_Local.addAttachmentFromPage(false, itemID)"/>
    309 							<menuitem class="menuitem-iconic zotero-menuitem-attachments-web-link standalone-no-display" label="&zotero.items.menu.attach.link;" oncommand="var itemID = parseInt(this.parentNode.parentNode.parentNode.getAttribute('itemID')); ZoteroPane_Local.addAttachmentFromPage(true, itemID)"/>
    310 							<menuitem class="menuitem-iconic zotero-menuitem-attachments-web-link" label="&zotero.items.menu.attach.link.uri;" oncommand="var itemID = parseInt(this.parentNode.parentNode.parentNode.getAttribute('itemID')); ZoteroPane_Local.addAttachmentFromURI(true, itemID);"/>
    311 							<menuitem class="menuitem-iconic zotero-menuitem-attachments-file" label="&zotero.items.menu.attach.file;" oncommand="var itemID = parseInt(this.parentNode.parentNode.parentNode.getAttribute('itemID')); ZoteroPane_Local.addAttachmentFromDialog(false, itemID);"/>
    312 							<menuitem class="menuitem-iconic zotero-menuitem-attachments-link" label="&zotero.items.menu.attach.fileLink;" oncommand="var itemID = parseInt(this.parentNode.parentNode.parentNode.getAttribute('itemID')); ZoteroPane_Local.addAttachmentFromDialog(true, itemID);"/>
    313 						</menupopup>
    314 					</menu>
    315 					<menuseparator/>
    316 					<menuitem class="menuitem-iconic zotero-menuitem-toggle-read-item" oncommand="ZoteroPane_Local.toggleSelectedItemsRead();"/>
    317 					<menuitem class="menuitem-iconic zotero-menuitem-duplicate-item" label="&zotero.items.menu.duplicateItem;" oncommand="ZoteroPane_Local.duplicateSelectedItem().done();"/>
    318 					<menuitem class="menuitem-iconic zotero-menuitem-remove-items" oncommand="ZoteroPane_Local.deleteSelectedItems();"/>
    319 					<menuitem class="menuitem-iconic zotero-menuitem-restore-to-library" label="&zotero.items.menu.restoreToLibrary;" oncommand="ZoteroPane_Local.restoreSelectedItems();"/>
    320 					<menuitem class="menuitem-iconic zotero-menuitem-move-to-trash" oncommand="ZoteroPane_Local.deleteSelectedItems(true, true);"/>
    321 					<menuitem class="menuitem-iconic zotero-menuitem-delete-from-lib" oncommand="ZoteroPane_Local.deleteSelectedItems(false, true)"/>
    322 					<menuitem class="menuitem-iconic zotero-menuitem-merge-items" label="&zotero.items.menu.mergeItems;" oncommand="ZoteroPane_Local.mergeSelectedItems();"/>
    323 					<menuseparator/>
    324 					<menuitem class="menuitem-iconic zotero-menuitem-export" oncommand="Zotero_File_Interface.exportItems();"/>
    325 					<menuitem class="menuitem-iconic zotero-menuitem-create-bibliography" oncommand="Zotero_File_Interface.bibliographyFromItems();"/>
    326 					<menuitem class="menuitem-iconic zotero-menuitem-create-report" oncommand="Zotero_Report_Interface.loadItemReport(event)"/>
    327 					<menuseparator/>
    328 					<menuitem class="menuitem-iconic zotero-menuitem-retrieve-metadata" oncommand="ZoteroPane.recognizeSelected();"/>
    329 					<menuitem class="menuitem-iconic zotero-menuitem-unrecognize" label="&zotero.items.menu.unrecognize;" oncommand="ZoteroPane.unrecognizeSelected()"/>
    330 					<menuitem class="menuitem-iconic zotero-menuitem-report-metadata" label="&zotero.items.menu.reportMetadata;" oncommand="ZoteroPane.reportMetadataForSelected()"/>
    331 					<menuitem class="menuitem-iconic zotero-menuitem-create-parent" oncommand="ZoteroPane_Local.createParentItemsFromSelected();"/>
    332 					<menuitem class="menuitem-iconic zotero-menuitem-rename-from-parent" oncommand="ZoteroPane_Local.renameSelectedAttachmentsFromParents()"/>
    333 					<menuitem class="menuitem-iconic zotero-menuitem-reindex" oncommand="ZoteroPane_Local.reindexItem();"/>
    334 				</menupopup>
    335 			</popupset>
    336 			
    337 			
    338 			<hbox id="zotero-trees" flex="1">
    339 				<vbox id="zotero-collections-pane" zotero-persist="width">
    340 					<!-- This is used for positioning the sync error icon panel
    341 							under specific tree cells, which don't exist as
    342 							elements on their own -->
    343 					<box id="zotero-collections-tree-shim"/>
    344 					<!-- This extra vbox prevents the toolbar from getting compressed when resizing
    345 							the tag selector to max height -->
    346 					<tree id="zotero-collections-tree"
    347 							hidecolumnpicker="true"
    348 							oncontextmenu="ZoteroPane.onCollectionsContextMenuOpen(event)"
    349 							onmouseover="ZoteroPane_Local.collectionsView.setHighlightedRows();"
    350 							onselect="ZoteroPane_Local.onCollectionSelected();"
    351 							seltype="cell" flex="1" editable="true">
    352 						<treecols>
    353 							<treecol
    354 								id="zotero-collections-name-column"
    355 								flex="1"
    356 								primary="true"
    357 								hideheader="true"/>
    358 						</treecols>
    359 						<treechildren ondragstart="ZoteroPane_Local.collectionsView.onDragStart(event)"
    360 							ondragenter="return ZoteroPane_Local.collectionsView.onDragEnter(event)"
    361 							ondragover="return ZoteroPane_Local.collectionsView.onDragOver(event)"
    362 							ondrop="return ZoteroPane_Local.collectionsView.onDrop(event)"/>
    363 					</tree>
    364 					<splitter id="zotero-tags-splitter" onmouseup="ZoteroPane_Local.updateTagSelectorSize()" collapse="after"
    365 							zotero-persist="state">
    366 						<grippy oncommand="ZoteroPane_Local.toggleTagSelector()"/>
    367 					</splitter>
    368 					<!-- 'collapsed' is no longer necessary here due to the persisted 'state' on
    369 					     zotero-tags-splitter, but without this an old-style entry for 'collapsed'
    370 					     in localstore.rdf can cause the pane to always be closed on Zotero open.
    371 					     
    372 					     TODO: deal with this some other way?
    373 					-->
    374 					<zoterotagselector id="zotero-tag-selector" zotero-persist="height,collapsed,showAutomatic,filterToScope"/>
    375 				</vbox>
    376 				
    377 				<splitter id="zotero-collections-splitter" resizebefore="closest" resizeafter="closest" collapse="before"
    378 					zotero-persist="state"
    379 					onmousemove="document.getElementById('zotero-items-toolbar').setAttribute('state', this.getAttribute('state'));ZoteroPane_Local.updateToolbarPosition();"
    380 					oncommand="ZoteroPane_Local.updateToolbarPosition()">
    381 					<grippy id="zotero-collections-grippy"/>
    382 				</splitter>
    383 				
    384 				<box id="zotero-layout-switcher" orient="horizontal" zotero-persist="orient" flex="1">
    385 					<vbox id="zotero-items-pane" zotero-persist="width height" flex="1">
    386 						<deck id="zotero-items-pane-content" selectedIndex="0" flex="1">
    387 							<!-- Key navigation is handled by listener in itemTreeView.js -->
    388 							<tree 
    389 								id="zotero-items-tree"
    390 								enableColumnDrag="true"
    391 								disableKeyNavigation="true"
    392 								onfocus="if (ZoteroPane_Local.itemsView.rowCount &amp;&amp; !ZoteroPane_Local.itemsView.selection.count) { ZoteroPane_Local.itemsView.selection.select(0); }"
    393 								onkeydown="ZoteroPane_Local.handleKeyDown(event, this.id)"
    394 								onselect="ZoteroPane_Local.itemSelected(event)"
    395 								oncommand="ZoteroPane_Local.serializePersist()"
    396 								oncontextmenu="ZoteroPane.onItemsContextMenuOpen(event)"
    397 								flex="1"
    398 								hidden="true"
    399 								zotero-persist="current-view-group">
    400 								<treecols id="zotero-items-columns-header">
    401 									<treecol
    402 										id="zotero-items-column-title" primary="true" default-in="default feed"
    403 										label="&zotero.items.title_column;" ignoreincolumnpicker="true"
    404 										flex="4" zotero-persist="width ordinal hidden sortActive sortDirection"/>
    405 									<splitter class="tree-splitter"/>
    406 									<treecol
    407 										id="zotero-items-column-firstCreator" default-in="default feed"
    408 										label="&zotero.items.creator_column;"
    409 										flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
    410 									<splitter class="tree-splitter"/>
    411 									<treecol
    412 										id="zotero-items-column-itemType"
    413 										label="&zotero.items.type_column;"
    414 										width="40" zotero-persist="width ordinal hidden sortActive sortDirection"/>
    415 									<splitter class="tree-splitter"/>
    416 									<treecol
    417 										id="zotero-items-column-date" default-in="feed"
    418 										label="&zotero.items.date_column;"
    419 										flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
    420 									<splitter class="tree-splitter"/>
    421 									<treecol
    422 										id="zotero-items-column-year" disabled-in="feed"
    423 										label="&zotero.items.year_column;"
    424 										flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
    425 									<splitter class="tree-splitter"/>
    426 									<treecol
    427 										id="zotero-items-column-publisher"
    428 										label="&zotero.items.publisher_column;"
    429 										flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
    430 									<splitter class="tree-splitter"/>
    431 									<treecol
    432 										id="zotero-items-column-publicationTitle" disabled-in="feed"
    433 										label="&zotero.items.publication_column;"
    434 										flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
    435 									<splitter class="tree-splitter"/>
    436 									<treecol
    437 										id="zotero-items-column-journalAbbreviation" disabled-in="feed"
    438 										submenu="true"
    439 										label="&zotero.items.journalAbbr_column;"
    440 										flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
    441 									<splitter class="tree-splitter"/>
    442 									<treecol
    443 										id="zotero-items-column-language"
    444 										submenu="true"
    445 										label="&zotero.items.language_column;"
    446 										flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
    447 									<splitter class="tree-splitter"/>
    448 									<treecol
    449 										id="zotero-items-column-accessDate" disabled-in="feed"
    450 										submenu="true"
    451 										label="&zotero.items.accessDate_column;"
    452 										flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
    453 									<splitter class="tree-splitter"/>
    454 									<treecol
    455 										id="zotero-items-column-libraryCatalog" disabled-in="feed"
    456 										submenu="true"
    457 										label="&zotero.items.libraryCatalog_column;"
    458 										flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
    459 									<splitter class="tree-splitter"/>
    460 									<treecol
    461 										id="zotero-items-column-callNumber" disabled-in="feed"
    462 										submenu="true"
    463 										label="&zotero.items.callNumber_column;"
    464 										flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
    465 									<splitter class="tree-splitter"/>
    466 									<treecol
    467 										id="zotero-items-column-rights"
    468 										submenu="true"
    469 										label="&zotero.items.rights_column;"
    470 										flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
    471 									<splitter class="tree-splitter"/>
    472 									<treecol
    473 										id="zotero-items-column-dateAdded" disabled-in="feed"
    474 										label="&zotero.items.dateAdded_column;"
    475 										flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
    476 									<splitter class="tree-splitter"/>
    477 									<treecol
    478 										id="zotero-items-column-dateModified" disabled-in="feed"
    479 										label="&zotero.items.dateModified_column;"
    480 										flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
    481 									<splitter class="tree-splitter"/>
    482 									<treecol
    483 										id="zotero-items-column-archive" disabled-in="feed"
    484 										submenu="true"
    485 										label="&zotero.items.archive_column;"
    486 										flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
    487 									<splitter class="tree-splitter"/>								
    488 									<treecol
    489 										id="zotero-items-column-archiveLocation" disabled-in="feed"
    490 										submenu="true"
    491 										label="&zotero.items.archiveLocation_column;"
    492 										flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
    493 									<splitter class="tree-splitter"/>
    494 									<treecol
    495 										id="zotero-items-column-place" disabled-in="feed"
    496 										submenu="true"
    497 										label="&zotero.items.place_column;"
    498 										flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
    499 									<splitter class="tree-splitter"/>
    500 									<treecol
    501 										id="zotero-items-column-volume" disabled-in="feed"
    502 										submenu="true"
    503 										label="&zotero.items.volume_column;"
    504 										flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
    505 									<splitter class="tree-splitter"/>
    506 									<treecol
    507 										id="zotero-items-column-edition" disabled-in="feed"
    508 										submenu="true"
    509 										label="&zotero.items.edition_column;"
    510 										flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
    511 									<splitter class="tree-splitter"/>
    512 									<treecol
    513 										id="zotero-items-column-pages" disabled-in="feed"
    514 										submenu="true"
    515 										label="&zotero.items.pages_column;"
    516 										flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
    517 									<splitter class="tree-splitter"/>
    518 									<treecol
    519 										id="zotero-items-column-issue" disabled-in="feed"
    520 										submenu="true"
    521 										label="&zotero.items.issue_column;"
    522 										flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
    523 									<splitter class="tree-splitter"/>
    524 									<treecol
    525 										id="zotero-items-column-series" disabled-in="feed"
    526 										submenu="true"
    527 										label="&zotero.items.series_column;"
    528 										flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
    529 									<splitter class="tree-splitter"/>
    530 									<treecol
    531 										id="zotero-items-column-seriesTitle" disabled-in="feed"
    532 										submenu="true"
    533 										label="&zotero.items.seriesTitle_column;"
    534 										flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
    535 									<splitter class="tree-splitter"/>
    536 									<treecol
    537 										id="zotero-items-column-court" disabled-in="feed"
    538 										submenu="true"
    539 										label="&zotero.items.court_column;"
    540 										flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
    541 									<splitter class="tree-splitter"/>
    542 									<treecol
    543 										id="zotero-items-column-medium" disabled-in="feed"
    544 										submenu="true"
    545 										label="&zotero.items.medium_column;"
    546 										flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
    547 									<splitter class="tree-splitter"/>
    548 									<treecol
    549 										id="zotero-items-column-genre" disabled-in="feed"
    550 										submenu="true"
    551 										label="&zotero.items.genre_column;"
    552 										flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
    553 									<splitter class="tree-splitter"/>
    554 									<treecol
    555 										id="zotero-items-column-system" disabled-in="feed"
    556 										submenu="true"
    557 										label="&zotero.items.system_column;"
    558 										flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
    559 									<splitter class="tree-splitter"/>
    560 									<treecol
    561 										id="zotero-items-column-extra" disabled-in="feed"
    562 										label="&zotero.items.extra_column;"
    563 										flex="1" zotero-persist="width ordinal hidden sortActive sortDirection"/>
    564 									<splitter class="tree-splitter"/>
    565 									<treecol
    566 										id="zotero-items-column-hasAttachment" default-in="default" disabled-in="feed" 
    567 										class="treecol-image"
    568 										label="&zotero.tabs.attachments.label;"
    569 										fixed="true"
    570 										zotero-persist="ordinal hidden sortActive sortDirection"/>
    571 									<splitter class="tree-splitter"/>
    572 									<treecol
    573 										id="zotero-items-column-numNotes" disabled-in="feed"
    574 										class="treecol-image"
    575 										label="&zotero.tabs.notes.label;"
    576 										zotero-persist="width ordinal hidden sortActive sortDirection"/>
    577 								</treecols>
    578 								<treechildren ondragstart="ZoteroPane_Local.itemsView.onDragStart(event)"
    579 									ondragenter="return ZoteroPane_Local.itemsView.onDragEnter(event)"
    580 									ondragover="return ZoteroPane_Local.itemsView.onDragOver(event)"
    581 									ondrop="return ZoteroPane_Local.itemsView.onDrop(event)"
    582 									ondragend="ZoteroPane_Local.itemsView.onDragEnd(event)"/>
    583 							</tree>
    584 
    585 							<!-- Label for displaying messages when items pane is hidden
    586 							 (e.g. "Advanced search mode — press Enter to search.")-->
    587 							<vbox id="zotero-items-pane-message-box" pack="center" align="center"
    588 								ondragenter="return ZoteroPane.itemsView.onDragEnter(event)"
    589 								ondragover="return ZoteroPane.itemsView.onDragOver(event)"
    590 								ondrop="ZoteroPane.itemsView.onDrop(event); ZoteroPane.itemsView.drop(-1, -1, event.dataTransfer)"/>
    591 						</deck>
    592 					</vbox>
    593 
    594 					<splitter id="zotero-items-splitter" resizebefore="closest" resizeafter="closest" collapse="after" orient="horizontal" zotero-persist="state orient"
    595 						onmousemove="ZoteroPane_Local.updateToolbarPosition()"
    596 						oncommand="ZoteroPane_Local.updateToolbarPosition()">
    597 						<grippy id="zotero-items-grippy"/>
    598 					</splitter>
    599 
    600 					<!-- itemPane.xul -->
    601 					<vbox id="zotero-item-pane"/>
    602 				</box>
    603 			</hbox>
    604 		</vbox>
    605 		
    606 		<!-- Barrier to prevent tabbing into Zotero pane when busy -->
    607 		<box id="zotero-pane-tab-catcher-bottom" hidden="true" align="center" pack="center" style="opacity: 0">
    608 			<checkbox/>
    609 		</box>
    610 		
    611 		<stack id="zotero-pane-overlay" flex="1" hidden="true">
    612 			<box style="background: black; opacity: .3" flex="1"/>
    613 			
    614 			<deck id="zotero-pane-overlay-deck" flex="1">
    615 				<box id="zotero-pane-progress" flex="1" align="center" pack="center">
    616 					<box style="background: white; border-radius: 1px; box-shadow: gray 4px 6px 4px;" width="300" height="30">
    617 						<vbox id="zotero-pane-progressmeter-container" style="padding:10px" flex="1">
    618 							<label id="zotero-pane-progress-label"/>
    619 							<!-- See note in Zotero.showZoteroPaneProgressMeter()
    620 							<progressmeter id="zotero-pane-progressmeter" mode="undetermined"/> -->
    621 						</vbox>
    622 					</box>
    623 				</box>
    624 			</deck>
    625 		</stack>
    626 		
    627 	</stack>
    628 </overlay>