114 lines
3.3 KiB
JavaScript
Executable File
114 lines
3.3 KiB
JavaScript
Executable File
var commandHistory;
|
|
var historyIndex;
|
|
|
|
function showExtendedDebug() {
|
|
if (debugWindow != null) {
|
|
hideDebug();
|
|
}
|
|
|
|
if (debugWindow == null) {
|
|
commandHistory = new Array();
|
|
historyIndex = 0;
|
|
|
|
debugWindow = new Window('debug_window', {className: 'dialog',width:250, height:100, right:4, minWidth:250, bottom:42, zIndex:1000, opacity:1, showEffect: Element.show, resizable: true, title: "Debug"})
|
|
debugWindow.getContent().innerHTML = "<style>#debug_window .dialog_content {background:#000;}</style> <div font='monaco' id='debug' style='padding:3px;color:#0F0;font-family:monaco'></div>";
|
|
|
|
//create hourglass icon and attach events to it.
|
|
var cont = "<div id=\"debug_window_inspect\" style=\"width: 15px; height: 15px; background: transparent url(themes/default/inspect.gif) no-repeat 0 0; position:absolute; top:5px; left:70px; cursor:pointer; z-index:3000;\"></div>";
|
|
|
|
new Insertion.After('debug_window_maximize', cont);
|
|
Event.observe('debug_window_inspect', 'click', enterInspectionMode, false);
|
|
|
|
//create command text box
|
|
cont = "Eval:<input id=\"debug_window_command\" type=\"textbox\" style=\"width:150px; height: 12px; color: black;\">"
|
|
debugWindow.setStatusBar(cont);
|
|
|
|
Event.observe('debug_window_command', 'mousedown', donothing);
|
|
Event.observe('debug_window_command', 'keypress', evalJS, false);
|
|
}
|
|
debugWindow.show();
|
|
}
|
|
|
|
function donothing(evt){
|
|
Field.activate('debug_window_command');
|
|
return false;
|
|
}
|
|
|
|
function evalJS(evt){
|
|
if(evt.keyCode == Event.KEY_RETURN){
|
|
var js = $F('debug_window_command');
|
|
try{
|
|
var ret = eval(js);
|
|
if(ret != null)
|
|
debug(ret);
|
|
}catch(e){
|
|
debug(e);
|
|
}
|
|
$('debug_window_command').value = '';
|
|
|
|
Field.activate('debug_window_command');
|
|
commandHistory.push(js);
|
|
historyIndex = 0;
|
|
}
|
|
|
|
if(evt.keyCode == Event.KEY_UP){
|
|
if(commandHistory.length > historyIndex){
|
|
historyIndex++;
|
|
var js = commandHistory[commandHistory.length-historyIndex];
|
|
$('debug_window_command').value = js;
|
|
Event.stop(evt);
|
|
Field.activate('debug_window_command');
|
|
}
|
|
}
|
|
|
|
if(evt.keyCode == Event.KEY_DOWN){
|
|
if(commandHistory.length >= historyIndex && historyIndex > 1){
|
|
historyIndex--;
|
|
var js = commandHistory[commandHistory.length-historyIndex];
|
|
$('debug_window_command').value = js;
|
|
Event.stop(evt);
|
|
Field.activate('debug_window_command');
|
|
}
|
|
}
|
|
}
|
|
|
|
function enterInspectionMode(evt){
|
|
//stop observing magnifying glass
|
|
Event.stopObserving('debug_window_inspect', 'click', enterInspectionMode, false);
|
|
//change pointer
|
|
document.body.style.cursor='help';
|
|
//start observing mouse clicks
|
|
Event.observe(window, 'click', inspectItem, false);
|
|
}
|
|
|
|
function inspectItem(evt){
|
|
// the element that triggered the event
|
|
var element = Event.element(evt);
|
|
if(element.id!="debug_window_inspect"){
|
|
clearDebug()
|
|
//change pointer
|
|
document.body.style.cursor='default';
|
|
debug(element.id);
|
|
inspect(element);
|
|
//stop observing mouse clicks
|
|
Event.stopObserving(window, 'click', inspectItem, false);
|
|
//alert('doing something');
|
|
//start observing mag
|
|
Event.observe('debug_window_inspect', 'click', enterInspectionMode, false);
|
|
}
|
|
}
|
|
|
|
function clearDebug() {
|
|
var win = $('debug');
|
|
if (win == null)
|
|
return;
|
|
|
|
win.innerHTML=" ";
|
|
//clear inspections too
|
|
var divs = document.getElementsByClassName('inspector');
|
|
divs.each(function(div){
|
|
Element.remove(div);
|
|
});
|
|
}
|
|
|