import java.util.Locale;
import java.util.Map;
import java.util.StringJoiner;
+import java.util.concurrent.CompletionStage;
import java.util.function.Function;
/**
String createJsFunction(String name, Function<Object[], Object> toDo);
/** Get a global variable name. */
- public String getJsVarName(String name);
+ String getJsVarName(String name);
+
+ /**
+ * Completion stage when the client is ready (typically the page has loaded in
+ * the browser).
+ */
+ CompletionStage<Boolean> getReadyStage();
/*
* DEFAULTS
execute(jsObject + '.' + methodCall, args);
}
+ default boolean isInstanceOf(String reference, String jsClass) {
+ try {
+ return (Boolean) evaluate("return " + getJsVarName(reference) + " instanceof " + jsClass);
+ } catch (Exception e) {
+ // TODO better understand why instanceof is often failing with SWT Browser
+ return false;
+ }
+ }
+
/*
* UTILITIES
*/
static String toJsValue(Object o) {
if (o instanceof CharSequence)
- return '\"' + o.toString() + '\"';
+ return '\'' + o.toString() + '\'';
else if (o instanceof Number)
return o.toString();
else if (o instanceof Boolean)
return jsObject.newJs();
else
return jsObject.getJsReference();
+ } else if (o instanceof JsReference jsReference) {
+ return jsReference.get();
} else
- return '\"' + o.toString() + '\"';
+ return '\'' + o.toString() + '\'';
}
static String toJsArgs(Object... arr) {
return sj.toString();
}
+ static String escapeQuotes(String str) {
+ return str.replace("'", "\\'").replace("\"", "\\\"");
+ }
+
}