import { CompiledBlock, RuntimeBlock } from "../../core/constructs/statements/Block"; import { ConstructOutlet } from "./ConstructOutlet"; import { createStatementOutlet } from "./StatementOutlets"; const CURLY_OPEN = "{"; const CURLY_CLOSE = "}"; export class BlockOutlet extends ConstructOutlet { public constructor(element: JQuery, construct: CompiledBlock, parent?: ConstructOutlet) { super(element, construct, parent); this.element.removeClass("codeInstance"); this.element.addClass("braces"); this.element.append(" "); // spaces before braces :) this.element.append(CURLY_OPEN); this.element.append("
"); let innerElem = $(""); innerElem.addClass("code-indentedBlockBody"); this.element.append(innerElem); // this.gotoLinks = []; //let statementElems = []; this.construct.statements.forEach(stmt => { let lineElem = $(''); let elem = $(""); let child = createStatementOutlet(elem, stmt, this); // let gotoLink = $('>>'); // lineElem.append(gotoLink); // this.gotoLinks.push(gotoLink); // //gotoLink.css("visibility", "hidden"); // let self = this; // // wow this is really ugly lol. stupid closures // gotoLink.click( // function (x) { // return function () { // if (!self.inst){ // return; // } // var me = $(this); // //if (self.gotoInProgress){ // // return; // //} // //self.gotoInProgress = true; // var temp = me.html(); // if (me.html() == "<<"){ // self.simOutlet.simOutlet.stepBackward(self.simOutlet.sim.stepsTaken() - self.inst.childInstances.statements[x].stepsTaken); // return; // } // me.addClass("inProgress"); // self.inst.pauses[x] = {pauseAtIndex: x, callback: function(){ // //self.gotoInProgress = false; // me.removeClass("inProgress"); // }}; // //if (self.inst.pauses[x]){ // self.simOutlet.send("skipToEnd"); // //} // }; // }(i)); lineElem.append(elem); innerElem.append(lineElem); innerElem.append("
"); }); this.element.append("
"); this.element.append(CURLY_CLOSE); } }