]> git.argeo.org Git - lgpl/argeo-commons.git/blob - DataStoresView.java
635ab617b640b9fff9b442c220621bf3df3bd921
[lgpl/argeo-commons.git] / DataStoresView.java
1 package org.argeo.gis.ui.views;
2
3 import java.util.ArrayList;
4 import java.util.Iterator;
5 import java.util.List;
6
7 import org.argeo.eclipse.ui.AbstractTreeContentProvider;
8 import org.argeo.gis.ui.data.DataStoreNode;
9 import org.argeo.gis.ui.data.FeatureNode;
10 import org.eclipse.jface.viewers.DoubleClickEvent;
11 import org.eclipse.jface.viewers.IDoubleClickListener;
12 import org.eclipse.jface.viewers.IStructuredSelection;
13 import org.eclipse.jface.viewers.LabelProvider;
14 import org.eclipse.jface.viewers.TreeViewer;
15 import org.eclipse.swt.SWT;
16 import org.eclipse.swt.widgets.Composite;
17 import org.eclipse.ui.part.ViewPart;
18 import org.geotools.data.DataStore;
19
20 public class DataStoresView extends ViewPart implements IDoubleClickListener {
21 private TreeViewer viewer;
22
23 private List<DataStore> dataStores;
24
25 @Override
26 public void createPartControl(Composite parent) {
27 viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
28 viewer.setContentProvider(new DataStoreContentProvider());
29 viewer.setLabelProvider(new DataStoreLabelProvider());
30 viewer.setInput(getViewSite());
31 viewer.addDoubleClickListener(this);
32 }
33
34 public void doubleClick(DoubleClickEvent event) {
35 if (!event.getSelection().isEmpty()) {
36 Iterator<?> it = ((IStructuredSelection) event.getSelection())
37 .iterator();
38 while (it.hasNext()) {
39 Object obj = it.next();
40 if (obj instanceof FeatureNode) {
41 // FeatureNode featureNode = (FeatureNode) obj;
42 // FeatureSource<SimpleFeatureType, SimpleFeature> featureSource = featureNode
43 // .getFeatureSource();
44 // IEditorPart ed = getSite().getWorkbenchWindow().getActivePage().getActiveEditor();
45 // if(ed instanceof DefaultMapEditor){
46 //// ((DefaultMapEditor)ed).addLayer(featureSource);
47 // }
48 }
49 }
50 }
51
52 }
53
54 @Override
55 public void setFocus() {
56 viewer.getTree().setFocus();
57 }
58
59 public void refresh() {
60 viewer.refresh();
61 }
62
63 public void setDataStores(List<DataStore> dataStores) {
64 this.dataStores = dataStores;
65 }
66
67 private class DataStoreContentProvider extends AbstractTreeContentProvider {
68
69 public Object[] getElements(Object inputElement) {
70 List<DataStoreNode> dataStoreNodes = new ArrayList<DataStoreNode>();
71 // it is better to deal with OSGi reference using and iterator
72 Iterator<DataStore> it = dataStores.iterator();
73 while (it.hasNext())
74 dataStoreNodes.add(new DataStoreNode(it.next()));
75 return dataStoreNodes.toArray();
76 }
77
78 }
79
80 private class DataStoreLabelProvider extends LabelProvider {
81
82 @Override
83 public String getText(Object element) {
84 return super.getText(element);
85 }
86
87 }
88 }