| 1 |
- MWF.xApplication.ScriptEditor.ScriptArea=new Class({initialize:function(t){this.editor=t;this.node=this.editor.scriptAreaNode;this.css=this.editor.css;this.statementNodes=[];this.statements=[];this.links=[];this.mortises=[];this.beginStatements=[];this.currentLink=null;this.load()},load:function(){this.titleNode=new Element("div",{styles:this.css.scriptAreaTitleNode}).inject(this.node);this.blockArea=new Element("div",{styles:this.css.scriptAreaBlockNode}).inject(this.node);this.scriptArea=new Element("div",{styles:this.css.scriptAreaScriptNode}).inject(this.node);this.blockAreaContent=new Element("div").inject(this.blockArea);this.loadTitleNode();this.setAreaSizeFun=this.setAreaSize.bind(this);this.editor.app.addEvent("resize",this.setAreaSizeFun);this.setAreaSize()},setAreaSize:function(){var t=this.node.getSize();var i=this.titleNode.getSize();var e=t.y-i.y;this.blockArea.setStyle("height",""+e+"px");this.scriptArea.setStyle("height",""+e+"px");this.beginStatements.each(function(t){var i=t.node.getPosition(this.blockArea);var e=t.node.getSize();var n=i.y+e.y;this.blockAreaContent.setStyle("height",""+n+"px")}.bind(this))},loadTitleNode:function(){this.blockTabNode=new Element("div",{styles:this.css.scriptAreaTitleBlockNode}).inject(this.titleNode);this.scriptTabNode=new Element("div",{styles:this.css.scriptAreaTitleScriptNode}).inject(this.titleNode);this.blockTabNode.set("text",this.editor.app.lp.block);this.scriptTabNode.set("text",this.editor.app.lp.script);this.blockTabNode.setStyles(this.css.titleActionNode_current);this.blockTabNode.addEvent("click",function(){this.blockTabNode.setStyles(this.css.titleActionNode_current);this.blockArea.setStyle("display","block");this.scriptTabNode.setStyles(this.css.scriptAreaTitleScriptNode);this.scriptArea.setStyle("display","none")}.bind(this));this.scriptTabNode.addEvent("click",function(){this.blockTabNode.setStyles(this.css.scriptAreaTitleBlockNode);this.blockArea.setStyle("display","none");this.scriptTabNode.setStyles(this.css.titleActionNode_current);this.scriptArea.setStyle("display","block")}.bind(this))},createStatement:function(t,i){this.statementNodes.push(t);var e=("statement."+i.data.class).split(".");var n=MWF.xApplication.ScriptEditor;e.each(function(t){if(n){n=n[t]}}.bind(this));if(!n)n=this.createClazz(i);if(n){var s=new n(t,i,this);return s}return null},createClazz:function(t){debugger;var i=MWF.xApplication.ScriptEditor;var e=("statement."+t.data.class).split(".");e.each(function(n,s){if(s===e.length-1){i[n]=new Class({Extends:MWF.xApplication.ScriptEditor.statement.$Statement[t.data.extend]});i=i[n]}else{i=i[n];if(!i)i={}}}.bind(this));return i},buildStatement:function(t){t.load();this.statements.push(t);return t},checkLinks:function(t,i,e){var n=200;var s={distance:null,link:null,toLink:null,linkType:""};i.normal();if(i.topLink){var r=i.topLink.rePosition();this.links.each(function(t){t.rePosition();var i=false;if(r.type!==t.type){if(e.indexOf(t)===-1){var o=r.type+"-"+t.type;if(o==="up-down"){if(!r.statement.bottomLink&&t.toLink){i=false}else{i=true}}if(o==="down-up"){if(!t.toLink&&!r.toLink)i=true}if(o==="up-middle")i=true;if(o==="middle-up"){if(!t.toLink&&!r.toLink)i=true}}}if(i){var c=Math.abs(t.position.x-r.position.x)+Math.abs(t.position.y-r.position.y);if(s.distance===null){if(c<n){s.distance=c;s.link=r;s.toLink=t;s.linkType=o}}else{if(c<s.distance){s.distance=c;s.link=r;s.toLink=t;s.linkType=o}}}}.bind(this))}this.clearCurrentLink();if(s.link){if(this.currentLink){if(this.currentLink.link!==s.link){this.currentLink.link.statement.notReadyLinkTo(this.currentLink);s.link.statement.readyLinkTo(this.currentLink)}if(this.currentLink.toLink!==s.toLink){this.currentLink.toLink.statement.notReadyLink(this.currentLink);s.toLink.statement.readyLink(this.currentLink)}this.currentLink=s}else{this.currentLink=s;this.currentLink.toLink.statement.readyLink(this.currentLink);this.currentLink.link.statement.readyLinkTo(this.currentLink)}}else{if(this.currentLink){this.currentLink.link.statement.notReadyLinkTo(this.currentLink);this.currentLink.toLink.statement.notReadyLink(this.currentLink);this.currentLink=null}}},checkMortises:function(t,i){this.currentMortise=null;if(i.tenon){var e=i.tenon.getPosition(this.blockArea);var n=i.node.getSize();e.y=e.y+n.y/2;for(var s=0;s<this.mortises.length;s++){var r=this.mortises[s];if(!r.tenonStatement){if(!r.types.length||r.types.indexOf(i.block.blockName)!==-1){if(r.node.isPointIn(e.x,e.y,0,0,this.blockArea)){r.shine();this.currentMortise=r;break}else{r.unshine()}}}}}},checkBlockDrag:function(t,i,e){if(i){this.checkLinks(t,i,e);this.checkMortises(t,i)}},clearCurrentLink:function(){if(this.currentLink){this.currentLink.link.statement.notReadyLinkTo(this.currentLink);this.currentLink.toLink.statement.notReadyLink(this.currentLink);this.currentLink=null}},getStatementGroup:function(t){var i=[];var e=t;while(e){i.push(e);if(e.bottomLink){e=e.bottomLink.toLink}else{e=null}}return i}});
|