first commit

This commit is contained in:
Finn
2026-01-16 21:47:04 +01:00
commit 02d39e2303
40 changed files with 2658 additions and 0 deletions

View File

@@ -0,0 +1,225 @@
package org.openautonomousconnection.luascript.tables;
import org.luaj.vm2.LuaTable;
import org.luaj.vm2.LuaValue;
import org.luaj.vm2.lib.OneArgFunction;
import org.openautonomousconnection.luascript.utils.ScriptTable;
import org.openautonomousconnection.luascript.hosts.HostServices;
import org.openautonomousconnection.luascript.hosts.UiHost;
/**
* ui namespace for common UI operations.
*/
public final class UiTable extends ScriptTable {
public UiTable() {
super("ui");
}
@Override
protected void define(HostServices services) {
UiHost ui = services.ui().orElseThrow(() -> new IllegalStateException("UiHost not provided"));
table().set("alert", new OneArgFunction() {
@Override
public LuaValue call(LuaValue msg) {
ui.alert(msg.isnil() ? "" : msg.tojstring());
return LuaValue.NIL;
}
});
table().set("confirm", new OneArgFunction() {
@Override
public LuaValue call(LuaValue msg) {
return LuaValue.valueOf(ui.confirm(msg.isnil() ? "" : msg.tojstring()));
}
});
table().set("prompt", new org.luaj.vm2.lib.TwoArgFunction() {
@Override
public LuaValue call(LuaValue msg, LuaValue def) {
String out = ui.prompt(
msg.isnil() ? "" : msg.tojstring(),
def.isnil() ? null : def.tojstring()
);
return out == null ? LuaValue.NIL : LuaValue.valueOf(out);
}
});
table().set("setText", new org.luaj.vm2.lib.TwoArgFunction() {
@Override
public LuaValue call(LuaValue id, LuaValue text) {
ui.setText(id.checkjstring(), text.isnil() ? "" : text.tojstring());
return LuaValue.NIL;
}
});
table().set("getText", new OneArgFunction() {
@Override public LuaValue call(LuaValue id) {
String v = ui.getText(id.checkjstring());
return v == null ? LuaValue.NIL : LuaValue.valueOf(v);
}
});
table().set("setHtml", new org.luaj.vm2.lib.TwoArgFunction() {
@Override
public LuaValue call(LuaValue id, LuaValue html) {
ui.setHtml(id.checkjstring(), html.isnil() ? "" : html.tojstring());
return LuaValue.NIL;
}
});
table().set("getHtml", new OneArgFunction() {
@Override
public LuaValue call(LuaValue id) {
return LuaValue.valueOf(ui.getHtml(id.checkjstring()));
}
});
table().set("setValue", new org.luaj.vm2.lib.TwoArgFunction() {
@Override
public LuaValue call(LuaValue id, LuaValue value) {
ui.setValue(id.checkjstring(), value.isnil() ? "" : value.tojstring());
return LuaValue.NIL;
}
});
table().set("getValue", new OneArgFunction() {
@Override
public LuaValue call(LuaValue id) {
return LuaValue.valueOf(ui.getValue(id.checkjstring()));
}
});
table().set("setEnabled", new org.luaj.vm2.lib.TwoArgFunction() {
@Override
public LuaValue call(LuaValue id, LuaValue enabled) {
ui.setEnabled(id.checkjstring(), enabled.toboolean());
return LuaValue.NIL;
}
});
table().set("setVisible", new org.luaj.vm2.lib.TwoArgFunction() {
@Override
public LuaValue call(LuaValue id, LuaValue visible) {
ui.setVisible(id.checkjstring(), visible.toboolean());
return LuaValue.NIL;
}
});
table().set("addClass", new org.luaj.vm2.lib.TwoArgFunction() {
@Override
public LuaValue call(LuaValue id, LuaValue cls) {
ui.addClass(id.checkjstring(), cls.checkjstring());
return LuaValue.NIL;
}
});
table().set("removeClass", new org.luaj.vm2.lib.TwoArgFunction() {
@Override
public LuaValue call(LuaValue id, LuaValue cls) {
ui.removeClass(id.checkjstring(), cls.checkjstring());
return LuaValue.NIL;
}
});
table().set("toggleClass", new org.luaj.vm2.lib.TwoArgFunction() {
@Override
public LuaValue call(LuaValue id, LuaValue cls) {
return LuaValue.valueOf(ui.toggleClass(id.checkjstring(), cls.checkjstring()));
}
});
table().set("hasClass", new org.luaj.vm2.lib.TwoArgFunction() {
@Override
public LuaValue call(LuaValue id, LuaValue cls) {
return LuaValue.valueOf(ui.hasClass(id.checkjstring(), cls.checkjstring()));
}
});
table().set("setStyle", new org.luaj.vm2.lib.ThreeArgFunction() {
@Override
public LuaValue call(LuaValue id, LuaValue prop, LuaValue value) {
ui.setStyle(id.checkjstring(), prop.checkjstring(), value.isnil() ? "" : value.tojstring());
return LuaValue.NIL;
}
});
table().set("getStyle", new org.luaj.vm2.lib.TwoArgFunction() {
@Override
public LuaValue call(LuaValue id, LuaValue prop) {
return LuaValue.valueOf(ui.getStyle(id.checkjstring(), prop.checkjstring()));
}
});
table().set("setAttr", new org.luaj.vm2.lib.ThreeArgFunction() {
@Override
public LuaValue call(LuaValue id, LuaValue name, LuaValue value) {
ui.setAttribute(id.checkjstring(), name.checkjstring(), value.isnil() ? "" : value.tojstring());
return LuaValue.NIL;
}
});
table().set("getAttr", new org.luaj.vm2.lib.TwoArgFunction() {
@Override
public LuaValue call(LuaValue id, LuaValue name) {
String v = ui.getAttribute(id.checkjstring(), name.checkjstring());
return v == null ? LuaValue.NIL : LuaValue.valueOf(v);
}
});
table().set("removeAttr", new org.luaj.vm2.lib.TwoArgFunction() {
@Override
public LuaValue call(LuaValue id, LuaValue name) {
ui.removeAttribute(id.checkjstring(), name.checkjstring());
return LuaValue.NIL;
}
});
table().set("focus", new OneArgFunction() {
@Override
public LuaValue call(LuaValue id) {
ui.focus(id.checkjstring());
return LuaValue.NIL;
}
});
table().set("blur", new OneArgFunction() {
@Override
public LuaValue call(LuaValue id) {
ui.blur(id.checkjstring());
return LuaValue.NIL;
}
});
table().set("scrollIntoView", new OneArgFunction() {
@Override
public LuaValue call(LuaValue id) {
ui.scrollIntoView(id.checkjstring());
return LuaValue.NIL;
}
});
LuaTable viewport = new LuaTable();
viewport.set("width", new org.luaj.vm2.lib.ZeroArgFunction() {
@Override
public LuaValue call() {
return LuaValue.valueOf(ui.viewportWidth());
}
});
viewport.set("height", new org.luaj.vm2.lib.ZeroArgFunction() {
@Override
public LuaValue call() {
return LuaValue.valueOf(ui.viewportHeight());
}
});
table().set("viewport", viewport);
table().set("now", new org.luaj.vm2.lib.ZeroArgFunction() {
@Override
public LuaValue call() {
return LuaValue.valueOf(ui.nowMillis());
}
});
}
}