X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=swt%2Forg.argeo.app.geo.swt%2Fsrc%2Forg%2Fargeo%2Fapp%2Fgeo%2Fswt%2FSwtJSMapPart.java;h=16fa83edb96bd13a129f059d90ba4a351ac6bfb4;hb=21433ef7b049abb44bbd3c815b6724a15912accf;hp=09848f9757f7069008f01f578a586b8f0518aadd;hpb=69adaa7b31078cb30043b073dada14dee1a9e75d;p=gpl%2Fargeo-suite.git diff --git a/swt/org.argeo.app.geo.swt/src/org/argeo/app/geo/swt/SwtJSMapPart.java b/swt/org.argeo.app.geo.swt/src/org/argeo/app/geo/swt/SwtJSMapPart.java index 09848f9..16fa83e 100644 --- a/swt/org.argeo.app.geo.swt/src/org/argeo/app/geo/swt/SwtJSMapPart.java +++ b/swt/org.argeo.app.geo.swt/src/org/argeo/app/geo/swt/SwtJSMapPart.java @@ -4,6 +4,7 @@ import java.util.Locale; import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletionStage; import java.util.function.Consumer; +import java.util.function.Function; import org.argeo.api.cms.CmsLog; import org.argeo.app.geo.ux.JsImplementation; @@ -126,22 +127,34 @@ public class SwtJSMapPart extends Composite implements MapPart { * CALLBACKS */ public void onFeatureSelected(Consumer toDo) { - addCallback("FeatureSelected", (arr) -> toDo.accept(new FeatureSelectedEvent((String) arr[0]))); + addCallback("FeatureSelected", (arr) -> { + toDo.accept(new FeatureSelectedEvent((String) arr[0])); + return null; + }); } public void onFeatureSingleClick(Consumer toDo) { - addCallback("FeatureSingleClick", (arr) -> toDo.accept(new FeatureSingleClickEvent((String) arr[0]))); + addCallback("FeatureSingleClick", (arr) -> { + toDo.accept(new FeatureSingleClickEvent((String) arr[0])); + return null; + }); + } + + public void onFeaturePopup(Function toDo) { + addCallback("FeaturePopup", (arr) -> { + return toDo.apply(new FeaturePopupEvent((String) arr[0])); + }); } - protected void addCallback(String suffix, Consumer toDo) { + protected void addCallback(String suffix, Function toDo) { pageLoaded.thenAccept((ready) -> { // browser functions must be directly on window (RAP specific) new BrowserFunction(browser, mapVar + "__on" + suffix) { @Override public Object function(Object[] arguments) { - toDo.accept(arguments); - return null; + Object result = toDo.apply(arguments); + return result; } };