~azzar1/unity/add-show-desktop-key

« back to all changes in this revision

Viewing changes to www/media/console/console.js

  • Committer: dcoles
  • Date: 2008-07-03 04:20:54 UTC
  • Revision ID: svn-v3-trunk0:2b9c9e99-6f39-0410-b283-7f802c844ae2:trunk:803
Setup: Modularised setup.py so it is now no longer over 1000 lines. This should 
allow us to get in there and tidy up each module much easier. Also removed 
updatejails since this functionality seems to be duplicated with remakeuser.py 
and remakealluser.py scripts.

Show diffs side-by-side

added added

removed removed

Lines of Context:
58
58
    var callback1 = function(xhr)
59
59
        {
60
60
            var json_text = xhr.responseText;
61
 
            server_key = JSON.parse(json_text).key;
 
61
            server_key = JSON.parse(json_text);
62
62
            server_started = true;
63
63
            if (callback != null)
64
64
                callback();
65
65
        }
66
 
 
67
 
    //var current_path;
68
 
    if((typeof(current_path) != 'undefined') && current_file)
69
 
    {
70
 
        // We have a current_path - give a suggestion to the server
71
 
        var path;
72
 
        if (current_file.isdir)
73
 
        {
74
 
            // Browser
75
 
            path = path_join("/home", current_path);
76
 
        }
77
 
        else
78
 
        {
79
 
            // Editor - need to chop off filename
80
 
            var tmp_path = current_path.split('/');
81
 
            tmp_path.pop();
82
 
            path = path_join("/home", tmp_path.join('/'));
83
 
        }
84
 
        ajax_call(callback1, "console", "service", {"ivle.op": "start", "cwd": path}, "POST");
85
 
    }
86
 
    else
87
 
    {
88
 
        // No current_path - let the server decide
89
 
        ajax_call(callback1, "console", "service", {"ivle.op": "start"}, "POST");
90
 
    }
 
66
    ajax_call(callback1, "consoleservice", "start", {}, "POST");
91
67
}
92
68
 
93
69
/** Initialises the console. All apps which import console are required to
254
230
 
255
231
    if (typeof(inputbox) == "string")
256
232
    {
257
 
        var inputline = inputbox + "\n";
 
233
        var inputline = inputbox;
258
234
        inputbox = null;
 
235
        var graytimer = null;
259
236
    }
260
237
    else
261
238
    {
262
 
        /* Disable the text box */
263
 
        inputbox.setAttribute("disabled", "disabled");
264
 
 
265
 
        var inputline = inputbox.value + "\n";
 
239
        GLOBAL_inputbox = inputbox;     /* For timer */
 
240
        var inputline = inputbox.value;
 
241
        var graytimer = setTimeout("GLOBAL_inputbox.setAttribute(\"class\", "
 
242
            + "\"disabled\");", 100);
266
243
    }
267
244
    var output = document.getElementById("console_output");
268
245
    {
269
246
        // Print ">>>" span
270
247
        var span = document.createElement("span");
271
248
        span.setAttribute("class", "inputPrompt");
272
 
        span.appendChild(document.createTextNode(
273
 
              document.getElementById("console_prompt").firstChild.nodeValue)
274
 
                        );
 
249
        span.appendChild(document.createTextNode(">>> "));
275
250
        output.appendChild(span);
276
251
        // Print input line itself in a span
277
252
        var span = document.createElement("span");
278
253
        span.setAttribute("class", "inputMsg");
279
 
        span.appendChild(document.createTextNode(inputline));
 
254
        span.appendChild(document.createTextNode(inputline + "\n"));
280
255
        output.appendChild(span);
281
256
    }
282
 
    var args = {"ivle.op": "chat", "kind": which, "key": server_key, "text":inputline};
 
257
    var args = {"key": server_key, "text":inputline};
283
258
    var callback = function(xhr)
284
259
        {
285
 
            console_response(inputbox, inputline, xhr.responseText);
 
260
            console_response(inputbox, graytimer, inputline, xhr.responseText);
286
261
        }
287
 
    ajax_call(callback, "console", "service", args, "POST");
 
262
    /* Disable the text box */
 
263
    if (inputbox != null)
 
264
        inputbox.setAttribute("disabled", "disabled");
 
265
    ajax_call(callback, "consoleservice", which, args, "POST");
288
266
}
289
267
 
290
 
function console_response(inputbox, inputline, responseText)
 
268
function console_response(inputbox, graytimer, inputline, responseText)
291
269
{
292
270
    try
293
271
    {
308
286
            output.appendChild(span);
309
287
        }
310
288
        // set the prompt to >>>
311
 
        set_prompt(">>>");
 
289
        var prompt = document.getElementById("console_prompt");
 
290
        prompt.replaceChild(document.createTextNode(">>> "), prompt.firstChild);
312
291
    }
313
292
    else if (res.hasOwnProperty('exc'))
314
293
    {
315
294
        // Failure!
316
295
        // print out the error message (res.exc)
317
 
        print_error(res.exc);
318
 
        
 
296
        var span = document.createElement("span");
 
297
        span.setAttribute("class", "errorMsg");
 
298
        span.appendChild(document.createTextNode(res.exc + "\n"));
 
299
        output.appendChild(span);
319
300
        // set the prompt to >>>
320
 
        set_prompt(">>>");
 
301
        var prompt = document.getElementById("console_prompt");
 
302
        prompt.replaceChild(document.createTextNode(">>> "), prompt.firstChild);
321
303
    }
322
304
    else if (res.hasOwnProperty('restart') && res.hasOwnProperty('key'))
323
305
    {
328
310
 
329
311
        // Print a reason to explain why we'd do such a horrible thing
330
312
        // (console timeout, server error etc.)
331
 
        print_error("Console Restart: " + res.restart);
332
 
        
 
313
        var span = document.createElement("span");
 
314
        span.setAttribute("class", "errorMsg");
 
315
        span.appendChild(document.createTextNode("Console Restart: " + res.restart + "\n"));
 
316
        output.appendChild(span);
333
317
        // set the prompt to >>>
334
 
        set_prompt(">>>");
 
318
        var prompt = document.getElementById("console_prompt");
 
319
        prompt.replaceChild(document.createTextNode(">>> "), prompt.firstChild);
 
320
 
335
321
    }
336
322
    else if (res.hasOwnProperty('more'))
337
323
    {
338
324
        // Need more input, so set the prompt to ...
339
 
        set_prompt("...");
 
325
        var prompt = document.getElementById("console_prompt");
 
326
        prompt.replaceChild(document.createTextNode("... "), prompt.firstChild);
340
327
    }
341
328
    else if (res.hasOwnProperty('output'))
342
329
    {
346
333
        }
347
334
        var callback = function(xhr)
348
335
            {
349
 
                console_response(inputbox, null, xhr.responseText);
 
336
                console_response(inputbox, graytimer,
 
337
                                 null, xhr.responseText);
350
338
            }
351
339
        if (interrupted)
352
340
        {
356
344
        {
357
345
            var kind = "chat";
358
346
        }
359
 
        var args = {"ivle.op": "chat", "kind": kind, "key": server_key, "text":''};
360
 
        ajax_call(callback, "console", "service", args, "POST");
 
347
        var args = {"key": server_key, "text":''};
 
348
        ajax_call(callback, "consoleservice", kind, args, "POST");
361
349
 
362
350
        // Open up the console so we can see the output
363
351
        // FIXME: do we need to maximize here?
369
357
        // Return early, so we don't re-enable the input box.
370
358
        return;
371
359
    }
372
 
    else
373
 
    {
 
360
    else {
374
361
        // assert res.hasOwnProperty('input')
375
 
        set_prompt("...");
 
362
        var prompt = document.getElementById("console_prompt");
 
363
        prompt.replaceChild(document.createTextNode("+++ "), prompt.firstChild);
376
364
    }
377
365
 
378
366
    if (inputbox != null)
379
367
    {
380
368
        /* Re-enable the text box */
 
369
        clearTimeout(graytimer);
381
370
        inputbox.removeAttribute("disabled");
 
371
        inputbox.removeAttribute("class");
382
372
        interrupted = false;
383
373
    }
384
374
 
388
378
    divScroll.activeScroll();
389
379
 
390
380
    // Focus the input box by default
391
 
    document.getElementById("console_output").focus();
392
 
    document.getElementById("console_inputText").focus();
 
381
    document.getElementById("console_output").focus()
 
382
    document.getElementById("console_inputText").focus()
393
383
}
394
384
 
395
385
function catch_input(key)
448
438
    }
449
439
}
450
440
 
451
 
/** Resets the console by signalling the old console to expire and starting a 
452
 
 * new one.
453
 
 */
454
 
function console_reset()
455
 
{
456
 
    // FIXME: We show some feedback here - either disable input or at very 
457
 
    // least the reset button.
458
 
 
459
 
    // Restart the console
460
 
    if(!server_started)
461
 
    {
462
 
        start_server(null);
463
 
    }
464
 
    else
465
 
    {
466
 
        xhr = ajax_call(null, "console", "service", {"ivle.op": "chat", "kind": "terminate", "key": server_key}, "POST");
467
 
        console_response(null, null, xhr.responseText);
468
 
    }
469
 
}
470
 
 
471
 
/** Prints an error line in the console **/
472
 
function print_error(error)
473
 
474
 
    var output = document.getElementById("console_output");
475
 
  
476
 
    // Create text block
477
 
    var span = document.createElement("span");
478
 
    span.setAttribute("class", "errorMsg");
479
 
    span.appendChild(document.createTextNode(error + "\n"));
480
 
    output.appendChild(span);
481
 
 
482
 
    // Autoscroll
483
 
    divScroll.activeScroll();
484
 
}
485
 
 
486
 
/** Sets the prompt text **/
487
 
function set_prompt(prompt_text)
488
 
{
489
 
    var prompt = document.getElementById("console_prompt");
490
 
    prompt.replaceChild(document.createTextNode(prompt_text + " "), prompt.firstChild);
491
 
}
492
 
 
493
441
/**** Following Code modified from ******************************************/
494
442
/**** http://radio.javaranch.com/pascarello/2006/08/17/1155837038219.html ***/
495
443
/****************************************************************************/
507
455
        
508
456
    if (scrollDiv.scrollHeight > 0)
509
457
        currentHeight = scrollDiv.scrollHeight;
510
 
    else if (scrollDiv.offsetHeight > 0)
511
 
        currentHeight = scrollDiv.offsetHeight;
 
458
    else 
 
459
        if (objDiv.offsetHeight > 0)
 
460
            currentHeight = scrollDiv.offsetHeight;
512
461
 
513
462
    scrollDiv.scrollTop = currentHeight;
514
463