diff options
Diffstat (limited to 'toolkit/components/console/content/console.js')
-rw-r--r-- | toolkit/components/console/content/console.js | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/toolkit/components/console/content/console.js b/toolkit/components/console/content/console.js new file mode 100644 index 000000000..ad6802607 --- /dev/null +++ b/toolkit/components/console/content/console.js @@ -0,0 +1,111 @@ +// -*- indent-tabs-mode: nil; js-indent-level: 2 -*- + +/* 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/. */ + +Components.utils.import("resource://gre/modules/Services.jsm"); + +var gConsole, gConsoleBundle, gTextBoxEval, gEvaluator, gCodeToEvaluate; +var gFilter; + +/* :::::::: Console Initialization ::::::::::::::: */ + +window.onload = function() +{ + gConsole = document.getElementById("ConsoleBox"); + gConsoleBundle = document.getElementById("ConsoleBundle"); + gTextBoxEval = document.getElementById("TextboxEval"); + gEvaluator = document.getElementById("Evaluator"); + gFilter = document.getElementById("Filter"); + + updateSortCommand(gConsole.sortOrder); + updateModeCommand(gConsole.mode); + + gEvaluator.addEventListener("load", loadOrDisplayResult, true); +} + +/* :::::::: Console UI Functions ::::::::::::::: */ + +function changeFilter() +{ + gConsole.filter = gFilter.value; + + document.persist("ConsoleBox", "filter"); +} + +function changeMode(aMode) +{ + switch (aMode) { + case "Errors": + case "Warnings": + case "Messages": + gConsole.mode = aMode; + break; + case "All": + gConsole.mode = null; + } + + document.persist("ConsoleBox", "mode"); +} + +function clearConsole() +{ + gConsole.clear(); +} + +function changeSortOrder(aOrder) +{ + updateSortCommand(gConsole.sortOrder = aOrder); +} + +function updateSortCommand(aOrder) +{ + var orderString = aOrder == 'reverse' ? "Descend" : "Ascend"; + var bc = document.getElementById("Console:sort"+orderString); + bc.setAttribute("checked", true); + + orderString = aOrder == 'reverse' ? "Ascend" : "Descend"; + bc = document.getElementById("Console:sort"+orderString); + bc.setAttribute("checked", false); +} + +function updateModeCommand(aMode) +{ + /* aMode can end up invalid if it set by an extension that replaces */ + /* mode and then it is uninstalled or disabled */ + var bc = document.getElementById("Console:mode" + aMode) || + document.getElementById("Console:modeAll"); + bc.setAttribute("checked", true); +} + +function onEvalKeyPress(aEvent) +{ + if (aEvent.keyCode == 13) + evaluateTypein(); +} + +function evaluateTypein() +{ + gCodeToEvaluate = gTextBoxEval.value; + // reset the iframe first; the code will be evaluated in loadOrDisplayResult + // below, once about:blank has completed loading (see bug 385092) + gEvaluator.contentWindow.location = "about:blank"; +} + +function loadOrDisplayResult() +{ + if (gCodeToEvaluate) { + gEvaluator.contentWindow.location = "javascript: " + + gCodeToEvaluate.replace(/%/g, "%25"); + gCodeToEvaluate = ""; + return; + } + + var resultRange = gEvaluator.contentDocument.createRange(); + resultRange.selectNode(gEvaluator.contentDocument.documentElement); + var result = resultRange.toString(); + if (result) + Services.console.logStringMessage(result); + // or could use appendMessage which doesn't persist +} |