]>
git.argeo.org Git - gpl/argeo-suite.git/blob - swt/org.argeo.app.geo.swt/src/org/argeo/app/geo/swt/SwtMapPart.java
1 package org
.argeo
.app
.geo
.swt
;
3 import java
.util
.concurrent
.CompletableFuture
;
5 import org
.argeo
.app
.geo
.ux
.JsImplementation
;
6 import org
.argeo
.app
.geo
.ux
.MapPart
;
7 import org
.argeo
.cms
.swt
.CmsSwtUtils
;
8 import org
.eclipse
.swt
.SWT
;
9 import org
.eclipse
.swt
.browser
.Browser
;
10 import org
.eclipse
.swt
.browser
.ProgressEvent
;
11 import org
.eclipse
.swt
.browser
.ProgressListener
;
12 import org
.eclipse
.swt
.layout
.GridData
;
13 import org
.eclipse
.swt
.widgets
.Composite
;
15 public class SwtMapPart
extends Composite
implements MapPart
{
16 static final long serialVersionUID
= 2713128477504858552L;
17 private Browser browser
;
19 // private CompletableFuture<Boolean> renderCompleted = new
20 // CompletableFuture<>();
21 private CompletableFuture
<Boolean
> pageLoaded
= new CompletableFuture
<>();
23 private String jsImplementation
= JsImplementation
.OPENLAYERS_MAP_PART
.getJsClass();
24 private String mapVar
= "globalThis.argeoMap";
26 public SwtMapPart(Composite parent
, int style
) {
28 parent
.setLayout(CmsSwtUtils
.noSpaceGridLayout());
29 setLayoutData(new GridData(SWT
.FILL
, SWT
.FILL
, true, true));
30 setLayout(CmsSwtUtils
.noSpaceGridLayout());
31 browser
= new Browser(this, SWT
.BORDER
);
32 browser
.setLayoutData(new GridData(SWT
.FILL
, SWT
.FILL
, true, true));
33 // functions exposed to JavaScript
34 // new onRenderComplete();
35 browser
.setUrl("/pkg/org.argeo.app.geo.js/index.html");
36 browser
.addProgressListener(new ProgressListener() {
37 static final long serialVersionUID
= 1L;
40 public void completed(ProgressEvent event
) {
43 browser
.execute(mapVar
+ " = new " + jsImplementation
+ "();");
45 // browser.execute("console.log(myInstance.myField)");
46 pageLoaded
.complete(true);
50 public void changed(ProgressEvent event
) {
56 public void addPoint(Double lng
, Double lat
, String style
) {
57 pageLoaded
.thenAccept((b
) -> {
59 mapVar
+ ".addPoint(" + lng
+ ", " + lat
+ "," + (style
== null ?
"'default'" : style
) + ")");
64 public void addUrlLayer(String url
, Format format
) {
65 pageLoaded
.thenAccept((b
) -> {
66 browser
.evaluate(mapVar
+ ".addUrlLayer('" + url
+ "','" + format
.name() + "')");
71 public void setZoom(int zoom
) {
72 pageLoaded
.thenAccept((b
) -> {
73 browser
.evaluate(mapVar
+ ".setZoom(" + zoom
+ ")");
78 public void setCenter(Double lng
, Double lat
) {
79 pageLoaded
.thenAccept((b
) -> {
80 browser
.evaluate(mapVar
+ ".setCenter(" + lng
+ ", " + lat
+ ")");
85 // private void setRenderCompleted() {
86 // renderCompleted.complete(true);
89 // private class onRenderComplete extends BrowserFunction {
91 // onRenderComplete() {
92 // super(browser, onRenderComplete.class.getSimpleName());
96 // public Object function(Object[] arguments) {
97 // setRenderCompleted();
98 // System.out.println("Render complete (Java)");