Files
Chamilo/plugin/mindmap/edit-mindmap/vendor/js/commandcontroller.js
2025-04-10 12:36:07 +02:00

84 lines
2.5 KiB
JavaScript

/*global kampfer*/
kampfer.require('Class');
kampfer.require('mindMap.command');
kampfer.require('mindMap.map');
kampfer.require('mindMap.mapManager');
kampfer.require('mindMap.command.stack');
kampfer.require('mindMap.radio');
kampfer.require('mousetrap');
kampfer.provide('mindMap.command.Controller');
//暂时长这样吧#_#
//以后再改
kampfer.mindMap.command.Controller = kampfer.Class.extend({
initializer : function(window) {
this.view = window;
kampfer.mindMap.radio.addListener('executeCommand', this.doCommand, this);
var that = this;
for(var name in kampfer.mindMap.command) {
var command = kampfer.mindMap.command[name];
if(command.shortcut) {
if(!this._shortcut2Command) {
this._shortcut2Command = {};
}
this._shortcut2Command[command.shortcut] = name;
var that = this;
Mousetrap.bind(command.shortcut, function(event, shortcut) {
event.type = 'executeCommand';
event.command = that._shortcut2Command[shortcut];
that.doCommand(event);
return false;
});
}
}
},
getCommand : function(name) {
return kampfer.mindMap.command[name] ||
kampfer.mindMap.command.Base;
},
doCommand : function(event) {
var Command = kampfer.mindMap.command[event.command], command;
if( Command && (!Command.isAvailable || Command.isAvailable()) ) {
command = new Command(event, this.view);
command.execute();
if(command.needPush) {
kampfer.mindMap.command.stack.push(command);
} else {
command.dispose();
}
}
if(kampfer.mindMap.mapManager) {
if( kampfer.mindMap.mapManager.isModified() ) {
document.title = '*' + kampfer.mindMap.mapManager.getMapName();
} else {
document.title = kampfer.mindMap.mapManager.getMapName();
}
}
},
isCommandAvalilable : function(command) {
command = this.getCommand(command);
if( command.isAvailable && !command.isAvailable() ) {
return false;
} else {
return true;
}
},
_shortcut2Command : null,
dispose : function() {
kampfer.mindMap.CommandController.superClass.dispose.apply(this, arguments);
this.publishers = null;
this.commandStack = null;
}
});