1 package org
.argeo
.gis
.ui
.views
;
3 import org
.argeo
.eclipse
.ui
.TreeParent
;
4 import org
.eclipse
.jface
.viewers
.ITreeContentProvider
;
5 import org
.eclipse
.jface
.viewers
.LabelProvider
;
6 import org
.eclipse
.jface
.viewers
.TreeViewer
;
7 import org
.eclipse
.jface
.viewers
.Viewer
;
8 import org
.eclipse
.swt
.SWT
;
9 import org
.eclipse
.swt
.widgets
.Composite
;
10 import org
.eclipse
.ui
.IViewSite
;
11 import org
.eclipse
.ui
.part
.ViewPart
;
12 import org
.geotools
.map
.MapContext
;
13 import org
.geotools
.map
.MapLayer
;
14 import org
.geotools
.map
.event
.MapLayerListEvent
;
15 import org
.geotools
.map
.event
.MapLayerListListener
;
17 public class LayersView
extends ViewPart
implements MapLayerListListener
{
18 public final static String ID
= "org.argeo.gis.ui.layersView";
20 private TreeViewer viewer
;
22 private MapContext mapContext
;
25 public void createPartControl(Composite parent
) {
26 viewer
= new TreeViewer(parent
, SWT
.SINGLE
| SWT
.H_SCROLL
| SWT
.V_SCROLL
);
27 viewer
.setContentProvider(new MapContextContentProvider());
28 viewer
.setLabelProvider(new MapContextLabelProvider());
29 viewer
.setInput(getViewSite());
32 public void setMapContext(MapContext mapContext
) {
33 viewer
.setInput(mapContext
);
34 if (this.mapContext
!= null) {
35 this.mapContext
.removeMapLayerListListener(this);
37 this.mapContext
= mapContext
;
38 this.mapContext
.addMapLayerListListener(this);
42 * MAP LAYER LIST LISTENER
44 public void layerAdded(MapLayerListEvent event
) {
48 public void layerRemoved(MapLayerListEvent event
) {
52 public void layerChanged(MapLayerListEvent event
) {
56 public void layerMoved(MapLayerListEvent event
) {
64 public void setFocus() {
65 viewer
.getTree().setFocus();
68 public void refresh() {
72 private class MapContextContentProvider
implements ITreeContentProvider
{
74 public void dispose() {
77 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {
80 public Object
[] getElements(Object inputElement
) {
81 if (inputElement
instanceof MapContext
)
82 return new Object
[] { new MapContextNode(
83 (MapContext
) inputElement
) };
84 else if (inputElement
instanceof IViewSite
)
85 return new Object
[] {};
87 return getChildren(inputElement
);
90 public Object
[] getChildren(Object element
) {
91 if (element
instanceof MapContextNode
) {
92 MapContextNode mapContextNode
= (MapContextNode
) element
;
93 return mapContextNode
.getMapContext().getLayers();
94 } else if (element
instanceof MapLayer
) {
95 // MapLayer mapLayer = (MapLayer) element;
97 } else if (element
instanceof TreeParent
) {
98 return ((TreeParent
) element
).getChildren();
100 return new Object
[0];
103 public Object
getParent(Object element
) {
104 if (element
instanceof TreeParent
) {
105 return ((TreeParent
) element
).getParent();
110 public boolean hasChildren(Object element
) {
111 if (element
instanceof MapContextNode
) {
113 } else if (element
instanceof TreeParent
) {
114 return ((TreeParent
) element
).hasChildren();
115 } else if (element
instanceof MapLayer
) {
123 private class MapContextLabelProvider
extends LabelProvider
{
126 public String
getText(Object element
) {
127 if (element
instanceof MapLayer
) {
128 MapLayer mapLayer
= (MapLayer
) element
;
129 String title
= mapLayer
.getTitle();
130 if (title
== null || title
.trim().equals(""))
131 title
= mapLayer
.toString();
134 return super.getText(element
);
139 private class MapContextNode
extends TreeParent
{
140 private MapContext mapContext
;
142 public MapContextNode(MapContext mapContext
) {
143 super("Map Context");
144 this.mapContext
= mapContext
;
147 public MapContext
getMapContext() {