1 package org
.argeo
.gis
.ui
.views
;
3 import java
.util
.ArrayList
;
4 import java
.util
.Iterator
;
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
.argeo
.gis
.ui
.editors
.DefaultMapEditor
;
11 import org
.eclipse
.jface
.viewers
.DoubleClickEvent
;
12 import org
.eclipse
.jface
.viewers
.IDoubleClickListener
;
13 import org
.eclipse
.jface
.viewers
.IStructuredSelection
;
14 import org
.eclipse
.jface
.viewers
.LabelProvider
;
15 import org
.eclipse
.jface
.viewers
.TreeViewer
;
16 import org
.eclipse
.swt
.SWT
;
17 import org
.eclipse
.swt
.widgets
.Composite
;
18 import org
.eclipse
.ui
.IEditorPart
;
19 import org
.eclipse
.ui
.part
.ViewPart
;
20 import org
.geotools
.data
.DataStore
;
21 import org
.geotools
.data
.FeatureSource
;
22 import org
.opengis
.feature
.simple
.SimpleFeature
;
23 import org
.opengis
.feature
.simple
.SimpleFeatureType
;
25 public class DataStoresView
extends ViewPart
implements IDoubleClickListener
{
26 public final static String ID
= "org.argeo.gis.ui.dataStoresView";
28 private TreeViewer viewer
;
30 private List
<DataStore
> dataStores
;
33 public void createPartControl(Composite parent
) {
34 viewer
= new TreeViewer(parent
, SWT
.MULTI
| SWT
.H_SCROLL
| SWT
.V_SCROLL
);
35 viewer
.setContentProvider(new DataStoreContentProvider());
36 viewer
.setLabelProvider(new DataStoreLabelProvider());
37 viewer
.setInput(getViewSite());
38 viewer
.addDoubleClickListener(this);
41 public void doubleClick(DoubleClickEvent event
) {
42 if (!event
.getSelection().isEmpty()) {
43 Iterator
<?
> it
= ((IStructuredSelection
) event
.getSelection())
45 while (it
.hasNext()) {
46 Object obj
= it
.next();
47 if (obj
instanceof FeatureNode
) {
48 FeatureNode featureNode
= (FeatureNode
) obj
;
49 FeatureSource
<SimpleFeatureType
, SimpleFeature
> featureSource
= featureNode
51 IEditorPart ed
= getSite().getWorkbenchWindow().getActivePage().getActiveEditor();
52 if(ed
instanceof DefaultMapEditor
){
53 // ((DefaultMapEditor)ed).addLayer(featureSource);
62 public void setFocus() {
63 viewer
.getTree().setFocus();
66 public void refresh() {
70 public void setDataStores(List
<DataStore
> dataStores
) {
71 this.dataStores
= dataStores
;
74 private class DataStoreContentProvider
extends AbstractTreeContentProvider
{
76 public Object
[] getElements(Object inputElement
) {
77 List
<DataStoreNode
> dataStoreNodes
= new ArrayList
<DataStoreNode
>();
78 // it is better to deal with OSGi reference using and iterator
79 Iterator
<DataStore
> it
= dataStores
.iterator();
81 dataStoreNodes
.add(new DataStoreNode(it
.next()));
82 return dataStoreNodes
.toArray();
87 private class DataStoreLabelProvider
extends LabelProvider
{
90 public String
getText(Object element
) {
91 return super.getText(element
);