+package org.argeo.gis.ui.rap.openlayers;
+
+import org.argeo.gis.ui.MapContextProvider;
+import org.argeo.gis.ui.MapControlCreator;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.widgets.Composite;
+import org.polymap.openlayers.rap.widget.OpenLayersWidget;
+import org.polymap.openlayers.rap.widget.base_types.OpenLayersMap;
+import org.polymap.openlayers.rap.widget.controls.KeyboardDefaultsControl;
+import org.polymap.openlayers.rap.widget.controls.LayerSwitcherControl;
+import org.polymap.openlayers.rap.widget.controls.MouseDefaultsControl;
+import org.polymap.openlayers.rap.widget.controls.PanZoomBarControl;
+import org.polymap.openlayers.rap.widget.controls.ScaleControl;
+import org.polymap.openlayers.rap.widget.layers.OSMLayer;
+import org.polymap.openlayers.rap.widget.layers.WMSLayer;
+
+public class OpenLayersMapControlCreator implements MapControlCreator {
+ public Composite createMapControl(Composite parent,
+ MapContextProvider mapContextProvider) {
+
+ // OpenLayersWidget openLayersWidget = new OpenLayersWidget(parent,
+ // SWT.MULTI | SWT.WRAP, "/js_lib/OpenLayers/OpenLayers.js");
+ OpenLayersWidget openLayersWidget = new OpenLayersWidget(parent,
+ SWT.MULTI | SWT.WRAP);
+ openLayersWidget.setLayoutData(new GridData(GridData.FILL_BOTH));
+
+ OpenLayersMap map = openLayersWidget.getMap();
+
+ map.addControl(new LayerSwitcherControl());
+ map.addControl(new MouseDefaultsControl());
+ map.addControl(new KeyboardDefaultsControl());
+ map.addControl(new PanZoomBarControl());
+ map.addControl(new ScaleControl());
+
+// WMSLayer baseLayer = new WMSLayer("argeo_dev",
+// "https://dev.argeo.org/geoserver/wms?",
+// "naturalearth:10m_admin_0_countries");
+
+ OSMLayer baseLayer = new OSMLayer("OSM",
+ "http://tile.openstreetmap.org/${z}/${x}/${y}.png", 19);
+ map.addLayer(baseLayer);
+
+ MapContextAdapter mapContextAdapter = new MapContextAdapter(
+ mapContextProvider.getMapContext(), map);
+ // FIXME: find a better way to register it
+ openLayersWidget.setData(mapContextAdapter);
+ return openLayersWidget;
+ }
+
+}