| 1 |
- MWF.widget=MWF.widget||{};MWF.require("MWF.widget.Menu",null,false);MWF.widget.ScriptHelpCodes={};MWF.widget.ScriptHelp=new Class({Implements:[Options,Events],Extends:MWF.widget.Common,options:{code:"code.json",style:"default"},initialize:function(e,t,i){this.setOptions(i);this.node=$(e);this.editor=t;this.path=MWF.defaultPath+"/widget/$ScriptHelp/";this.cssPath=MWF.defaultPath+"/widget/$ScriptHelp/"+this.options.style+"/css.wcss";this.load()},getEditor:function(){return null},load:function(){this.menu=new MWF.widget.ScriptHelp.Menu(this.node,{event:"click",style:"script"});this.menu.scriptHelp=this;this.menu.load();if(!MWF.widget.ScriptHelpCodes[this.path+this.options.style+"/"+this.options.code]){MWF.getJSON(this.path+this.options.style+"/"+this.options.code,function(e){this.codeJson=e;this.loadMenuItems(this.codeJson,this.menu);MWF.widget.ScriptHelpCodes[this.path+this.options.style+"/"+this.options.code]=e;this.fireEvent("postLoad")}.bind(this),true,true,false)}else{this.codeJson=MWF.widget.ScriptHelpCodes[this.path+this.options.style+"/"+this.options.code];this.loadMenuItems(this.codeJson,this.menu);this.fireEvent("postLoad")}},loadMenuItems:function(e,t){e.each(function(e){if(e=="-"){t.addMenuLine()}else{if(typeOf(e.value)=="string"){t.addMenuItem(e.name,"click",function(){var t=this.getEditor();if(t){t.insert(e.value);t.focus()}}.bind(this))}else{var i=new MWF.widget.ScriptHelp.Menu(null,{style:"script"});i.load();this.loadMenuItems(e.value,i);t.addMenuMenu(e.name,"",i)}}}.bind(this))},show:function(){this.menu.showIm()}});MWF.widget.ScriptHelp.Menu=new Class({Extends:MWF.widget.Menu,showIm:function(e){if(!this.options.disable){this.hide=this.hideIm.bind(this);if(this.fireEvent("queryShow",[e])){this.tmpBodyOncontextmenu=document.body.oncontextmenu;document.body.oncontextmenu=function(){return false};if(this.pauseCount<=0){this.setItemWidth();this.node.setStyles({display:"block",opacity:this.options.opacity||1});this.setPosition(e);$(document.body).removeEvent("mousedown",this.hide);$(document.body).addEvent("mousedown",this.hide);this.show=true}else{this.pauseCount--}this.node.focus();if(!this.isSetKeyEvents)this.setKeyEvents();this.fireEvent("postShow")}}},setKeyEvents:function(){this.node.addEvent("keydown",function(e){this.keyMenuAction(e)}.bind(this));this.isSetKeyEvents=true},keyMenuAction:function(e){switch(e.key){case"down":this.keyMenuDown(e);break;case"up":this.keyMenuUp(e);break;case"left":this.keyMenuLeft(e);break;case"right":this.keyMenuRight(e);break;case"esc":this.keyMenuEsc(e);break;case"space":this.keyMenuEnter(e);break;case"enter":this.keyMenuEnter(e);break;default:}},keyMenuDown:function(e){if(!this.current){this.items[0]._menuItemMouseOver(e)}else{idx=this.items.indexOf(this.current);idx++;while(idx<this.items.length&&this.items[idx].type=="line"){idx++}var t=this.items[idx];if(idx>=this.items.length)t=this.items[0];t._menuItemMouseOver(e);if(t.type=="menu")this.node.focus()}},keyMenuUp:function(e){if(!this.current){this.items[this.items.length-1]._menuItemMouseOver(e)}else{idx=this.items.indexOf(this.current);idx--;while(idx>=0&&this.items[idx].type=="line"){idx--}var t=this.items[idx];if(idx<0)t=this.items[this.items.length-1];t._menuItemMouseOver(e);if(t.type=="menu")this.node.focus()}},keyMenuRight:function(e){if(this.current){if(this.current.type=="menu"){this.current.subMenu.showIm();this.current.subMenu.node.focus();this.current.subMenu.current=null;this.current.subMenu.keyMenuDown()}}},keyMenuLeft:function(e){if(this.topMenu){this.hideIm();this.topMenu.node.focus()}},keyMenuEsc:function(){if(this.topMenu){this.hideIm();this.topMenu.node.focus()}else{this.hideIm();this.scriptHelp.getEditor().focus()}},keyMenuEnter:function(e){if(this.current)this.current.doAction();e.stopPropagation()}});
|