Vector layers and styling
[gpl/argeo-suite.git] / org.argeo.app.geo / src / org / argeo / app / geo / ux / OpenLayersMapPart.java
index 829b343a38bccd88dffe60f99899e9e22263e4dd..8fad7e26b8ee50a2adc22330a6e6a61aa5e24d01 100644 (file)
@@ -1,7 +1,10 @@
 package org.argeo.app.geo.ux;
 
+import org.argeo.app.ol.AbstractOlObject;
+import org.argeo.app.ol.Layer;
 import org.argeo.app.ol.OlMap;
-import org.argeo.app.ux.js.AbstractJsObject;
+import org.argeo.app.ol.TileLayer;
+import org.argeo.app.ol.VectorLayer;
 import org.argeo.app.ux.js.JsClient;
 
 public class OpenLayersMapPart extends AbstractGeoJsObject {
@@ -16,4 +19,24 @@ public class OpenLayersMapPart extends AbstractGeoJsObject {
        public OlMap getMap() {
                return new OlMap(getJsClient(), getReference() + ".getMap()");
        }
+
+       public void setSld(String xml) {
+               executeMethod(getMethodName(), JsClient.escapeQuotes(xml));
+       }
+
+       public void applyStyle(String layerName, String styledLayerName) {
+               executeMethod(getMethodName(), layerName, styledLayerName);
+       }
+
+       public Layer getLayer(String name) {
+               // TODO deal with not found
+               String reference = "getLayerByName('" + name + "')";
+               if (getJsClient().isInstanceOf(reference, AbstractOlObject.getJsClassName(VectorLayer.class))) {
+                       return new VectorLayer(getJsClient(), reference);
+               } else if (getJsClient().isInstanceOf(reference, AbstractOlObject.getJsClassName(TileLayer.class))) {
+                       return new TileLayer(getJsClient(), reference);
+               } else {
+                       return new Layer(getJsClient(), reference);
+               }
+       }
 }