]> git.argeo.org Git - gpl/argeo-suite.git/blob - swt/org.argeo.app.geo.swt/src/org/argeo/app/geo/swt/openlayers/OLMap.java
d045afd21d9aa3e6cd91ba2a359bfde54ac285e7
[gpl/argeo-suite.git] / swt / org.argeo.app.geo.swt / src / org / argeo / app / geo / swt / openlayers / OLMap.java
1 package org.argeo.app.geo.swt.openlayers;
2
3 import java.util.concurrent.CompletableFuture;
4
5 import org.argeo.app.geo.ux.MapPart;
6 import org.argeo.cms.swt.CmsSwtUtils;
7 import org.eclipse.swt.SWT;
8 import org.eclipse.swt.browser.Browser;
9 import org.eclipse.swt.browser.ProgressEvent;
10 import org.eclipse.swt.browser.ProgressListener;
11 import org.eclipse.swt.layout.GridData;
12 import org.eclipse.swt.widgets.Composite;
13
14 public class OLMap extends Composite implements MapPart {
15 static final long serialVersionUID = 2713128477504858552L;
16 private Browser browser;
17
18 // private CompletableFuture<Boolean> renderCompleted = new
19 // CompletableFuture<>();
20 private CompletableFuture<Boolean> pageLoaded = new CompletableFuture<>();
21
22 private String mapVar = "window.argeoMap";
23
24 public OLMap(Composite parent, int style) {
25 super(parent, style);
26 parent.setLayout(CmsSwtUtils.noSpaceGridLayout());
27 setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
28 setLayout(CmsSwtUtils.noSpaceGridLayout());
29 browser = new Browser(this, SWT.BORDER);
30 browser.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
31 // functions exposed to JavaScript
32 // new onRenderComplete();
33 browser.setUrl("/pkg/org.argeo.app.geo.js/index.html");
34 browser.addProgressListener(new ProgressListener() {
35 static final long serialVersionUID = 1L;
36
37 @Override
38 public void completed(ProgressEvent event) {
39
40 // create map
41 browser.execute(mapVar + " = Object.create(window.argeo.app.geo.ArgeoMap);");
42 pageLoaded.complete(true);
43 }
44
45 @Override
46 public void changed(ProgressEvent event) {
47 }
48 });
49 }
50
51 @Override
52 public void addPoint(Double lng, Double lat) {
53 // TODO Auto-generated method stub
54
55 }
56
57 @Override
58 public void addUrlLayer(String layer, Format format) {
59 // TODO Auto-generated method stub
60
61 }
62
63 @Override
64 public void setZoom(int zoom) {
65 pageLoaded.thenAccept((b) -> {
66 browser.evaluate(mapVar + ".setZoom(" + zoom + ")");
67 });
68 }
69
70 @Override
71 public void setCenter(Double lng, Double lat) {
72 pageLoaded.thenAccept((b) -> {
73 browser.evaluate(mapVar + ".setCenter(" + lng + ", " + lat + ")");
74 });
75
76 }
77
78 // private void setRenderCompleted() {
79 // renderCompleted.complete(true);
80 // }
81 //
82 // private class onRenderComplete extends BrowserFunction {
83 //
84 // onRenderComplete() {
85 // super(browser, onRenderComplete.class.getSimpleName());
86 // }
87 //
88 // @Override
89 // public Object function(Object[] arguments) {
90 // setRenderCompleted();
91 // System.out.println("Render complete (Java)");
92 // return null;
93 // }
94 //
95 // }
96 }