]> git.argeo.org Git - lgpl/argeo-commons.git/blob - FeatureSourcesView.java
76ea5dd5600dace7af4fc04c6cbc0f0f77aad68e
[lgpl/argeo-commons.git] / FeatureSourcesView.java
1 package org.argeo.gis.ui.views;
2
3 import javax.jcr.Node;
4 import javax.jcr.RepositoryException;
5 import javax.jcr.Session;
6
7 import org.argeo.ArgeoException;
8 import org.argeo.eclipse.ui.jcr.SimpleNodeContentProvider;
9 import org.argeo.geotools.jcr.GeoJcrMapper;
10 import org.argeo.gis.ui.editors.DefaultMapEditor;
11 import org.argeo.jcr.gis.GisTypes;
12 import org.eclipse.jface.viewers.DoubleClickEvent;
13 import org.eclipse.jface.viewers.IDoubleClickListener;
14 import org.eclipse.jface.viewers.IStructuredSelection;
15 import org.eclipse.jface.viewers.LabelProvider;
16 import org.eclipse.jface.viewers.TreeViewer;
17 import org.eclipse.swt.SWT;
18 import org.eclipse.swt.widgets.Composite;
19 import org.eclipse.ui.IEditorPart;
20 import org.eclipse.ui.part.ViewPart;
21 import org.geotools.data.FeatureSource;
22 import org.opengis.feature.simple.SimpleFeature;
23 import org.opengis.feature.simple.SimpleFeatureType;
24
25 public class FeatureSourcesView extends ViewPart implements
26 IDoubleClickListener {
27 public final static String ID = "org.argeo.gis.ui.featureSourcesView";
28
29 private String dataStoresBasePath = "/gis/dataStores";
30
31 private Session session;
32
33 private TreeViewer viewer;
34
35 private GeoJcrMapper geoJcrMapper;
36
37 @Override
38 public void createPartControl(Composite parent) {
39 viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
40 String[] basePaths = { dataStoresBasePath };
41 viewer.setContentProvider(new SimpleNodeContentProvider(session,
42 basePaths));
43 viewer.setLabelProvider(new MapsLabelProvider());
44 viewer.setInput(getViewSite());
45 viewer.addDoubleClickListener(this);
46 }
47
48 public void doubleClick(DoubleClickEvent event) {
49 if (!event.getSelection().isEmpty()) {
50 Object obj = ((IStructuredSelection) event.getSelection())
51 .getFirstElement();
52 if (obj instanceof Node) {
53 Node node = (Node) obj;
54 try {
55 if (!node.getPrimaryNodeType().isNodeType(
56 GisTypes.GIS_FEATURE_SOURCE))
57 return;
58 } catch (RepositoryException e) {
59 throw new ArgeoException("Cannot check type of " + node, e);
60 }
61 FeatureSource<SimpleFeatureType, SimpleFeature> featureSource = geoJcrMapper
62 .getFeatureSource(node);
63 IEditorPart ed = getSite().getWorkbenchWindow().getActivePage()
64 .getActiveEditor();
65 if (ed instanceof DefaultMapEditor) {
66 ((DefaultMapEditor) ed).addLayer(featureSource);
67 }
68 }
69
70 }
71
72 }
73
74 public void setGeoJcrMapper(GeoJcrMapper geoJcrMapper) {
75 this.geoJcrMapper = geoJcrMapper;
76 }
77
78 @Override
79 public void setFocus() {
80 viewer.getTree().setFocus();
81 }
82
83 public void refresh() {
84 viewer.refresh();
85 }
86
87 public void setSession(Session session) {
88 this.session = session;
89 }
90
91 private class MapsLabelProvider extends LabelProvider {
92
93 @Override
94 public String getText(Object element) {
95 return super.getText(element);
96 }
97
98 }
99 }