]> git.argeo.org Git - lgpl/argeo-commons.git/blob - FeatureSourcesView.java
7d78bffc844e8c3e9591405e5bce1a5771d54459
[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.gis.ui.editors.DefaultMapEditor;
10 import org.argeo.gis.ui.editors.MapFormPage;
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.forms.editor.FormEditor;
21 import org.eclipse.ui.forms.editor.IFormPage;
22 import org.eclipse.ui.part.ViewPart;
23
24 public class FeatureSourcesView extends ViewPart implements
25 IDoubleClickListener {
26 private String dataStoresBasePath = "/gis/dataStores";
27
28 private Session session;
29
30 private TreeViewer viewer;
31
32 @Override
33 public void createPartControl(Composite parent) {
34 viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
35 String[] basePaths = { dataStoresBasePath };
36 SimpleNodeContentProvider sncp = new SimpleNodeContentProvider(session,
37 basePaths);
38 sncp.setMkdirs(true);
39 viewer.setContentProvider(sncp);
40 viewer.setLabelProvider(new MapsLabelProvider());
41 viewer.setInput(getViewSite());
42 viewer.addDoubleClickListener(this);
43 }
44
45 public void doubleClick(DoubleClickEvent event) {
46 if (!event.getSelection().isEmpty()) {
47 Object obj = ((IStructuredSelection) event.getSelection())
48 .getFirstElement();
49 if (obj instanceof Node) {
50 Node node = (Node) obj;
51 try {
52 if (!node.isNodeType(GisTypes.GIS_FEATURE_SOURCE))
53 return;
54 } catch (RepositoryException e) {
55 throw new ArgeoException("Cannot check type of " + node, e);
56 }
57 IEditorPart ed = getSite().getWorkbenchWindow().getActivePage()
58 .getActiveEditor();
59 if (ed instanceof DefaultMapEditor) {
60 ((DefaultMapEditor) ed).getMapViewer().addLayer(node);
61 } else if (ed instanceof FormEditor) {
62 IFormPage activePage = ((FormEditor) ed)
63 .getActivePageInstance();
64 if (activePage instanceof MapFormPage) {
65 ((MapFormPage) activePage).getMapViewer()
66 .addLayer(node);
67 }
68 }
69 }
70
71 }
72
73 }
74
75 @Override
76 public void setFocus() {
77 viewer.getTree().setFocus();
78 }
79
80 public void refresh() {
81 viewer.refresh();
82 }
83
84 public void setSession(Session session) {
85 this.session = session;
86 }
87
88 private class MapsLabelProvider extends LabelProvider {
89
90 @Override
91 public String getText(Object element) {
92 return super.getText(element);
93 }
94
95 }
96 }