Warning: session_start(): open(/var/lib/php/sessions/sess_onms8la56mqettrhife2vvjvrd, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
concept G22ScriptsPanel extends G22CRUDAndDetailPanel {
transient volatile settable G22LAScriptIDE scriptIDE;
SimpleCRUD_v2 makeCRUD() {
var crud = new SimpleCRUD_v2<>(g22utils.concepts(), G22LeftArrowScript);
crud.noSubclasses(true);
crud.entityName = -> "Script";
g22utils.setupScriptCRUD(crud, true);
// Full-text search baby!!
var ts = crud.tableSearcher();
var basicRowTester = ts.rowTester;
ts.rowTester = if2ToF2((pat, map) -> {
if (basicRowTester.get(pat, map)) true;
long id = toLong(map.get(crud.hID));
G22LeftArrowScript script = g22utils.getScript(id);
if (anyContainsIgnoreCase(script.allTexts(), pat)) true;
false;
});
crud.addButton(new JPopDownButton().content(
"Show all scripts as one long text", rThread showHugeText));
ret crud;
}
JComponent makeDetailView(G22LeftArrowScript script) {
scriptIDE(new G22LAScriptIDE(g22utils));
scriptIDE.setScript(script);
ret scriptIDE.visualize();
}
SimpleCRUD_v2 scriptCRUD() { ret crud(); }
selfType g22utils(G22Utils g22utils) { super.g22utils(g22utils); this; }
void showHugeText {
S text = new G22ScriptUtil(g22utils).makeHugeText(g22utils.list(G22LeftArrowScript));
showFrame("Scripts in project", g22utils.newSyntaxTextArea(text));
}
void edit(G22LeftArrowScript script, LineAndColumn lineAndCol) {
scriptIDE = null;
edit(script);
print("Waiting for script IDE to appear for " + script);
var ide = pollWaitUntilNotNull(10, 5.0, -> {
if (scriptIDE == null) null;
if (scriptIDE.script() != script)
ret null with print("Wrong script");
ret scriptIDE.visibleIDE();
});
print("Going to position " + lineAndCol + " in " + ide);
ide?.goToPosition(lineAndCol);
}
}