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()); } }); } }