text: /*
   * Copyright (C) 2014 Apple Inc. All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions
   * are met:
   * 1. Redistributions of source code must retain the above copyright
   *    notice, this list of conditions and the following disclaimer.
   * 2. Redistributions in binary form must reproduce the above copyright
   *    notice, this list of conditions and the following disclaimer in the
   *    documentation and/or other materials provided with the distribution.
   *
   * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
   * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
   * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
   * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
   * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
   * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
   * THE POSSIBILITY OF SUCH DAMAGE.
   */
  
  WebInspector.DebuggerDashboardView = function (representedObject) {
      WebInspector.DashboardView.call(this, representedObject, "debugger");
  
      WebInspector.debuggerManager.addEventListener(WebInspector.DebuggerManager.Event.ActiveCallFrameDidChange, this._rebuildLocation, this);
  
      this._navigationBar = new WebInspector.NavigationBar();
      this.element.appendChild(this._navigationBar.element);
  
      var resumeImage;
      if (WebInspector.Platform.isLegacyMacOS) resumeImage = { src: "Images/Legacy/Resume.svg", width: 16, height: 16 };else resumeImage = { src: "Images/Resume.svg", width: 15, height: 15 };
  
      var tooltip = WebInspector.UIString("Continue script execution (%s or %s)").format(WebInspector.debuggerSidebarPanel.pauseOrResumeKeyboardShortcut.displayName, WebInspector.debuggerSidebarPanel.pauseOrResumeAlternateKeyboardShortcut.displayName);
      this._debuggerResumeButtonItem = new WebInspector.ActivateButtonNavigationItem("debugger-dashboard-pause", tooltip, tooltip, resumeImage.src, resumeImage.width, resumeImage.height, true);
      this._debuggerResumeButtonItem.activated = true;
      this._debuggerResumeButtonItem.addEventListener(WebInspector.ButtonNavigationItem.Event.Clicked, this._resumeButtonClicked, this);
      this._navigationBar.addNavigationItem(this._debuggerResumeButtonItem);
  
      var message = this._messageElement = document.createElement("div");
      message.classList.add(WebInspector.DebuggerDashboardView.MessageStyleClassName);
      message.title = message.textContent = WebInspector.UIString("Debugger Paused");
      this.element.appendChild(message);
  
      var dividerElement = document.createElement("div");
      dividerElement.classList.add(WebInspector.DebuggerDashboardView.DividerStyleClassName);
      this.element.appendChild(dividerElement);
  
      var locationElement = this._locationElement = document.createElement("div");
      locationElement.classList.add(WebInspector.DebuggerDashboardView.LocationStyleClassName);
      this.element.appendChild(locationElement);
  
      this._rebuildLocation();
  };
  
  WebInspector.DebuggerDashboardView.FunctionIconStyleClassName = WebInspector.CallFrameTreeElement.FunctionIconStyleClassName;
  WebInspector.DebuggerDashboardView.EventListenerIconStyleClassName = WebInspector.CallFrameTreeElement.EventListenerIconStyleClassName;
  
  WebInspector.DebuggerDashboardView.IconStyleClassName = "icon";
  WebInspector.DebuggerDashboardView.MessageStyleClassName = "message";
  WebInspector.DebuggerDashboardView.DividerStyleClassName = "divider";
  WebInspector.DebuggerDashboardView.LocationStyleClassName = "location";
  WebInspector.DebuggerDashboardView.FunctionNameStyleClassName = "function-name";
  
  WebInspector.DebuggerDashboardView.prototype = {
      constructor: WebInspector.DebuggerDashboardView,
      __proto__: WebInspector.DashboardView.prototype,
  
      _rebuildLocation: function _rebuildLocation() {
          if (!WebInspector.debuggerManager.activeCallFrame) return;
  
          this._locationElement.removeChildren();
  
          var callFrame = WebInspector.debuggerManager.activeCallFrame;
          var functionName = callFrame.functionName || WebInspector.UIString("(anonymous function)");
  
          var iconClassName = WebInspector.DebuggerDashboardView.FunctionIconStyleClassName;
  
          // This is more than likely an event listener function with an "on" prefix and it is
          // as long or longer than the shortest event listener name -- "oncut".
          if (callFrame.functionName && callFrame.functionName.startsWith("on") && callFrame.functionName.length >= 5) iconClassName = WebInspector.DebuggerDashboardView.EventListenerIconStyleClassName;
  
          var iconElement = document.createElement("div");
          iconElement.classList.add(iconClassName);
          this._locationElement.appendChild(iconElement);
  
          var iconImageElement = document.createElement("img");
          iconImageElement.className = WebInspector.DebuggerDashboardView.IconStyleClassName;
          iconElement.appendChild(iconImageElement);
  
          var nameElement = document.createElement("div");
          nameElement.appendChild(document.createTextNode(functionName));
          nameElement.classList.add(WebInspector.DebuggerDashboardView.FunctionNameStyleClassName);
          this._locationElement.appendChild(nameElement);
  
          var sourceCodeLocation = WebInspector.debuggerManager.activeCallFrame.sourceCodeLocation;
          var shouldPreventLinkFloat = true;
          var linkElement = WebInspector.createSourceCodeLocationLink(sourceCodeLocation, shouldPreventLinkFloat);
          this._locationElement.appendChild(linkElement);
      },
  
      _resumeButtonClicked: function _resumeButtonClicked() {
          WebInspector.debuggerManager.resume();
      }
  };
  