Switched to JavaFX and added builtin Support

This commit is contained in:
Finn
2026-01-19 22:23:49 +01:00
parent 627e0c86e4
commit 8a20970e12
13 changed files with 1019 additions and 263 deletions

View File

@@ -1,5 +1,12 @@
package org.openautonomousconnection.luascript.hosts;
import javafx.scene.web.WebEngine;
import org.openautonomousconnection.luascript.fx.FxDomHost;
import org.openautonomousconnection.luascript.fx.FxEventHost;
import org.openautonomousconnection.luascript.fx.FxUiHost;
import org.openautonomousconnection.luascript.fx.FxWebViewResourceHost;
import org.openautonomousconnection.luascript.runtime.LuaRuntime;
import java.util.Objects;
import java.util.Optional;
@@ -24,6 +31,38 @@ public final class HostServices {
this.resources = b.resources;
}
/**
* Builds a JavaFX WebView preset of HostServices (DOM + events + resources + UI).
*
* <p>Important: This method creates the {@link EventHost} using the provided {@link LuaRuntime}'s
* {@link org.openautonomousconnection.luascript.runtime.LuaEventRouter}. Therefore, the runtime must already
* be constructed before calling this method.</p>
*
* <p>Note: You should call {@link FxDomHost#ensureAllElementsHaveId()} after the WebEngine finished loading.</p>
*
* @param engine JavaFX WebEngine
* @param runtime Lua runtime used for event routing
* @param console optional console host (may be null)
* @return HostServices preset for JavaFX WebView
*/
public static HostServices fxPreset(WebEngine engine, LuaRuntime runtime, ConsoleHost console) {
Objects.requireNonNull(engine, "engine");
Objects.requireNonNull(runtime, "runtime");
FxDomHost dom = new FxDomHost(engine);
FxWebViewResourceHost resources = new FxWebViewResourceHost(engine);
FxUiHost ui = new FxUiHost(engine, dom);
FxEventHost events = new FxEventHost(dom, runtime.eventRouter());
Builder b = builder().dom(dom).events(events).resources(resources).ui(ui);
if (console != null) {
b.console(console);
}
return b.build();
}
/**
* @return builder
*/
@@ -124,4 +163,3 @@ public final class HostServices {
}
}
}