srecord noeq JG22NetworkElement(G22Utils g22utils, JG22Network parent, G22NetworkElement element) is Swingable { JTabbedPane tabs; JLeftArrowScriptIDE ide; SingleComponentPanel scpContent = scp(); cachedVisualize { ide = g22utils.leftArrowIDE(); ide.withResultPanel(false); ide.lvScript(element.varCode()); ide.runScript = -> { var result = ide.freshCompileResult(); if (result.runnable()) { var parsedScript = result!; var visualizeFunction = parsedScript.getFunction("visualize"); Component visualized = null; if (visualizeFunction != null) { // TODO: timeout? var value = runResultWithTimestamps(-> wrap(visualizeFunction.call(new FlexibleVarContext)); ide.showScriptResult(value); if (value.isOK()) visualized = value!; } scpContent.set(visualized); selectTabComponent(tabs, scpContent); } }; var box = tabs = jtabs( "Code", ide.visualize(), "Content", scpContent); jMinSize(80, 50, box); setOpaqueBackground(Color.white, box); setBorder(box, BorderFactory.createLineBorder(Color.green, 10); onMouseDown(box, event -> { if (!mouseEventIsInBorder(event)) new ComponentDragger(box, event); }); new ComponentResizeDragger(box, box); var bounds = or(element.bounds, rect(50, 50, 400, 300)); setBounds(box, bounds); onBoundsChange(box, r { element.bounds(toRect(getBounds(box))); element.network.change(); parent.mainPanel.revalidateMe(); }); ret box; } }