sclass G22LAScriptIDE { settable G22Utils g22utils; settable S noScriptSelectedMsg = "Please select or create a script to edit it"; A script; SingleComponentPanel scp; JLeftArrowScriptIDE ide; *(G22Utils *g22utils) {} visualize { if (scp == null) scp = singleComponentPanel(); loadScript(script); ret scp; } void setScript(A script) { if (this.script != script) loadScript(script); } void loadScript(A script) { this.script = script; if (scp == null) ret; if (script == null) scp.set(jcenteredlabel(noScriptSelectedMsg())); else { ide = g22utils.leftArrowIDE(); modifyIDE(ide); ide.lvScript(varWithNotifyToLiveValue(S.class, script.varEditingText())); scp.set(wrapIDE(ide)); } } swappable JComponent wrapIDE(JLeftArrowScriptIDE ide) { ret ide.visualize(); } event settingUpIDE(JLeftArrowScriptIDE ide); swappable void modifyIDE(JLeftArrowScriptIDE ide) { ide.showTitle(false); settingUpIDE(ide); } }