X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=swt%2Forg.argeo.app.geo.swt%2Fsrc%2Forg%2Fargeo%2Fapp%2Fgeo%2Fswt%2Fopenlayers%2FOLMap.java;h=d045afd21d9aa3e6cd91ba2a359bfde54ac285e7;hb=be0d3b8c6d90256157ebf0ba9dd7a8703165ba6b;hp=bd2a15d29e24e72b1e2043ef7f99f53d02fb7874;hpb=37c5768d88096f4eb7be02f18770b6a40be5c110;p=gpl%2Fargeo-suite.git diff --git a/swt/org.argeo.app.geo.swt/src/org/argeo/app/geo/swt/openlayers/OLMap.java b/swt/org.argeo.app.geo.swt/src/org/argeo/app/geo/swt/openlayers/OLMap.java index bd2a15d..d045afd 100644 --- a/swt/org.argeo.app.geo.swt/src/org/argeo/app/geo/swt/openlayers/OLMap.java +++ b/swt/org.argeo.app.geo.swt/src/org/argeo/app/geo/swt/openlayers/OLMap.java @@ -1,78 +1,96 @@ package org.argeo.app.geo.swt.openlayers; +import java.util.concurrent.CompletableFuture; + import org.argeo.app.geo.ux.MapPart; import org.argeo.cms.swt.CmsSwtUtils; import org.eclipse.swt.SWT; import org.eclipse.swt.browser.Browser; +import org.eclipse.swt.browser.ProgressEvent; +import org.eclipse.swt.browser.ProgressListener; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Label; public class OLMap extends Composite implements MapPart { static final long serialVersionUID = 2713128477504858552L; - private Label div; + private Browser browser; + + // private CompletableFuture renderCompleted = new + // CompletableFuture<>(); + private CompletableFuture pageLoaded = new CompletableFuture<>(); + + private String mapVar = "window.argeoMap"; public OLMap(Composite parent, int style) { super(parent, style); parent.setLayout(CmsSwtUtils.noSpaceGridLayout()); setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); setLayout(CmsSwtUtils.noSpaceGridLayout()); -// div = new Label(this, SWT.NONE); -// CmsSwtUtils.markup(div); -// CmsSwtUtils.disableMarkupValidation(div); -// div.setText(html); -// div.setLayoutData(CmsSwtUtils.fillAll()); - String html = """ - - - - - Simple Map - - - - -
- - - - """; - Browser browser = new Browser(this, SWT.BORDER); + browser = new Browser(this, SWT.BORDER); browser.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); - //browser.setText(html); + // functions exposed to JavaScript +// new onRenderComplete(); browser.setUrl("/pkg/org.argeo.app.geo.js/index.html"); - + browser.addProgressListener(new ProgressListener() { + static final long serialVersionUID = 1L; + + @Override + public void completed(ProgressEvent event) { + + // create map + browser.execute(mapVar + " = Object.create(window.argeo.app.geo.ArgeoMap);"); + pageLoaded.complete(true); + } + + @Override + public void changed(ProgressEvent event) { + } + }); } @Override public void addPoint(Double lng, Double lat) { // TODO Auto-generated method stub - + } @Override public void addUrlLayer(String layer, Format format) { // TODO Auto-generated method stub - + } @Override public void setZoom(int zoom) { - // TODO Auto-generated method stub - + pageLoaded.thenAccept((b) -> { + browser.evaluate(mapVar + ".setZoom(" + zoom + ")"); + }); } @Override public void setCenter(Double lng, Double lat) { - // TODO Auto-generated method stub - + pageLoaded.thenAccept((b) -> { + browser.evaluate(mapVar + ".setCenter(" + lng + ", " + lat + ")"); + }); + } - - +// private void setRenderCompleted() { +// renderCompleted.complete(true); +// } +// +// private class onRenderComplete extends BrowserFunction { +// +// onRenderComplete() { +// super(browser, onRenderComplete.class.getSimpleName()); +// } +// +// @Override +// public Object function(Object[] arguments) { +// setRenderCompleted(); +// System.out.println("Render complete (Java)"); +// return null; +// } +// +// } }