X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=swt%2Forg.argeo.app.swt%2Fsrc%2Forg%2Fargeo%2Fapp%2Fswt%2Fjs%2FSwtBrowserJsPart.java;h=6282b1e30f1fbac8959cb2730e3c82bbc54cbc78;hb=59da7271e876ca8a429beb86b67e7350eef1e1ca;hp=f479f962d5ecbba6922058202efe6c561e8b4dbe;hpb=b4ffcdbc144ccb0633f033bb0be498988374ae68;p=gpl%2Fargeo-suite.git diff --git a/swt/org.argeo.app.swt/src/org/argeo/app/swt/js/SwtBrowserJsPart.java b/swt/org.argeo.app.swt/src/org/argeo/app/swt/js/SwtBrowserJsPart.java index f479f96..6282b1e 100644 --- a/swt/org.argeo.app.swt/src/org/argeo/app/swt/js/SwtBrowserJsPart.java +++ b/swt/org.argeo.app.swt/src/org/argeo/app/swt/js/SwtBrowserJsPart.java @@ -1,16 +1,15 @@ package org.argeo.app.swt.js; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import java.util.Locale; -import java.util.StringJoiner; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionStage; import java.util.function.Function; import java.util.function.Supplier; import org.argeo.api.cms.CmsLog; +import org.argeo.app.ux.js.JsClient; import org.eclipse.swt.SWT; import org.eclipse.swt.browser.Browser; import org.eclipse.swt.browser.BrowserFunction; @@ -26,7 +25,7 @@ import org.eclipse.swt.widgets.Display; * A part using a {@link Browser} and remote JavaScript components on the client * side. */ -public class SwtBrowserJsPart { +public class SwtBrowserJsPart implements JsClient { private final static CmsLog log = CmsLog.getLog(SwtBrowserJsPart.class); private final static String GLOBAL_THIS_ = "globalThis."; @@ -111,17 +110,8 @@ public class SwtBrowserJsPart { * JAVASCRIPT ACCESS */ - /** - * Execute this JavaScript on the client side after making sure that the page - * has been loaded and the map object has been created. - * - * @param js the JavaScript code, possibly formatted according to - * {@link String#format}, with {@link Locale#ROOT} as locale (for - * stability of decimal separator, as expected by JavaScript. - * @param args the optional arguments of - * {@link String#format(String, Object...)} - */ - protected Object evaluate(String js, Object... args) { + @Override + public Object evaluate(String js, Object... args) { assert browser.getDisplay().equals(Display.findDisplay(Thread.currentThread())) : "Not the proper UI thread."; if (!readyStage.isDone()) throw new IllegalStateException("Methods returning a result can only be called after UI initilaisation."); @@ -133,7 +123,8 @@ public class SwtBrowserJsPart { return result; } - protected void execute(String js, Object... args) { + @Override + public void execute(String js, Object... args) { if (readyStage.isDone()) { boolean success = browser.execute(String.format(Locale.ROOT, js, args)); if (!success) @@ -147,8 +138,8 @@ public class SwtBrowserJsPart { } } - /** @return the globally usable function name. */ - protected String createJsFunction(String name, Function toDo) { + @Override + public String createJsFunction(String name, Function toDo) { // browser functions must be directly on window (RAP specific) new BrowserFunction(browser, name) { @@ -171,53 +162,11 @@ public class SwtBrowserJsPart { browser.execute(String.format(Locale.ROOT, js, args)); } - protected Object callMethod(String jsObject, String methodCall, Object... args) { - return evaluate(jsObject + '.' + methodCall, args); - } - - protected void executeMethod(String jsObject, String methodCall, Object... args) { - execute(jsObject + '.' + methodCall, args); - } - - protected String getJsVarName(String name) { + @Override + public String getJsVarName(String name) { return GLOBAL_THIS_ + name; } - protected static String toJsArray(int... arr) { - return Arrays.toString(arr); - } - - protected static String toJsArray(long... arr) { - return Arrays.toString(arr); - } - - protected static String toJsArray(double... arr) { - return Arrays.toString(arr); - } - - protected static String toJsArray(String... arr) { - return toJsArray((Object[]) arr); - } - - protected static String toJsArray(Object... arr) { - StringJoiner sj = new StringJoiner(",", "[", "]"); - for (Object o : arr) { - sj.add(toJsValue(o)); - } - return sj.toString(); - } - - protected static String toJsValue(Object o) { - if (o instanceof CharSequence) - return '\"' + o.toString() + '\"'; - else if (o instanceof Number) - return o.toString(); - else if (o instanceof Boolean) - return o.toString(); - else - return '\"' + o.toString() + '\"'; - } - /* * ACCESSORS */