<!-- This Source Code Form is subject to the terms of the Mozilla Public
   - License, v. 2.0. If a copy of the MPL was not distributed with this
   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->

<!DOCTYPE overlay [
<!ENTITY % placesDTD SYSTEM "chrome://browser/locale/places/places.dtd">
%placesDTD;
<!ENTITY % editMenuOverlayDTD SYSTEM "chrome://global/locale/editMenuOverlay.dtd">
%editMenuOverlayDTD;
]>

<overlay id="placesOverlay"
         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

  <script type="application/javascript"
          src="chrome://global/content/globalOverlay.js"/>
  <script type="application/javascript"
          src="chrome://browser/content/utilityOverlay.js"/>
  <script type="application/javascript"><![CDATA[
    // TODO: Bug 406371.
    // A bunch of browser code depends on us defining these, sad but true :(
    var Cc = Components.classes;
    var Ci = Components.interfaces;
    var Cr = Components.results;

    Components.utils.import("resource://gre/modules/PlacesUtils.jsm");
    Components.utils.import("resource:///modules/PlacesUIUtils.jsm");
  ]]></script>
  <script type="application/javascript"
          src="chrome://browser/content/places/controller.js"/>
  <script type="application/javascript"
          src="chrome://browser/content/places/treeView.js"/>

  <!-- Bookmarks and history tooltip -->
  <tooltip id="bhTooltip" noautohide="true"
           onpopupshowing="return window.top.BookmarksEventHandler.fillInBHTooltip(document, event)">
    <vbox id="bhTooltipTextBox" flex="1">
      <label id="bhtTitleText" class="tooltip-label" />
      <label id="bhtUrlText" crop="center" class="tooltip-label" />
    </vbox>
  </tooltip>

  <commandset id="placesCommands"
              commandupdater="true"
              events="focus,sort,places"
              oncommandupdate="goUpdatePlacesCommands();">
    <command id="placesCmd_open"
             oncommand="goDoPlacesCommand('placesCmd_open');"/>
    <command id="placesCmd_open:window"
             oncommand="goDoPlacesCommand('placesCmd_open:window');"/>
    <command id="placesCmd_open:privatewindow"
             oncommand="goDoPlacesCommand('placesCmd_open:privatewindow');"/>
    <command id="placesCmd_open:tab"
             oncommand="goDoPlacesCommand('placesCmd_open:tab');"/>

    <command id="placesCmd_new:bookmark"
             oncommand="goDoPlacesCommand('placesCmd_new:bookmark');"/>
    <command id="placesCmd_new:livemark"
             oncommand="goDoPlacesCommand('placesCmd_new:livemark');"/>
    <command id="placesCmd_new:folder"
             oncommand="goDoPlacesCommand('placesCmd_new:folder');"/>
    <command id="placesCmd_new:separator"
             oncommand="goDoPlacesCommand('placesCmd_new:separator');"/>
    <command id="placesCmd_show:info" 
             oncommand="goDoPlacesCommand('placesCmd_show:info');"/>
    <command id="placesCmd_rename"
             oncommand="goDoPlacesCommand('placesCmd_show:info');"
             observes="placesCmd_show:info"/>
    <command id="placesCmd_reload"
             oncommand="goDoPlacesCommand('placesCmd_reload');"/>
    <command id="placesCmd_sortBy:name"
             oncommand="goDoPlacesCommand('placesCmd_sortBy:name');"/>
    <command id="placesCmd_moveBookmarks"
             oncommand="goDoPlacesCommand('placesCmd_moveBookmarks');"/>
    <command id="placesCmd_deleteDataHost"
             oncommand="goDoPlacesCommand('placesCmd_deleteDataHost');"/>
    <command id="placesCmd_createBookmark"
             oncommand="goDoPlacesCommand('placesCmd_createBookmark');"/>
    <command id="placesCmd_openParentFolder"
             oncommand="goDoPlacesCommand('placesCmd_openParentFolder');"/>

    <!-- Special versions of cut/copy/paste/delete which check for an open context menu. -->
    <command id="placesCmd_cut"
             oncommand="goDoPlacesCommand('placesCmd_cut');"/>
    <command id="placesCmd_copy"
             oncommand="goDoPlacesCommand('placesCmd_copy');"/>
    <command id="placesCmd_paste"
             oncommand="goDoPlacesCommand('placesCmd_paste');"/>
    <command id="placesCmd_delete"
             oncommand="goDoPlacesCommand('placesCmd_delete');"/>
  </commandset>

  <keyset id="placesCommandKeys">
    <key id="key_placesCmd_openParentFolder"
         keycode="VK_F1"
         command="placesCmd_openParentFolder"
         modifiers="accel,shift"/>
  </keyset>

  <menupopup id="placesContext"
             onpopupshowing="this._view = PlacesUIUtils.getViewForNode(document.popupNode);
                             return this._view.buildContextMenu(this);"
             onpopuphiding="this._view.destroyContextMenu();">
    <menuitem id="placesContext_open"
              command="placesCmd_open"
              label="&cmd.open.label;"
              accesskey="&cmd.open.accesskey;"
              default="true"
              selectiontype="single"
              selection="link"/>
    <menuitem id="placesContext_open:newtab"
              command="placesCmd_open:tab"
              label="&cmd.open_tab.label;"
              accesskey="&cmd.open_tab.accesskey;"
              selectiontype="single"
              selection="link"/>
    <menuitem id="placesContext_openContainer:tabs"
              oncommand="var view = PlacesUIUtils.getViewForNode(document.popupNode);
                         view.controller.openSelectionInTabs(event);"
              onclick="checkForMiddleClick(this, event);"
              label="&cmd.open_all_in_tabs.label;"
              accesskey="&cmd.open_all_in_tabs.accesskey;"
              selectiontype="single"
              selection="folder|host|query"/>
    <menuitem id="placesContext_openLinks:tabs"
              oncommand="var view = PlacesUIUtils.getViewForNode(document.popupNode);
                         view.controller.openSelectionInTabs(event);"
              onclick="checkForMiddleClick(this, event);"
              label="&cmd.open_all_in_tabs.label;"
              accesskey="&cmd.open_all_in_tabs.accesskey;"
              selectiontype="multiple"
              selection="link"/>
    <menuitem id="placesContext_open:newwindow"
              command="placesCmd_open:window"
              label="&cmd.open_window.label;"
              accesskey="&cmd.open_window.accesskey;"
              selectiontype="single"
              selection="link"/>
    <menuitem id="placesContext_open:newprivatewindow"
              command="placesCmd_open:privatewindow"
              label="&cmd.open_private_window.label;"
              accesskey="&cmd.open_private_window.accesskey;"
              selectiontype="single"
              selection="link"
              hideifprivatebrowsing="true"/>
    <menuseparator id="placesContext_openSeparator"/>
    <menuitem id="placesContext_new:bookmark"
              command="placesCmd_new:bookmark"
              label="&cmd.new_bookmark.label;"
              accesskey="&cmd.new_bookmark.accesskey;"
              selection="any"
              hideifnoinsertionpoint="true"/>
    <menuitem id="placesContext_new:folder"
              command="placesCmd_new:folder"
              label="&cmd.new_folder.label;"
              accesskey="&cmd.context_new_folder.accesskey;"
              selection="any"
              hideifnoinsertionpoint="true"/>
    <menuitem id="placesContext_new:separator"
              command="placesCmd_new:separator"
              label="&cmd.new_separator.label;"
              accesskey="&cmd.new_separator.accesskey;"
              closemenu="single"
              selection="any"
              hideifnoinsertionpoint="true"/>
    <menuseparator id="placesContext_newSeparator"/>
    <menuitem id="placesContext_createBookmark"
              command="placesCmd_createBookmark"
              label="&cmd.bookmarkLink.label;"
              accesskey="&cmd.bookmarkLink.accesskey;"
              selection="link"
              forcehideselection="bookmark|tagChild"/>
    <menuitem id="placesContext_cut"
              command="placesCmd_cut"
              label="&cutCmd.label;"
              accesskey="&cutCmd.accesskey;" 
              closemenu="single"
              selection="bookmark|folder|separator|query"
              forcehideselection="tagChild|livemarkChild"/>
    <menuitem id="placesContext_copy"
              command="placesCmd_copy"
              label="&copyCmd.label;"
              closemenu="single"
              accesskey="&copyCmd.accesskey;" 
              selection="any"/>
    <menuitem id="placesContext_paste"
              command="placesCmd_paste"
              label="&pasteCmd.label;"
              closemenu="single"
              accesskey="&pasteCmd.accesskey;"
              selection="any"
              hideifnoinsertionpoint="true"/>
    <menuseparator id="placesContext_editSeparator"/>
    <menuitem id="placesContext_delete"
              command="placesCmd_delete"
              label="&deleteCmd.label;"
              accesskey="&deleteCmd.accesskey;"
              closemenu="single"
              selection="bookmark|tagChild|folder|query|dynamiccontainer|separator|host"/>
    <menuitem id="placesContext_delete_history"
              command="placesCmd_delete"
              label="&cmd.delete.label;"
              accesskey="&cmd.delete.accesskey;"
              closemenu="single"
              selection="link"
              forcehideselection="bookmark"/>
    <menuitem id="placesContext_deleteHost"
              command="placesCmd_deleteDataHost"
              label="&cmd.deleteDomainData.label;"
              accesskey="&cmd.deleteDomainData.accesskey;"
              closemenu="single"
              selection="link|host"
              selectiontype="single"
              hideifprivatebrowsing="true"
              forcehideselection="bookmark"/>
    <menuseparator id="placesContext_deleteSeparator"/>
    <menuitem id="placesContext_reload"
              command="placesCmd_reload"
              label="&cmd.reloadLivebookmark.label;"
              accesskey="&cmd.reloadLivebookmark.accesskey;"
              closemenu="single"
              selection="livemark/feedURI"/>
    <menuitem id="placesContext_sortBy:name"
              command="placesCmd_sortBy:name"
              label="&cmd.sortby_name.label;"
              accesskey="&cmd.context_sortby_name.accesskey;"
              closemenu="single"
              selection="folder"/>
    <menuseparator id="placesContext_sortSeparator"/>
    <menuitem id="placesContext_openParentFolder"
              command="placesCmd_openParentFolder"
              label="&cmd.openParentFolder.label;"
              key="key_placesCmd_openParentFolder"
              accesskey="&cmd.openParentFolder.accesskey;"
              selectiontype="single"
              selection="bookmark"
              forcehideselection="livemarkChild|livemark/feedURI|PlacesOrganizer/OrganizerQuery"/>
    <menuseparator id="placesContext_parentFolderSeparator"/>
    <menuitem id="placesContext_show:info"
              command="placesCmd_show:info"
              label="&cmd.properties.label;" 
              accesskey="&cmd.properties.accesskey;"
              selection="bookmark|folder|query"
              forcehideselection="livemarkChild"/>
  </menupopup>

</overlay>