Compare commits
4 Commits
1.0.1-BETA
...
1.0.1-BETA
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
35cd895510 | ||
|
|
d3662a0773 | ||
|
|
ff2a76e7da | ||
|
|
4c1cf09f34 |
@@ -3,7 +3,7 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.openautonomousconnection</groupId>
|
<groupId>org.openautonomousconnection</groupId>
|
||||||
<artifactId>WebClient</artifactId>
|
<artifactId>WebClient</artifactId>
|
||||||
<version>1.0.1-BETA.0.1</version>
|
<version>1.0.1-BETA.0.3</version>
|
||||||
<description>The default WebClient</description>
|
<description>The default WebClient</description>
|
||||||
<url>https://open-autonomous-connection.org/</url>
|
<url>https://open-autonomous-connection.org/</url>
|
||||||
<issueManagement>
|
<issueManagement>
|
||||||
|
|||||||
4
pom.xml
4
pom.xml
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
<groupId>org.openautonomousconnection</groupId>
|
<groupId>org.openautonomousconnection</groupId>
|
||||||
<artifactId>WebClient</artifactId>
|
<artifactId>WebClient</artifactId>
|
||||||
<version>1.0.1-BETA.0.2</version>
|
<version>1.0.1-BETA.0.3</version>
|
||||||
<organization>
|
<organization>
|
||||||
<name>Open Autonomous Connection</name>
|
<name>Open Autonomous Connection</name>
|
||||||
<url>https://open-autonomous-connection.org/</url>
|
<url>https://open-autonomous-connection.org/</url>
|
||||||
@@ -74,7 +74,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.openautonomousconnection</groupId>
|
<groupId>org.openautonomousconnection</groupId>
|
||||||
<artifactId>LuaScript</artifactId>
|
<artifactId>LuaScript</artifactId>
|
||||||
<version>1.0.0-BETA.1.3</version>
|
<version>0.0.0-STABLE.1.3</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.openautonomousconnection</groupId>
|
<groupId>org.openautonomousconnection</groupId>
|
||||||
|
|||||||
@@ -5,8 +5,11 @@ import javafx.scene.web.WebView;
|
|||||||
import org.openautonomousconnection.luascript.fx.FxDomHost;
|
import org.openautonomousconnection.luascript.fx.FxDomHost;
|
||||||
import org.openautonomousconnection.luascript.fx.FxThreadBridge;
|
import org.openautonomousconnection.luascript.fx.FxThreadBridge;
|
||||||
import org.openautonomousconnection.luascript.hosts.UiHost;
|
import org.openautonomousconnection.luascript.hosts.UiHost;
|
||||||
|
import org.openautonomousconnection.oacswing.component.OACOptionPane;
|
||||||
|
import org.openautonomousconnection.webclient.Main;
|
||||||
import org.w3c.dom.Element;
|
import org.w3c.dom.Element;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -66,23 +69,17 @@ public final class UiHostImpl implements UiHost {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void alert(String message) {
|
public void alert(String message) {
|
||||||
// No JS: use simple JavaFX dialog-less fallback (log-style). You can replace with real Dialogs later.
|
OACOptionPane.showMessageDialog(Main.getUi(), message, "Alert", JOptionPane.INFORMATION_MESSAGE);
|
||||||
// Keeping it deterministic and non-blocking for now.
|
|
||||||
System.out.println("[ui.alert] " + (message == null ? "" : message));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean confirm(String message) {
|
public boolean confirm(String message) {
|
||||||
// No JS: deterministic default (false). Replace with JavaFX dialogs if you want UI interaction.
|
return OACOptionPane.showConfirmDialog(Main.getUi(), message, "Alert", OACOptionPane.YES_NO_OPTION) == OACOptionPane.YES_OPTION;
|
||||||
System.out.println("[ui.confirm] " + (message == null ? "" : message));
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String prompt(String message, String defaultValue) {
|
public String prompt(String message, String defaultValue) {
|
||||||
// No JS: deterministic default.
|
return (String) OACOptionPane.showInputDialog(Main.getUi(), message, "Prompt", JOptionPane.QUESTION_MESSAGE, null, null, defaultValue);
|
||||||
System.out.println("[ui.prompt] " + (message == null ? "" : message));
|
|
||||||
return defaultValue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package org.openautonomousconnection.webclient.settings;
|
|||||||
|
|
||||||
import org.openautonomousconnection.luascript.security.LuaExecutionPolicy;
|
import org.openautonomousconnection.luascript.security.LuaExecutionPolicy;
|
||||||
|
|
||||||
import java.time.Duration;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -187,6 +186,6 @@ public final class AppSettings {
|
|||||||
* Resets the Lua policy back to ui default.
|
* Resets the Lua policy back to ui default.
|
||||||
*/
|
*/
|
||||||
public void resetLuaPolicyToUiDefault() {
|
public void resetLuaPolicyToUiDefault() {
|
||||||
this.luaPolicy = new LuaExecutionPolicy(Duration.ofMillis(50L), 200_000L, 5_000);
|
this.luaPolicy = LuaExecutionPolicy.uiDefault();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import javafx.concurrent.Worker;
|
|||||||
import javafx.scene.web.WebEngine;
|
import javafx.scene.web.WebEngine;
|
||||||
import javafx.scene.web.WebView;
|
import javafx.scene.web.WebView;
|
||||||
import org.luaj.vm2.Globals;
|
import org.luaj.vm2.Globals;
|
||||||
|
import org.luaj.vm2.LuaError;
|
||||||
import org.openautonomousconnection.luascript.fx.FxDomHost;
|
import org.openautonomousconnection.luascript.fx.FxDomHost;
|
||||||
import org.openautonomousconnection.luascript.fx.FxEventHost;
|
import org.openautonomousconnection.luascript.fx.FxEventHost;
|
||||||
import org.openautonomousconnection.luascript.fx.FxWebViewResourceHost;
|
import org.openautonomousconnection.luascript.fx.FxWebViewResourceHost;
|
||||||
@@ -11,6 +12,8 @@ import org.openautonomousconnection.luascript.hosts.HostServices;
|
|||||||
import org.openautonomousconnection.luascript.runtime.LuaRuntime;
|
import org.openautonomousconnection.luascript.runtime.LuaRuntime;
|
||||||
import org.openautonomousconnection.luascript.security.LuaExecutionPolicy;
|
import org.openautonomousconnection.luascript.security.LuaExecutionPolicy;
|
||||||
import org.openautonomousconnection.luascript.utils.LuaGlobalsFactory;
|
import org.openautonomousconnection.luascript.utils.LuaGlobalsFactory;
|
||||||
|
import org.openautonomousconnection.oacswing.component.OACOptionPane;
|
||||||
|
import org.openautonomousconnection.webclient.Main;
|
||||||
import org.openautonomousconnection.webclient.lua.WebLogger;
|
import org.openautonomousconnection.webclient.lua.WebLogger;
|
||||||
import org.openautonomousconnection.webclient.lua.hosts.ConsoleHostImpl;
|
import org.openautonomousconnection.webclient.lua.hosts.ConsoleHostImpl;
|
||||||
import org.openautonomousconnection.webclient.lua.hosts.UiHostImpl;
|
import org.openautonomousconnection.webclient.lua.hosts.UiHostImpl;
|
||||||
@@ -95,17 +98,19 @@ public final class FxEngine implements AutoCloseable {
|
|||||||
ConsoleHostImpl console = new ConsoleHostImpl(logger);
|
ConsoleHostImpl console = new ConsoleHostImpl(logger);
|
||||||
UiHostImpl uiHost = new UiHostImpl(engine, webView, dom);
|
UiHostImpl uiHost = new UiHostImpl(engine, webView, dom);
|
||||||
FxWebViewResourceHost resourceHost = new FxWebViewResourceHost(engine);
|
FxWebViewResourceHost resourceHost = new FxWebViewResourceHost(engine);
|
||||||
|
FxEventHost eventHost = new FxEventHost(dom);
|
||||||
LuaRuntime rt = new LuaRuntime(globals, new HostServices.Default(uiHost, dom, null, resourceHost, console), policy);
|
|
||||||
|
|
||||||
FxEventHost eventHost = new FxEventHost(dom, rt.eventRouter());
|
|
||||||
HostServices services = new HostServices.Default(uiHost, dom, eventHost, resourceHost, console);
|
HostServices services = new HostServices.Default(uiHost, dom, eventHost, resourceHost, console);
|
||||||
|
LuaRuntime rt = new LuaRuntime(globals, services, policy);
|
||||||
rt.close();
|
eventHost.setRouter(rt.eventRouter());
|
||||||
rt = new LuaRuntime(globals, services, policy);
|
|
||||||
|
|
||||||
rt.installStdTables(true);
|
rt.installStdTables(true);
|
||||||
rt.bootstrapFromDom();
|
|
||||||
|
try {
|
||||||
|
rt.bootstrapFromDom();
|
||||||
|
} catch (LuaError error) {
|
||||||
|
Main.getLogger().exception("Failed to start script", error);
|
||||||
|
OACOptionPane.showMessageDialog(Main.getUi(), error.getMessage(), "Script", OACOptionPane.ERROR_MESSAGE);
|
||||||
|
}
|
||||||
|
|
||||||
this.runtime = rt;
|
this.runtime = rt;
|
||||||
}
|
}
|
||||||
@@ -135,4 +140,4 @@ public final class FxEngine implements AutoCloseable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -87,9 +87,10 @@ public final class SettingsManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Lua policy
|
// Lua policy
|
||||||
long timeoutMs = parseLong(p.getProperty("lua.timeoutMs"), 50L);
|
LuaExecutionPolicy defaultPolicy = LuaExecutionPolicy.uiDefault();
|
||||||
long instr = parseLong(p.getProperty("lua.instructionLimit"), 200_000L);
|
long timeoutMs = parseLong(p.getProperty("lua.timeoutMs"), defaultPolicy.timeout().toMillis());
|
||||||
int hook = parseInt(p.getProperty("lua.hookStep"), 5_000);
|
long instr = parseLong(p.getProperty("lua.instructionLimit"), defaultPolicy.instructionLimit());
|
||||||
|
int hook = parseInt(p.getProperty("lua.hookStep"), defaultPolicy.hookStep());
|
||||||
try {
|
try {
|
||||||
s.setLuaPolicy(new LuaExecutionPolicy(Duration.ofMillis(timeoutMs), instr, hook));
|
s.setLuaPolicy(new LuaExecutionPolicy(Duration.ofMillis(timeoutMs), instr, hook));
|
||||||
} catch (Exception ignored) {
|
} catch (Exception ignored) {
|
||||||
@@ -187,4 +188,4 @@ public final class SettingsManager {
|
|||||||
return def;
|
return def;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user