cloudcmd/lib/client/terminal.js
2012-10-02 11:24:38 -04:00

136 lines
No EOL
4 KiB
JavaScript

var CloudCommander, $;
/* object contains terminal jqconsole */
(function(){
"use strict";
var cloudcmd = CloudCommander,
Util = cloudcmd.Util,
KeyBinding = cloudcmd.KeyBinding,
TerminalId,
Term,
Hidden = false;
cloudcmd.Terminal = {};
var JqueryTerminal = {};
/**
* function loads jquery-terminal
*/
JqueryTerminal.load = (function(){
Util.cssLoad({
src : 'lib/client/terminal/jquery-terminal/jquery.terminal.css'
});
Util.jsload('lib/client/socket.js');
var lLoadTerm_func = function(){
Util.jsload('lib/client/terminal/jquery-terminal/jquery.terminal.js',
function(){
JqueryTerminal.init();
$(function($, undefined) {
Term = JqueryTerminal.Term = $('#terminal').terminal(function(command, term){
term.echo('');
cloudcmd.Socket.send(command);
}, {
greetings : 'Javascript Interpreter',
prompt : 'cloudcmd> '
});
});
JqueryTerminal.show();
});
};
Util.jsload('lib/client/terminal/jquery-terminal/jquery.mousewheel.js',
lLoadTerm_func);
});
/**
* function do basic initialization
*/
JqueryTerminal.init = (function(){
if(!TerminalId){
var lFM = Util.getById('fm');
if(lFM)
TerminalId = Util.anyload({
name : 'div',
id : 'terminal',
className : 'panel',
parent : lFM
});
}
else
console.log('Error. Something went wrong FM not found');
});
/**
* functin show jquery-terminal
*/
JqueryTerminal.show = (function(){
Util.Images.hideLoad();
/* only if panel was hided */
var lHided = Util.hidePanel();
if(lHided){
Hidden = false;
Util.show(TerminalId);
KeyBinding.unSet();
Term.resume();
}
});
/**
* function hide jquery-terminal
*/
JqueryTerminal.hide = (function(){
Hidden = true;
Util.hide(TerminalId);
Util.showPanel();
KeyBinding.set();
Term.pause();
});
/**
* function bind keys
*/
cloudcmd.Terminal.Keys = (function(){
/* loading js and css*/
Util.jqueryLoad( JqueryTerminal.load );
var key_event = function(event){
/* если клавиши можно обрабатывать */
if(Hidden &&
KeyBinding.get() &&
event.keyCode === cloudcmd.KEY.TRA){
JqueryTerminal.show();
event.preventDefault();
}
else if(!Hidden && event.keyCode === cloudcmd.KEY.ESC)
JqueryTerminal.hide();
};
/* добавляем обработчик клавишь */
if (document.addEventListener)
document.addEventListener('keydown', key_event, false);
else
document.onkeypress = key_event;
});
cloudcmd.Terminal.JqueryTerminal = JqueryTerminal;
})();