Editor.min.js 4.5 KB

1
  1. MWF.xDesktop.requireApp("ScriptEditor","statement.Package",null,false);MWF.xDesktop.requireApp("ScriptEditor","block.Package",null,false);MWF.xDesktop.requireApp("ScriptEditor","ScriptArea",null,false);MWF.xApplication.ScriptEditor.Editor=new Class({Extends:MWF.widget.Common,Implements:[Options,Events],options:{style:"default"},_loadPath:function(){this.path="/x_component_ScriptEditor/$Editor/";this.cssPath="/x_component_ScriptEditor/$Editor/"+this.options.style+"/css.wcss"},initialize:function(e,t,i){this.setOptions(i);this._loadPath();this._loadCss();this.node=$(e);this.app=t;this.moduleTypes=[];this.currentModuleType=null},load:function(){this.moduleAreaNode=new Element("div",{styles:this.css.moduleAreaNode}).inject(this.node);this.resizeAreaNode=new Element("div",{styles:this.css.resizeAreaNode}).inject(this.node);this.scriptAreaNode=new Element("div",{styles:this.css.scriptAreaNode}).inject(this.node);this.scriptArea=new MWF.xApplication.ScriptEditor.ScriptArea(this);this.moduleTypeAreaNode=new Element("div",{styles:this.css.moduleTypeAreaNode}).inject(this.moduleAreaNode);this.moduleBlockAreaNode=new Element("div",{styles:this.css.moduleBlockAreaNode}).inject(this.moduleAreaNode);this.getModule(function(){Object.each(this.json,function(e,t){e.name=t;this.createModuleType(e)}.bind(this))}.bind(this))},getModule:function(e){MWF.getJSON("/x_component_ScriptEditor/$Editor/block.json",function(t){this.json=t;if(e)e()}.bind(this))},createModuleType:function(e){this.moduleTypes.push(new MWF.xApplication.ScriptEditor.Editor.ModuleType(e,this))}});MWF.xApplication.ScriptEditor.Editor.ModuleType=new Class({initialize:function(e,t){this.data=e;this.editor=t;this.typeAreaNode=this.editor.moduleTypeAreaNode;this.blockAreaNode=this.editor.moduleBlockAreaNode;this.css=this.editor.css;this.blocks=[];this.load()},load:function(){this.node=new Element("div",{styles:this.css.moduleTypeNode}).inject(this.typeAreaNode);this.colorNode=new Element("div",{styles:this.css.moduleTypeColorNode}).inject(this.node);this.iconNode=new Element("div",{styles:this.css.moduleTypeIconNode}).inject(this.colorNode);this.textNode=new Element("div",{styles:this.css.moduleTypeTextNode}).inject(this.node);this.colorNode.setStyle("background-color",this.data.color);this.iconNode.setStyle("background-image","url("+this.editor.path+this.editor.options.style+"/icon/"+this.data.icon+")");this.textNode.set("text",this.data.text);this.node.addEvent("click",function(){this.selected()}.bind(this))},selected:function(){if(this.editor.currentModuleType)this.editor.currentModuleType.unselected();this.node.setStyle("background",this.data.color);this.textNode.setStyle("color","#ffffff");this.editor.currentModuleType=this;this.showBlockArea()},unselected:function(){if(this.editor.currentModuleType.data.name===this.data.name){this.node.setStyle("background","transparent");this.textNode.setStyles(this.css.moduleTypeTextNode);this.editor.currentModuleType=null;this.hiddenBlockArea()}},showBlockArea:function(){if(!this.blocksNode)this.createBlocksNode();this.blocksNode.setStyle("display","block")},createBlocksNode:function(){this.blocksNode=new Element("div",{styles:this.css.moduleBlocksNode}).inject(this.blockAreaNode);if(this.data.blocks&&this.data.blocks.length){this.data.blocks.each(function(e){this.createBlock(e)}.bind(this))}else if(this.data.blockLink){MWF.getJSON("/x_component_ScriptEditor/$Editor/"+this.data.blockLink,function(e){this.data.blocks=e;this.data.blocks.each(function(e){this.createBlock(e)}.bind(this))}.bind(this))}},createBlock:function(e){if(e.class){var t=("block."+e.class).split(".");var i=MWF.xApplication.ScriptEditor;t.each(function(e){if(i){i=i[e]}}.bind(this));if(!i)i=this.createClazz(e);if(i)this.blocks.push(new i(e,this))}else if(e.type==="category"){var s=new Element("div",{styles:this.css.moduleBlocksSplitLineNode}).inject(this.blocksNode);var o=new Element("div",{styles:this.css.moduleBlocksSplitLineLeftNode}).inject(s);var n=new Element("div",{styles:this.css.moduleBlocksSplitLineTextNode}).inject(s);var d=new Element("div",{styles:this.css.moduleBlocksSplitLineRightNode}).inject(s);n.set("text",e.name)}},createClazz:function(e){var t=MWF.xApplication.ScriptEditor;var i=("block."+e.class).split(".");i.each(function(s,o){if(o===i.length-1){t[s]=new Class({Extends:MWF.xApplication.ScriptEditor.block.$Block[e.extend]});t=t[s]}else{t=t[s];if(!t)t={}}}.bind(this));return t},hiddenBlockArea:function(){if(this.blocksNode)this.blocksNode.setStyle("display","none")}});MWF.SES.zIndexPool={zIndex:200,apply:function(){var e=this.zIndex;this.zIndex=this.zIndex+1;return e}};