]> git.argeo.org Git - gpl/argeo-slc.git/blob - eclipse/plugins/org.argeo.slc.ui.gis/src/main/java/org/argeo/slc/ui/gis/commands/LoadLayersFromBackend.java
Working GPX import
[gpl/argeo-slc.git] / eclipse / plugins / org.argeo.slc.ui.gis / src / main / java / org / argeo / slc / ui / gis / commands / LoadLayersFromBackend.java
1 package org.argeo.slc.ui.gis.commands;
2
3 import org.apache.commons.logging.Log;
4 import org.apache.commons.logging.LogFactory;
5 import org.argeo.slc.geotools.Backend;
6 import org.argeo.slc.geotools.DataDescriptor;
7 import org.argeo.slc.geotools.data.FeatureSourceDataDescriptor;
8 import org.argeo.slc.geotools.data.PostgisDataDescriptor;
9 import org.argeo.slc.geotools.data.WorldImageDataDescriptor;
10 import org.argeo.slc.ui.gis.views.AbstractMapView;
11 import org.argeo.slc.ui.gis.views.LayersView;
12 import org.eclipse.core.commands.AbstractHandler;
13 import org.eclipse.core.commands.ExecutionEvent;
14 import org.eclipse.core.commands.ExecutionException;
15 import org.eclipse.ui.handlers.HandlerUtil;
16 import org.geotools.map.MapContext;
17 import org.geotools.styling.RasterSymbolizer;
18 import org.geotools.styling.Style;
19 import org.geotools.styling.StyleBuilder;
20
21 /** Open a JCR query editor. */
22 public class LoadLayersFromBackend extends AbstractHandler {
23 private final static Log log = LogFactory
24 .getLog(LoadLayersFromBackend.class);
25 private Backend backend;
26
27 public Object execute(ExecutionEvent event) throws ExecutionException {
28 AbstractMapView mapView = (AbstractMapView) HandlerUtil
29 .getActiveWorkbenchWindow(event).getActivePage()
30 .findView(AbstractMapView.ID);
31
32 MapContext mapContext = mapView.getMapContext();
33 mapContext.clearLayerList();
34 try {
35 // load layers
36 for (DataDescriptor dd : backend.getAvailableData(null)) {
37 if (dd instanceof WorldImageDataDescriptor) {
38 StyleBuilder styleBuilder = new StyleBuilder();
39 RasterSymbolizer rs = styleBuilder.createRasterSymbolizer();
40 rs.setGeometryPropertyName("geom");
41 Style rasterStyle = styleBuilder.createStyle(rs);
42 try {
43 mapContext.addLayer(backend.loadGridCoverage(dd),
44 rasterStyle);
45 } catch (Exception e) {
46 log.warn(e);
47 }
48
49 } else if (dd instanceof FeatureSourceDataDescriptor) {
50 try {
51 mapContext
52 .addLayer(backend.loadFeatureSource(dd), null);
53 } catch (Exception e) {
54 log.warn(e);
55 }
56 } else if (dd instanceof PostgisDataDescriptor) {
57 // DataStore dataStore = backend.loadDataStore(dd);
58 for (DataDescriptor dd2 : backend.getAvailableData(dd))
59 mapContext.addLayer(backend.loadFeatureSource(dd2),
60 null);
61 }
62 }
63
64 LayersView view = (LayersView) HandlerUtil
65 .getActiveWorkbenchWindow(event).getActivePage()
66 .findView(LayersView.ID);
67 view.setMapContext(mapContext);
68 // view.refresh();
69 } catch (Exception e) {
70 throw new ExecutionException("Cannot load layers from backend", e);
71 }
72 return null;
73 }
74
75 public void setBackend(Backend backend) {
76 this.backend = backend;
77 }
78
79 }