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;fp=swt%2Forg.argeo.app.geo.swt%2Fsrc%2Forg%2Fargeo%2Fapp%2Fgeo%2Fswt%2FSwtJsMapPart.java;h=0000000000000000000000000000000000000000;hb=362c92fd2bdb555e1d691b661f0ee69c513be5a8;hp=c7e915651311176c9f2f08f749b7b9b10e7bf68c;hpb=720e78163faf96ccc966d155a516487af52ccec2;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 deleted file mode 100644 index c7e9156..0000000 --- a/swt/org.argeo.app.geo.swt/src/org/argeo/app/geo/swt/SwtJsMapPart.java +++ /dev/null @@ -1,108 +0,0 @@ -package org.argeo.app.geo.swt; - -import java.util.function.Consumer; -import java.util.function.Function; - -import org.argeo.app.geo.GeoUtils; -import org.argeo.app.geo.ux.JsImplementation; -import org.argeo.app.geo.ux.MapPart; -import org.argeo.app.swt.js.SwtBrowserJsPart; -import org.eclipse.swt.widgets.Composite; - -/** - * An SWT implementation of {@link MapPart} based on JavaScript. - */ -public class SwtJsMapPart extends SwtBrowserJsPart implements MapPart { - static final long serialVersionUID = 2713128477504858552L; - - private String jsImplementation = JsImplementation.OPENLAYERS_MAP_PART.getJsClass(); - private final String mapName;// = "argeoMap"; - - public SwtJsMapPart(String mapName, Composite parent, int style) { - super(parent, style, "/pkg/org.argeo.app.js/geo.html"); - this.mapName = mapName; - } - - @Override - protected void init() { - // create map - doExecute(getJsMapVar() + " = new " + jsImplementation + "('" + mapName + "');"); - } - - /* - * MapPart.js METHODS - */ - - @Override - public void addPoint(double lng, double lat, String style) { - executeMapMethod("addPoint(%f, %f, %s)", lng, lat, style == null ? "'default'" : style); - } - - @Override - public void addUrlLayer(String url, GeoFormat format, String style) { - executeMapMethod("addUrlLayer('%s', '%s', %s, false)", url, format.name(), style); - } - - public void addCssUrlLayer(String url, GeoFormat format, String css) { - String style = GeoUtils.createSldFromCss("layer", "Layer", css); - executeMapMethod("addUrlLayer('%s', '%s', '%s', true)", url, format.name(), style); - } - - public void addLayer() { - //executeMapMethod("addLayer(\"return new argeo.app.geo.TileLayer({source: new argeo.app.geo.OSM()})\")"); - executeMapMethod("getMap().addLayer(new argeo.tp.ol.TileLayer({source: new argeo.tp.ol.OSM()}))"); - } - - @Override - public void setZoom(int zoom) { - executeMapMethod("setZoom(%d)", zoom); - } - - @Override - public void setCenter(double lng, double lat) { - executeMapMethod("setCenter(%f, %f)", lng, lat); - } - - protected Object callMapMethod(String methodCall, Object... args) { - return callMethod(getJsMapVar(), methodCall, args); - } - - protected void executeMapMethod(String methodCall, Object... args) { - executeMethod(getJsMapVar(), methodCall, args); - } - - private String getJsMapVar() { - return getJsVarName(mapName); - } - - /* - * CALLBACKS - */ - public void onFeatureSelected(Consumer toDo) { - 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])); - return null; - }); - } - - public void onFeaturePopup(Function toDo) { - addCallback("FeaturePopup", (arr) -> { - return toDo.apply(new FeaturePopupEvent((String) arr[0])); - }); - } - - protected void addCallback(String suffix, Function toDo) { - getReadyStage().thenAccept((ready) -> { - String functionName = createJsFunction(mapName + "__on" + suffix, toDo); - doExecute(getJsMapVar() + ".callbacks['on" + suffix + "']=" + functionName + ";"); - executeMethod(mapName, "enable" + suffix + "()"); - }); - } -}