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