|
1 // -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- |
|
2 |
|
3 /* This Source Code Form is subject to the terms of the Mozilla Public |
|
4 * License, v. 2.0. If a copy of the MPL was not distributed with this |
|
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
|
6 |
|
7 Components.utils.import("resource://gre/modules/Services.jsm"); |
|
8 |
|
9 var gConsole, gConsoleBundle, gTextBoxEval, gEvaluator, gCodeToEvaluate; |
|
10 var gFilter; |
|
11 |
|
12 /* :::::::: Console Initialization ::::::::::::::: */ |
|
13 |
|
14 window.onload = function() |
|
15 { |
|
16 gConsole = document.getElementById("ConsoleBox"); |
|
17 gConsoleBundle = document.getElementById("ConsoleBundle"); |
|
18 gTextBoxEval = document.getElementById("TextboxEval"); |
|
19 gEvaluator = document.getElementById("Evaluator"); |
|
20 gFilter = document.getElementById("Filter"); |
|
21 |
|
22 updateSortCommand(gConsole.sortOrder); |
|
23 updateModeCommand(gConsole.mode); |
|
24 |
|
25 gEvaluator.addEventListener("load", loadOrDisplayResult, true); |
|
26 } |
|
27 |
|
28 /* :::::::: Console UI Functions ::::::::::::::: */ |
|
29 |
|
30 function changeFilter() |
|
31 { |
|
32 gConsole.filter = gFilter.value; |
|
33 |
|
34 document.persist("ConsoleBox", "filter"); |
|
35 } |
|
36 |
|
37 function changeMode(aMode) |
|
38 { |
|
39 switch (aMode) { |
|
40 case "Errors": |
|
41 case "Warnings": |
|
42 case "Messages": |
|
43 gConsole.mode = aMode; |
|
44 break; |
|
45 case "All": |
|
46 gConsole.mode = null; |
|
47 } |
|
48 |
|
49 document.persist("ConsoleBox", "mode"); |
|
50 } |
|
51 |
|
52 function clearConsole() |
|
53 { |
|
54 gConsole.clear(); |
|
55 } |
|
56 |
|
57 function changeSortOrder(aOrder) |
|
58 { |
|
59 updateSortCommand(gConsole.sortOrder = aOrder); |
|
60 } |
|
61 |
|
62 function updateSortCommand(aOrder) |
|
63 { |
|
64 var orderString = aOrder == 'reverse' ? "Descend" : "Ascend"; |
|
65 var bc = document.getElementById("Console:sort"+orderString); |
|
66 bc.setAttribute("checked", true); |
|
67 |
|
68 orderString = aOrder == 'reverse' ? "Ascend" : "Descend"; |
|
69 bc = document.getElementById("Console:sort"+orderString); |
|
70 bc.setAttribute("checked", false); |
|
71 } |
|
72 |
|
73 function updateModeCommand(aMode) |
|
74 { |
|
75 /* aMode can end up invalid if it set by an extension that replaces */ |
|
76 /* mode and then it is uninstalled or disabled */ |
|
77 var bc = document.getElementById("Console:mode" + aMode) || |
|
78 document.getElementById("Console:modeAll"); |
|
79 bc.setAttribute("checked", true); |
|
80 } |
|
81 |
|
82 function onEvalKeyPress(aEvent) |
|
83 { |
|
84 if (aEvent.keyCode == 13) |
|
85 evaluateTypein(); |
|
86 } |
|
87 |
|
88 function evaluateTypein() |
|
89 { |
|
90 gCodeToEvaluate = gTextBoxEval.value; |
|
91 // reset the iframe first; the code will be evaluated in loadOrDisplayResult |
|
92 // below, once about:blank has completed loading (see bug 385092) |
|
93 gEvaluator.contentWindow.location = "about:blank"; |
|
94 } |
|
95 |
|
96 function loadOrDisplayResult() |
|
97 { |
|
98 if (gCodeToEvaluate) { |
|
99 gEvaluator.contentWindow.location = "javascript: " + |
|
100 gCodeToEvaluate.replace(/%/g, "%25"); |
|
101 gCodeToEvaluate = ""; |
|
102 return; |
|
103 } |
|
104 |
|
105 var resultRange = gEvaluator.contentDocument.createRange(); |
|
106 resultRange.selectNode(gEvaluator.contentDocument.documentElement); |
|
107 var result = resultRange.toString(); |
|
108 if (result) |
|
109 Services.console.logStringMessage(result); |
|
110 // or could use appendMessage which doesn't persist |
|
111 } |