226 lines
7.8 KiB
Java
226 lines
7.8 KiB
Java
|
|
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());
|
||
|
|
}
|
||
|
|
});
|
||
|
|
}
|
||
|
|
}
|