X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=gis%2Fplugins%2Forg.argeo.gis.ui.rcp.swing%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fgis%2Fui%2Frcp%2Fswing%2FSwingMapViewer.java;fp=gis%2Fplugins%2Forg.argeo.gis.ui.rcp.swing%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fgis%2Fui%2Frcp%2Fswing%2FSwingMapViewer.java;h=41c03ab21a63585aee255aea5d1969648d4f84d5;hb=7725ae1388fb3b0ff5721566bf2e9e6c4b957675;hp=dd272b45a695b0f7d4ac908421c8669426b76a53;hpb=00ec568367442bfb51e506e73d3b9e8bd7798a1c;p=lgpl%2Fargeo-commons.git diff --git a/gis/plugins/org.argeo.gis.ui.rcp.swing/src/main/java/org/argeo/gis/ui/rcp/swing/SwingMapViewer.java b/gis/plugins/org.argeo.gis.ui.rcp.swing/src/main/java/org/argeo/gis/ui/rcp/swing/SwingMapViewer.java index dd272b45a..41c03ab21 100644 --- a/gis/plugins/org.argeo.gis.ui.rcp.swing/src/main/java/org/argeo/gis/ui/rcp/swing/SwingMapViewer.java +++ b/gis/plugins/org.argeo.gis.ui.rcp.swing/src/main/java/org/argeo/gis/ui/rcp/swing/SwingMapViewer.java @@ -2,26 +2,39 @@ package org.argeo.gis.ui.rcp.swing; import java.awt.Color; import java.awt.Frame; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; import javax.jcr.Node; import org.argeo.geotools.jcr.GeoJcrMapper; +import org.argeo.geotools.styling.StylingUtils; import org.argeo.gis.ui.AbstractMapViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.awt.SWT_AWT; import org.eclipse.swt.widgets.Composite; import org.geotools.data.FeatureSource; +import org.geotools.geometry.jts.ReferencedEnvelope; import org.geotools.map.DefaultMapContext; +import org.geotools.map.DefaultMapLayer; +import org.geotools.map.MapLayer; import org.geotools.renderer.lite.StreamingRenderer; +import org.geotools.styling.Style; import org.geotools.swing.JMapPane; import org.opengis.feature.simple.SimpleFeature; import org.opengis.feature.simple.SimpleFeatureType; +/** Map viewer implementation based on GeoTools Swing components. */ public class SwingMapViewer extends AbstractMapViewer { private Composite embedded; private JMapPane mapPane; private VersatileZoomTool versatileZoomTool; + private Map mapLayers = Collections + .synchronizedMap(new HashMap()); + public SwingMapViewer(Node context, GeoJcrMapper geoJcrMapper, Composite parent) { super(context, geoJcrMapper); @@ -40,11 +53,35 @@ public class SwingMapViewer extends AbstractMapViewer { } @Override - protected void addFeatureSource(String path, - FeatureSource featureSource) { - // TODO: deal with style and rasters - mapPane.getMapContext().addLayer(featureSource, null); - mapPane.reset(); + protected void addFeatureSource(String layerId, + FeatureSource featureSource, + Object style) { + if (style == null) + style = StylingUtils.createLineStyle("BLACK", 1); + + MapLayer mapLayer = new DefaultMapLayer(featureSource, (Style) style); + addMapLayer(layerId, mapLayer); + } + + protected void addMapLayer(String layerId, MapLayer mapLayer) { + mapLayers.put(layerId, mapLayer); + mapPane.getMapContext().addLayer(mapLayer); + } + + public void addLayer(String layerId, Collection collection, Object style) { + if (style == null) + style = StylingUtils.createLineStyle("BLACK", 1); + MapLayer mapLayer = new DefaultMapLayer(collection, (Style) style); + addMapLayer(layerId, mapLayer); + } + + public void setStyle(String layerId, Object style) { + mapLayers.get(layerId).setStyle((Style) style); + } + + public void setAreaOfInterest(ReferencedEnvelope areaOfInterest) { + // mapPane.getMapContext().setAreaOfInterest(areaOfInterest); + mapPane.setDisplayArea(areaOfInterest); } }