summaryrefslogtreecommitdiffstats
path: root/devtools/client/debugger/views/options-view.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/debugger/views/options-view.js')
-rw-r--r--devtools/client/debugger/views/options-view.js215
1 files changed, 215 insertions, 0 deletions
diff --git a/devtools/client/debugger/views/options-view.js b/devtools/client/debugger/views/options-view.js
new file mode 100644
index 000000000..2fb5b0600
--- /dev/null
+++ b/devtools/client/debugger/views/options-view.js
@@ -0,0 +1,215 @@
+/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
+/* vim: set ft=javascript ts=2 et sw=2 tw=80: */
+/* 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/. */
+/* import-globals-from ../debugger-controller.js */
+/* import-globals-from ../debugger-view.js */
+/* import-globals-from ../utils.js */
+/* globals document, window */
+"use strict";
+
+// A time interval sufficient for the options popup panel to finish hiding
+// itself.
+const POPUP_HIDDEN_DELAY = 100; // ms
+
+/**
+ * Functions handling the options UI.
+ */
+function OptionsView(DebuggerController, DebuggerView) {
+ dumpn("OptionsView was instantiated");
+
+ this.DebuggerController = DebuggerController;
+ this.DebuggerView = DebuggerView;
+
+ this._toggleAutoPrettyPrint = this._toggleAutoPrettyPrint.bind(this);
+ this._togglePauseOnExceptions = this._togglePauseOnExceptions.bind(this);
+ this._toggleIgnoreCaughtExceptions = this._toggleIgnoreCaughtExceptions.bind(this);
+ this._toggleShowPanesOnStartup = this._toggleShowPanesOnStartup.bind(this);
+ this._toggleShowVariablesOnlyEnum = this._toggleShowVariablesOnlyEnum.bind(this);
+ this._toggleShowVariablesFilterBox = this._toggleShowVariablesFilterBox.bind(this);
+ this._toggleShowOriginalSource = this._toggleShowOriginalSource.bind(this);
+ this._toggleAutoBlackBox = this._toggleAutoBlackBox.bind(this);
+}
+
+OptionsView.prototype = {
+ /**
+ * Initialization function, called when the debugger is started.
+ */
+ initialize: function () {
+ dumpn("Initializing the OptionsView");
+
+ this._button = document.getElementById("debugger-options");
+ this._autoPrettyPrint = document.getElementById("auto-pretty-print");
+ this._pauseOnExceptionsItem = document.getElementById("pause-on-exceptions");
+ this._ignoreCaughtExceptionsItem = document.getElementById("ignore-caught-exceptions");
+ this._showPanesOnStartupItem = document.getElementById("show-panes-on-startup");
+ this._showVariablesOnlyEnumItem = document.getElementById("show-vars-only-enum");
+ this._showVariablesFilterBoxItem = document.getElementById("show-vars-filter-box");
+ this._showOriginalSourceItem = document.getElementById("show-original-source");
+ this._autoBlackBoxItem = document.getElementById("auto-black-box");
+
+ this._autoPrettyPrint.setAttribute("checked", Prefs.autoPrettyPrint);
+ this._pauseOnExceptionsItem.setAttribute("checked", Prefs.pauseOnExceptions);
+ this._ignoreCaughtExceptionsItem.setAttribute("checked", Prefs.ignoreCaughtExceptions);
+ this._showPanesOnStartupItem.setAttribute("checked", Prefs.panesVisibleOnStartup);
+ this._showVariablesOnlyEnumItem.setAttribute("checked", Prefs.variablesOnlyEnumVisible);
+ this._showVariablesFilterBoxItem.setAttribute("checked", Prefs.variablesSearchboxVisible);
+ this._showOriginalSourceItem.setAttribute("checked", Prefs.sourceMapsEnabled);
+ this._autoBlackBoxItem.setAttribute("checked", Prefs.autoBlackBox);
+
+ this._addCommands();
+ },
+
+ /**
+ * Destruction function, called when the debugger is closed.
+ */
+ destroy: function () {
+ dumpn("Destroying the OptionsView");
+ // Nothing to do here yet.
+ },
+
+ /**
+ * Add commands that XUL can fire.
+ */
+ _addCommands: function () {
+ XULUtils.addCommands(document.getElementById("debuggerCommands"), {
+ toggleAutoPrettyPrint: () => this._toggleAutoPrettyPrint(),
+ togglePauseOnExceptions: () => this._togglePauseOnExceptions(),
+ toggleIgnoreCaughtExceptions: () => this._toggleIgnoreCaughtExceptions(),
+ toggleShowPanesOnStartup: () => this._toggleShowPanesOnStartup(),
+ toggleShowOnlyEnum: () => this._toggleShowVariablesOnlyEnum(),
+ toggleShowVariablesFilterBox: () => this._toggleShowVariablesFilterBox(),
+ toggleShowOriginalSource: () => this._toggleShowOriginalSource(),
+ toggleAutoBlackBox: () => this._toggleAutoBlackBox()
+ });
+ },
+
+ /**
+ * Listener handling the 'gear menu' popup showing event.
+ */
+ _onPopupShowing: function () {
+ this._button.setAttribute("open", "true");
+ window.emit(EVENTS.OPTIONS_POPUP_SHOWING);
+ },
+
+ /**
+ * Listener handling the 'gear menu' popup hiding event.
+ */
+ _onPopupHiding: function () {
+ this._button.removeAttribute("open");
+ },
+
+ /**
+ * Listener handling the 'gear menu' popup hidden event.
+ */
+ _onPopupHidden: function () {
+ window.emit(EVENTS.OPTIONS_POPUP_HIDDEN);
+ },
+
+ /**
+ * Listener handling the 'auto pretty print' menuitem command.
+ */
+ _toggleAutoPrettyPrint: function () {
+ Prefs.autoPrettyPrint =
+ this._autoPrettyPrint.getAttribute("checked") == "true";
+ },
+
+ /**
+ * Listener handling the 'pause on exceptions' menuitem command.
+ */
+ _togglePauseOnExceptions: function () {
+ Prefs.pauseOnExceptions =
+ this._pauseOnExceptionsItem.getAttribute("checked") == "true";
+
+ this.DebuggerController.activeThread.pauseOnExceptions(
+ Prefs.pauseOnExceptions,
+ Prefs.ignoreCaughtExceptions);
+ },
+
+ _toggleIgnoreCaughtExceptions: function () {
+ Prefs.ignoreCaughtExceptions =
+ this._ignoreCaughtExceptionsItem.getAttribute("checked") == "true";
+
+ this.DebuggerController.activeThread.pauseOnExceptions(
+ Prefs.pauseOnExceptions,
+ Prefs.ignoreCaughtExceptions);
+ },
+
+ /**
+ * Listener handling the 'show panes on startup' menuitem command.
+ */
+ _toggleShowPanesOnStartup: function () {
+ Prefs.panesVisibleOnStartup =
+ this._showPanesOnStartupItem.getAttribute("checked") == "true";
+ },
+
+ /**
+ * Listener handling the 'show non-enumerables' menuitem command.
+ */
+ _toggleShowVariablesOnlyEnum: function () {
+ let pref = Prefs.variablesOnlyEnumVisible =
+ this._showVariablesOnlyEnumItem.getAttribute("checked") == "true";
+
+ this.DebuggerView.Variables.onlyEnumVisible = pref;
+ },
+
+ /**
+ * Listener handling the 'show variables searchbox' menuitem command.
+ */
+ _toggleShowVariablesFilterBox: function () {
+ let pref = Prefs.variablesSearchboxVisible =
+ this._showVariablesFilterBoxItem.getAttribute("checked") == "true";
+
+ this.DebuggerView.Variables.searchEnabled = pref;
+ },
+
+ /**
+ * Listener handling the 'show original source' menuitem command.
+ */
+ _toggleShowOriginalSource: function () {
+ let pref = Prefs.sourceMapsEnabled =
+ this._showOriginalSourceItem.getAttribute("checked") == "true";
+
+ // Don't block the UI while reconfiguring the server.
+ window.once(EVENTS.OPTIONS_POPUP_HIDDEN, () => {
+ // The popup panel needs more time to hide after triggering onpopuphidden.
+ window.setTimeout(() => {
+ this.DebuggerController.reconfigureThread({
+ useSourceMaps: pref,
+ autoBlackBox: Prefs.autoBlackBox
+ });
+ }, POPUP_HIDDEN_DELAY);
+ });
+ },
+
+ /**
+ * Listener handling the 'automatically black box minified sources' menuitem
+ * command.
+ */
+ _toggleAutoBlackBox: function () {
+ let pref = Prefs.autoBlackBox =
+ this._autoBlackBoxItem.getAttribute("checked") == "true";
+
+ // Don't block the UI while reconfiguring the server.
+ window.once(EVENTS.OPTIONS_POPUP_HIDDEN, () => {
+ // The popup panel needs more time to hide after triggering onpopuphidden.
+ window.setTimeout(() => {
+ this.DebuggerController.reconfigureThread({
+ useSourceMaps: Prefs.sourceMapsEnabled,
+ autoBlackBox: pref
+ });
+ }, POPUP_HIDDEN_DELAY);
+ });
+ },
+
+ _button: null,
+ _pauseOnExceptionsItem: null,
+ _showPanesOnStartupItem: null,
+ _showVariablesOnlyEnumItem: null,
+ _showVariablesFilterBoxItem: null,
+ _showOriginalSourceItem: null,
+ _autoBlackBoxItem: null
+};
+
+DebuggerView.Options = new OptionsView(DebuggerController, DebuggerView);