<?xml version="1.0" encoding="utf-8"?>
<!-- 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/. -->
<?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
<?xml-stylesheet href="chrome://browser/content/devtools/widgets.css" type="text/css"?>
<?xml-stylesheet href="chrome://browser/content/devtools/debugger.css" type="text/css"?>
<?xml-stylesheet href="chrome://browser/skin/devtools/common.css" type="text/css"?>
<?xml-stylesheet href="chrome://browser/skin/devtools/widgets.css" type="text/css"?>
<?xml-stylesheet href="chrome://browser/skin/devtools/debugger.css" type="text/css"?>
<!DOCTYPE window [
  <!ENTITY % debuggerDTD SYSTEM "chrome://browser/locale/devtools/debugger.dtd">
  %debuggerDTD;
]>
<?xul-overlay href="chrome://global/content/editMenuOverlay.xul"?>

<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
        macanimationtype="document"
        fullscreenbutton="true"
        screenX="4" screenY="4"
        width="960" height="480"
        persist="screenX screenY width height sizemode">

  <script type="application/javascript;version=1.8"
          src="chrome://browser/content/devtools/theme-switching.js"/>
  <script type="text/javascript" src="chrome://global/content/globalOverlay.js"/>
  <script type="text/javascript" src="debugger-controller.js"/>
  <script type="text/javascript" src="debugger-view.js"/>
  <script type="text/javascript" src="debugger-toolbar.js"/>
  <script type="text/javascript" src="debugger-panes.js"/>

  <commandset id="editMenuCommands"/>

  <commandset id="debuggerCommands">
    <command id="blackBoxCommand"
             oncommand="DebuggerView.Sources.toggleBlackBoxing()"/>
    <command id="unBlackBoxButton"
             oncommand="DebuggerView.Sources._onStopBlackBoxing()"/>
    <command id="prettyPrintCommand"
             oncommand="DebuggerView.Sources.togglePrettyPrint()"/>
    <command id="toggleBreakpointsCommand"
             oncommand="DebuggerView.Sources.toggleBreakpoints()"/>
    <command id="nextSourceCommand"
             oncommand="DebuggerView.Sources.selectNextItem()"/>
    <command id="prevSourceCommand"
             oncommand="DebuggerView.Sources.selectPrevItem()"/>
    <command id="resumeCommand"
             oncommand="DebuggerView.Toolbar._onResumePressed()"/>
    <command id="stepOverCommand"
             oncommand="DebuggerView.Toolbar._onStepOverPressed()"/>
    <command id="stepInCommand"
             oncommand="DebuggerView.Toolbar._onStepInPressed()"/>
    <command id="stepOutCommand"
             oncommand="DebuggerView.Toolbar._onStepOutPressed()"/>
    <command id="fileSearchCommand"
             oncommand="DebuggerView.Filtering._doFileSearch()"/>
    <command id="globalSearchCommand"
             oncommand="DebuggerView.Filtering._doGlobalSearch()"/>
    <command id="functionSearchCommand"
             oncommand="DepbuggerView.Filtering._doFunctionSearch()"/>
    <command id="tokenSearchCommand"
             oncommand="DebuggerView.Filtering._doTokenSearch()"/>
    <command id="lineSearchCommand"
             oncommand="DebuggerView.Filtering._doLineSearch()"/>
    <command id="variableSearchCommand"
             oncommand="DebuggerView.Filtering._doVariableSearch()"/>
    <command id="variablesFocusCommand"
             oncommand="DebuggerView.Filtering._doVariablesFocus()"/>
    <command id="addBreakpointCommand"
             oncommand="DebuggerView.Sources._onCmdAddBreakpoint()"/>
    <command id="addConditionalBreakpointCommand"
             oncommand="DebuggerView.Sources._onCmdAddConditionalBreakpoint()"/>
    <command id="addWatchExpressionCommand"
             oncommand="DebuggerView.WatchExpressions._onCmdAddExpression()"/>
    <command id="removeAllWatchExpressionsCommand"
             oncommand="DebuggerView.WatchExpressions._onCmdRemoveAllExpressions()"/>
    <command id="toggleAutoPrettyPrint"
             oncommand="DebuggerView.Options._toggleAutoPrettyPrint()"/>
    <command id="togglePauseOnExceptions"
             oncommand="DebuggerView.Options._togglePauseOnExceptions()"/>
    <command id="toggleIgnoreCaughtExceptions"
             oncommand="DebuggerView.Options._toggleIgnoreCaughtExceptions()"/>
    <command id="toggleShowPanesOnStartup"
             oncommand="DebuggerView.Options._toggleShowPanesOnStartup()"/>
    <command id="toggleShowOnlyEnum"
             oncommand="DebuggerView.Options._toggleShowVariablesOnlyEnum()"/>
    <command id="toggleShowVariablesFilterBox"
             oncommand="DebuggerView.Options._toggleShowVariablesFilterBox()"/>
    <command id="toggleShowOriginalSource"
             oncommand="DebuggerView.Options._toggleShowOriginalSource()"/>
    <command id="toggleTracing"
             oncommand="DebuggerView.Tracer._onToggleTracing()"/>
    <command id="startTracing"
             oncommand="DebuggerView.Tracer._onStartTracing()"/>
    <command id="clearTraces"
             oncommand="DebuggerView.Tracer._onClear()"/>
  </commandset>

  <popupset id="debuggerPopupset">
    <menupopup id="sourceEditorContextMenu"
               onpopupshowing="goUpdateGlobalEditMenuItems()">
      <menuitem id="se-dbg-cMenu-addBreakpoint"
                label="&debuggerUI.seMenuBreak;"
                key="addBreakpointKey"
                command="addBreakpointCommand"/>
      <menuitem id="se-dbg-cMenu-addConditionalBreakpoint"
                label="&debuggerUI.seMenuCondBreak;"
                key="addConditionalBreakpointKey"
                command="addConditionalBreakpointCommand"/>
      <menuitem id="se-dbg-cMenu-addAsWatch"
                label="&debuggerUI.seMenuAddWatch;"
                key="addWatchExpressionKey"
                command="addWatchExpressionCommand"/>
      <menuseparator/>
      <menuitem id="cMenu_copy"/>
      <menuseparator/>
      <menuitem id="cMenu_selectAll"/>
      <menuseparator/>
      <menuitem id="se-dbg-cMenu-findFile"
                label="&debuggerUI.searchFile;"
                accesskey="&debuggerUI.searchFile.accesskey;"
                key="fileSearchKey"
                command="fileSearchCommand"/>
      <menuitem id="se-dbg-cMenu-findGlobal"
                label="&debuggerUI.searchGlobal;"
                accesskey="&debuggerUI.searchGlobal.accesskey;"
                key="globalSearchKey"
                command="globalSearchCommand"/>
      <menuitem id="se-dbg-cMenu-findFunction"
                label="&debuggerUI.searchFunction;"
                accesskey="&debuggerUI.searchFunction.accesskey;"
                key="functionSearchKey"
                command="functionSearchCommand"/>
      <menuseparator/>
      <menuitem id="se-dbg-cMenu-findToken"
                label="&debuggerUI.searchToken;"
                accesskey="&debuggerUI.searchToken.accesskey;"
                key="tokenSearchKey"
                command="tokenSearchCommand"/>
      <menuitem id="se-dbg-cMenu-findLine"
                label="&debuggerUI.searchGoToLine;"
                accesskey="&debuggerUI.searchGoToLine.accesskey;"
                key="lineSearchKey"
                command="lineSearchCommand"/>
      <menuseparator/>
      <menuitem id="se-dbg-cMenu-findVariable"
                label="&debuggerUI.searchVariable;"
                accesskey="&debuggerUI.searchVariable.accesskey;"
                key="variableSearchKey"
                command="variableSearchCommand"/>
      <menuitem id="se-dbg-cMenu-focusVariables"
                label="&debuggerUI.focusVariables;"
                accesskey="&debuggerUI.focusVariables.accesskey;"
                key="variablesFocusKey"
                command="variablesFocusCommand"/>
      <menuitem id="se-dbg-cMenu-prettyPrint"
                label="&debuggerUI.sources.prettyPrint;"
                command="prettyPrintCommand"/>
    </menupopup>
    <menupopup id="debuggerWatchExpressionsContextMenu">
      <menuitem id="add-watch-expression"
                label="&debuggerUI.addWatch;"
                accesskey="&debuggerUI.addWatch.accesskey;"
                key="addWatchExpressionKey"
                command="addWatchExpressionCommand"/>
      <menuitem id="removeAll-watch-expression"
                label="&debuggerUI.removeAllWatch;"
                accesskey="&debuggerUI.removeAllWatch.accesskey;"
                key="removeAllWatchExpressionsKey"
                command="removeAllWatchExpressionsCommand"/>
    </menupopup>
    <menupopup id="debuggerPrefsContextMenu"
               position="before_end"
               onpopupshowing="DebuggerView.Options._onPopupShowing()"
               onpopuphiding="DebuggerView.Options._onPopupHiding()"
               onpopuphidden="DebuggerView.Options._onPopupHidden()">
      <menuitem id="auto-pretty-print"
                type="checkbox"
                label="&debuggerUI.autoPrettyPrint;"
                accesskey="&debuggerUI.autoPrettyPrint.accesskey;"
                command="toggleAutoPrettyPrint"/>
      <menuitem id="pause-on-exceptions"
                type="checkbox"
                label="&debuggerUI.pauseExceptions;"
                accesskey="&debuggerUI.pauseExceptions.accesskey;"
                command="togglePauseOnExceptions"/>
      <menuitem id="ignore-caught-exceptions"
                type="checkbox"
                label="&debuggerUI.ignoreCaughtExceptions;"
                accesskey="&debuggerUI.ignoreCaughtExceptions.accesskey;"
                command="toggleIgnoreCaughtExceptions"/>
      <menuitem id="show-panes-on-startup"
                type="checkbox"
                label="&debuggerUI.showPanesOnInit;"
                accesskey="&debuggerUI.showPanesOnInit.accesskey;"
                command="toggleShowPanesOnStartup"/>
      <menuitem id="show-vars-only-enum"
                type="checkbox"
                label="&debuggerUI.showOnlyEnum;"
                accesskey="&debuggerUI.showOnlyEnum.accesskey;"
                command="toggleShowOnlyEnum"/>
      <menuitem id="show-vars-filter-box"
                type="checkbox"
                label="&debuggerUI.showVarsFilter;"
                accesskey="&debuggerUI.showVarsFilter.accesskey;"
                command="toggleShowVariablesFilterBox"/>
      <menuitem id="show-original-source"
                type="checkbox"
                label="&debuggerUI.showOriginalSource;"
                accesskey="&debuggerUI.showOriginalSource.accesskey;"
                command="toggleShowOriginalSource"/>
    </menupopup>
  </popupset>

  <keyset id="debuggerKeys">
    <key id="nextSourceKey"
         keycode="VK_DOWN"
         modifiers="accel alt"
         command="nextSourceCommand"/>
    <key id="prevSourceKey"
         keycode="VK_UP"
         modifiers="accel alt"
         command="prevSourceCommand"/>
    <key id="resumeKey"
         keycode="&debuggerUI.stepping.resume1;"
         command="resumeCommand"/>
    <key id="resumeKey2"
         keycode="&debuggerUI.stepping.resume2;"
         modifiers="accel"
         command="resumeCommand"/>
    <key id="stepOverKey"
         keycode="&debuggerUI.stepping.stepOver1;"
         command="stepOverCommand"/>
    <key id="stepOverKey2"
         keycode="&debuggerUI.stepping.stepOver2;"
         modifiers="accel"
         command="stepOverCommand"/>
    <key id="stepInKey"
         keycode="&debuggerUI.stepping.stepIn1;"
         command="stepInCommand"/>
    <key id="stepInKey2"
         keycode="&debuggerUI.stepping.stepIn2;"
         modifiers="accel"
         command="stepInCommand"/>
    <key id="stepOutKey"
         keycode="&debuggerUI.stepping.stepOut1;"
         modifiers="shift"
         command="stepOutCommand"/>
    <key id="stepOutKey2"
         keycode="&debuggerUI.stepping.stepOut2;"
         modifiers="accel shift"
         command="stepOutCommand"/>
    <key id="fileSearchKey"
         key="&debuggerUI.searchFile.key;"
         modifiers="accel"
         command="fileSearchCommand"/>
    <key id="fileSearchKey"
         key="&debuggerUI.searchFile.altkey;"
         modifiers="accel"
         command="fileSearchCommand"/>
    <key id="globalSearchKey"
         key="&debuggerUI.searchGlobal.key;"
         modifiers="accel alt"
         command="globalSearchCommand"/>
    <key id="functionSearchKey"
         key="&debuggerUI.searchFunction.key;"
         modifiers="accel"
         command="functionSearchCommand"/>
    <key id="tokenSearchKey"
         key="&debuggerUI.searchToken.key;"
         modifiers="accel"
         command="tokenSearchCommand"/>
    <key id="lineSearchKey"
         key="&debuggerUI.searchGoToLine.key;"
         modifiers="accel"
         command="lineSearchCommand"/>
    <key id="variableSearchKey"
         key="&debuggerUI.searchVariable.key;"
         modifiers="accel alt"
         command="variableSearchCommand"/>
    <key id="variablesFocusKey"
         key="&debuggerUI.focusVariables.key;"
         modifiers="accel shift"
         command="variablesFocusCommand"/>
    <key id="addBreakpointKey"
         key="&debuggerUI.seMenuBreak.key;"
         modifiers="accel"
         command="addBreakpointCommand"/>
    <key id="addConditionalBreakpointKey"
         key="&debuggerUI.seMenuCondBreak.key;"
         modifiers="accel shift"
         command="addConditionalBreakpointCommand"/>
    <key id="addWatchExpressionKey"
         key="&debuggerUI.seMenuAddWatch.key;"
         modifiers="accel shift"
         command="addWatchExpressionCommand"/>
    <key id="removeAllWatchExpressionsKey"
         key="&debuggerUI.removeAllWatch.key;"
         modifiers="accel alt"
         command="removeAllWatchExpressionsCommand"/>
  </keyset>

  <vbox id="body"
        class="theme-body"
        layout="horizontal"
        flex="1">
    <toolbar id="debugger-toolbar"
             class="devtools-toolbar">
      <hbox id="debugger-controls"
            class="devtools-toolbarbutton-group">
        <toolbarbutton id="resume"
                       class="devtools-toolbarbutton"
                       tabindex="0"/>
        <toolbarbutton id="step-over"
                       class="devtools-toolbarbutton"
                       tabindex="0"/>
        <toolbarbutton id="step-in"
                       class="devtools-toolbarbutton"
                       tabindex="0"/>
        <toolbarbutton id="step-out"
                       class="devtools-toolbarbutton"
                       tabindex="0"/>
      </hbox>
      <hbox>
        <toolbarbutton id="trace"
                       class="devtools-toolbarbutton"
                       command="toggleTracing"
                       tabindex="0"
                       hidden="true"/>
      </hbox>
      <vbox id="stackframes" flex="1"/>
      <textbox id="searchbox"
               class="devtools-searchinput" type="search"/>
      <toolbarbutton id="instruments-pane-toggle"
                     class="devtools-toolbarbutton"
                     tooltiptext="&debuggerUI.panesButton.tooltip;"
                     tabindex="0"/>
      <toolbarbutton id="debugger-options"
                     class="devtools-option-toolbarbutton"
                     tooltiptext="&debuggerUI.optsButton.tooltip;"
                     popup="debuggerPrefsContextMenu"
                     tabindex="0"/>
    </toolbar>
    <vbox id="globalsearch" orient="vertical" hidden="true"/>
    <splitter class="devtools-horizontal-splitter" hidden="true"/>
    <hbox id="debugger-widgets" flex="1">
      <tabbox id="sources-pane"
              class="devtools-sidebar-tabs">
        <tabs>
          <tab id="sources-tab" label="&debuggerUI.tabs.sources;"/>
          <tab id="callstack-tab" label="&debuggerUI.tabs.callstack;"/>
          <tab id="tracer-tab" label="&debuggerUI.tabs.traces;" hidden="true"/>
        </tabs>
        <tabpanels flex="1">
          <tabpanel id="sources-tabpanel">
            <vbox id="sources" flex="1"/>
            <toolbar id="sources-toolbar" class="devtools-toolbar">
              <hbox id="sources-controls"
                    class="devtools-toolbarbutton-group">
                <toolbarbutton id="black-box"
                               class="devtools-toolbarbutton"
                               tooltiptext="&debuggerUI.sources.blackBoxTooltip;"
                               command="blackBoxCommand"/>
                <toolbarbutton id="pretty-print"
                               class="devtools-toolbarbutton devtools-monospace"
                               label="{}"
                               tooltiptext="&debuggerUI.sources.prettyPrint;"
                               command="prettyPrintCommand"
                               hidden="true"/>
              </hbox>
              <toolbarbutton id="toggle-breakpoints"
                             class="devtools-toolbarbutton"
                             tooltiptext="&debuggerUI.sources.toggleBreakpoints;"
                             command="toggleBreakpointsCommand"/>
            </toolbar>
          </tabpanel>
          <tabpanel id="callstack-tabpanel">
            <vbox id="callstack-list" flex="1"/>
          </tabpanel>
          <tabpanel id="tracer-tabpanel">
            <vbox id="tracer-traces" flex="1"/>
            <hbox class="trace-item-template" hidden="true">
              <hbox class="trace-item" align="center" flex="1" crop="end">
                <label class="trace-type plain"/>
                <label class="trace-name plain" crop="end"/>
              </hbox>
            </hbox>
            <toolbar id="tracer-toolbar" class="devtools-toolbar">
              <toolbarbutton id="clear-tracer"
                             label="&debuggerUI.clearButton;"
                             tooltiptext="&debuggerUI.clearButton.tooltip;"
                             command="clearTraces"
                             class="devtools-toolbarbutton"/>
              <textbox id="tracer-search"
                       class="devtools-searchinput"
                       flex="1"
                       type="search"/>
            </toolbar>
          </tabpanel>
        </tabpanels>
      </tabbox>
      <splitter id="sources-and-editor-splitter"
                class="devtools-side-splitter"/>
      <deck id="editor-deck" flex="1">
        <vbox id="editor"/>
        <vbox id="black-boxed-message"
              align="center"
              pack="center">
          <description id="black-boxed-message-label">
            &debuggerUI.blackBoxMessage.label;
          </description>
          <button id="black-boxed-message-button"
                  class="devtools-toolbarbutton"
                  label="&debuggerUI.blackBoxMessage.unBlackBoxButton;"
                  image="chrome://browser/skin/devtools/debugger-blackbox-eye.png"
                  command="unBlackBoxCommand"/>
        </vbox>
        <vbox id="source-progress-container"
              align="center"
              pack="center">
          <progressmeter id="source-progress"
                         mode="undetermined"/>
        </vbox>
      </deck>
      <splitter id="editor-and-instruments-splitter"
                class="devtools-side-splitter"/>
      <tabbox id="instruments-pane"
              class="devtools-sidebar-tabs"
              hidden="true">
        <tabs>
          <tab id="variables-tab" label="&debuggerUI.tabs.variables;"/>
          <tab id="events-tab" label="&debuggerUI.tabs.events;"/>
        </tabs>
        <tabpanels flex="1">
          <tabpanel id="variables-tabpanel">
            <vbox id="expressions"/>
            <splitter class="devtools-horizontal-splitter"/>
            <vbox id="variables" flex="1"/>
          </tabpanel>
          <tabpanel id="events-tabpanel">
            <vbox id="event-listeners" flex="1"/>
          </tabpanel>
        </tabpanels>
      </tabbox>
      <splitter id="vertical-layout-splitter"
                class="devtools-horizontal-splitter"/>
      <hbox id="vertical-layout-panes-container">
        <splitter id="sources-and-instruments-splitter"
                  class="devtools-side-splitter"/>
        <!-- The sources-pane and instruments-pane will be moved in this
             container if the toolbox's host requires it. -->
      </hbox>
    </hbox>
  </vbox>

  <panel id="searchbox-help-panel"
         level="top"
         type="arrow"
         position="before_start"
         noautofocus="true"
         consumeoutsideclicks="false">
    <vbox>
      <hbox>
        <label id="filter-label"/>
      </hbox>
      <label id="searchbox-panel-operators"
             value="&debuggerUI.searchPanelOperators;"/>
      <hbox align="center">
        <button id="global-operator-button"
                class="searchbox-panel-operator-button devtools-monospace"
                command="globalSearchCommand"/>
        <label id="global-operator-label"
               class="plain searchbox-panel-operator-label"/>
      </hbox>
      <hbox align="center">
        <button id="function-operator-button"
                class="searchbox-panel-operator-button devtools-monospace"
                command="functionSearchCommand"/>
        <label id="function-operator-label"
               class="plain searchbox-panel-operator-label"/>
      </hbox>
      <hbox align="center">
        <button id="token-operator-button"
                class="searchbox-panel-operator-button devtools-monospace"
                command="tokenSearchCommand"/>
        <label id="token-operator-label"
               class="plain searchbox-panel-operator-label"/>
      </hbox>
      <hbox align="center">
        <button id="line-operator-button"
                class="searchbox-panel-operator-button devtools-monospace"
                command="lineSearchCommand"/>
        <label id="line-operator-label"
               class="plain searchbox-panel-operator-label"/>
      </hbox>
      <hbox align="center">
        <button id="variable-operator-button"
                class="searchbox-panel-operator-button devtools-monospace"
                command="variableSearchCommand"/>
        <label id="variable-operator-label"
               class="plain searchbox-panel-operator-label"/>
      </hbox>
    </vbox>
  </panel>

  <panel id="conditional-breakpoint-panel"
         level="top"
         type="arrow"
         noautofocus="true"
         consumeoutsideclicks="false">
    <vbox>
      <label id="conditional-breakpoint-panel-description"
             value="&debuggerUI.condBreakPanelTitle;"/>
      <textbox id="conditional-breakpoint-panel-textbox"/>
    </vbox>
  </panel>

</window>
