<?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"?>
<?xul-overlay href="chrome://browser/content/devtools/source-editor-overlay.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="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="sourceEditorCommands"/>

  <commandset id="debuggerCommands">
    <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="DebuggerView.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="togglePauseOnExceptions"
             oncommand="DebuggerView.Options._togglePauseOnExceptions()"/>
    <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()"/>
  </commandset>

  <popupset id="debuggerPopupset">
    <menupopup id="sourceEditorContextMenu"
               onpopupshowing="goUpdateSourceEditorMenuItems()">
      <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="se-cMenu-copy"/>
      <menuseparator/>
      <menuitem id="se-cMenu-selectAll"/>
      <menuseparator/>
      <menuitem id="se-dbg-cMenu-findFile"
                label="&debuggerUI.searchFile;"
                accesskey="&debuggerUI.searchFile.key;"
                key="fileSearchKey"
                command="fileSearchCommand"/>
      <menuitem id="se-dbg-cMenu-findGlobal"
                label="&debuggerUI.searchGlobal;"
                accesskey="&debuggerUI.searchGlobal.key;"
                key="globalSearchKey"
                command="globalSearchCommand"/>
      <menuitem id="se-dbg-cMenu-findFunction"
                label="&debuggerUI.searchFunction;"
                accesskey="&debuggerUI.searchFunction.key;"
                key="functionSearchKey"
                command="functionSearchCommand"/>
      <menuseparator/>
      <menuitem id="se-dbg-cMenu-findToken"
                label="&debuggerUI.searchToken;"
                accesskey="&debuggerUI.searchToken.key;"
                key="tokenSearchKey"
                command="tokenSearchCommand"/>
      <menuitem id="se-dbg-cMenu-findLine"
                label="&debuggerUI.searchLine;"
                accesskey="&debuggerUI.searchLine.key;"
                key="lineSearchKey"
                command="lineSearchCommand"/>
      <menuseparator/>
      <menuitem id="se-dbg-cMenu-findVariable"
                label="&debuggerUI.searchVariable;"
                accesskey="&debuggerUI.searchVariable.key;"
                key="variableSearchKey"
                command="variableSearchCommand"/>
      <menuitem id="se-dbg-cMenu-focusVariables"
                label="&debuggerUI.focusVariables;"
                accesskey="&debuggerUI.focusVariables.key;"
                key="variablesFocusKey"
                command="variablesFocusCommand"/>
    </menupopup>
    <menupopup id="debuggerWatchExpressionsContextMenu">
      <menuitem id="add-watch-expression"
                label="&debuggerUI.addWatch;"
                accesskey="&debuggerUI.addWatch.key;"
                key="addWatchExpressionKey"
                command="addWatchExpressionCommand"/>
      <menuitem id="removeAll-watch-expression"
                label="&debuggerUI.removeAllWatch;"
                accesskey="&debuggerUI.removeAllWatch.key;"
                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="pause-on-exceptions"
                type="checkbox"
                label="&debuggerUI.pauseExceptions;"
                accesskey="&debuggerUI.pauseExceptions.key;"
                command="togglePauseOnExceptions"/>
      <menuitem id="show-panes-on-startup"
                type="checkbox"
                label="&debuggerUI.showPanesOnInit;"
                accesskey="&debuggerUI.showPanesOnInit.key;"
                command="toggleShowPanesOnStartup"/>
      <menuitem id="show-vars-only-enum"
                type="checkbox"
                label="&debuggerUI.showOnlyEnum;"
                accesskey="&debuggerUI.showOnlyEnum.key;"
                command="toggleShowOnlyEnum"/>
      <menuitem id="show-vars-filter-box"
                type="checkbox"
                label="&debuggerUI.showVarsFilter;"
                accesskey="&debuggerUI.showVarsFilter.key;"
                command="toggleShowVariablesFilterBox"/>
      <menuitem id="show-original-source"
                type="checkbox"
                label="&debuggerUI.showOriginalSource;"
                accesskey="&debuggerUI.showOriginalSource.key;"
                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.resume;"
         command="resumeCommand"/>
    <key id="stepOverKey"
         keycode="&debuggerUI.stepping.stepOver;"
         command="stepOverCommand"/>
    <key id="stepInKey"
         keycode="&debuggerUI.stepping.stepIn;"
         command="stepInCommand"/>
    <key id="stepOutKey"
         keycode="&debuggerUI.stepping.stepOut;"
         modifiers="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.searchLine.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" flex="1">
    <toolbar class="devtools-toolbar">
      <hbox id="debugger-controls">
        <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>
      <menulist id="chrome-globals"
                class="devtools-menulist"
                sizetopopup="none" hidden="true"/>
      <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 flex="1">
      <scrollbox id="globalsearch" orient="vertical" hidden="true"/>
      <splitter class="devtools-horizontal-splitter" hidden="true"/>
      <hbox flex="1">
        <vbox id="sources-pane">
          <vbox id="sources" flex="1"/>
        </vbox>
        <splitter class="devtools-side-splitter"/>
        <vbox id="editor" flex="1"/>
        <splitter class="devtools-side-splitter"/>
        <vbox id="instruments-pane" hidden="true">
          <vbox id="expressions"/>
          <splitter class="devtools-horizontal-splitter"/>
          <vbox id="variables" flex="1"/>
        </vbox>
      </hbox>
    </vbox>
  </vbox>

  <panel id="searchbox-help-panel"
         level="top"
         type="arrow"
         noautofocus="true"
         position="before_start">
    <vbox>
      <label id="searchbox-panel-description"
             value="&debuggerUI.searchPanelTitle;"/>
      <hbox align="center">
        <button id="global-operator-button"
                class="searchbox-panel-operator-button"
                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"
                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"
                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"
                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"
                command="variableSearchCommand"/>
        <label id="variable-operator-label"
               class="plain searchbox-panel-operator-label"/>
      </hbox>
    </vbox>
  </panel>

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

  <panel id="resumption-order-panel"
         type="arrow"
         noautofocus="true"
         position="before_start">
    <hbox align="start">
      <image class="alert-icon"/>
      <label id="resumption-panel-desc" class="description"/>
    </hbox>
  </panel>

</window>
