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 private TreeViewer viewer
;
20 private MapContext mapContext
;
23 public void createPartControl(Composite parent
) {
24 viewer
= new TreeViewer(parent
, SWT
.SINGLE
| SWT
.H_SCROLL
| SWT
.V_SCROLL
);
25 viewer
.setContentProvider(new MapContextContentProvider());
26 viewer
.setLabelProvider(new MapContextLabelProvider());
27 viewer
.setInput(getViewSite());
30 public void setMapContext(MapContext mapContext
) {
31 viewer
.setInput(mapContext
);
32 if (this.mapContext
!= null) {
33 this.mapContext
.removeMapLayerListListener(this);
35 this.mapContext
= mapContext
;
36 this.mapContext
.addMapLayerListListener(this);
40 * MAP LAYER LIST LISTENER
42 public void layerAdded(MapLayerListEvent event
) {
46 public void layerRemoved(MapLayerListEvent event
) {
50 public void layerChanged(MapLayerListEvent event
) {
54 public void layerMoved(MapLayerListEvent event
) {
62 public void setFocus() {
63 viewer
.getTree().setFocus();
66 public void refresh() {
70 private class MapContextContentProvider
implements ITreeContentProvider
{
72 public void dispose() {
75 public void inputChanged(Viewer viewer
, Object oldInput
, Object newInput
) {
78 public Object
[] getElements(Object inputElement
) {
79 if (inputElement
instanceof MapContext
)
80 return new Object
[] { new MapContextNode(
81 (MapContext
) inputElement
) };
82 else if (inputElement
instanceof IViewSite
)
83 return new Object
[] {};
85 return getChildren(inputElement
);
88 public Object
[] getChildren(Object element
) {
89 if (element
instanceof MapContextNode
) {
90 MapContextNode mapContextNode
= (MapContextNode
) element
;
91 return mapContextNode
.getMapContext().getLayers();
92 } else if (element
instanceof MapLayer
) {
93 //MapLayer mapLayer = (MapLayer) element;
95 } else if (element
instanceof TreeParent
) {
96 return ((TreeParent
) element
).getChildren();
101 public Object
getParent(Object element
) {
102 if (element
instanceof TreeParent
) {
103 return ((TreeParent
) element
).getParent();
108 public boolean hasChildren(Object element
) {
109 if (element
instanceof MapContextNode
) {
111 } else if (element
instanceof TreeParent
) {
112 return ((TreeParent
) element
).hasChildren();
113 } else if (element
instanceof MapLayer
) {
121 private class MapContextLabelProvider
extends LabelProvider
{
124 public String
getText(Object element
) {
125 if (element
instanceof MapLayer
) {
126 MapLayer mapLayer
= (MapLayer
) element
;
127 String title
= mapLayer
.getTitle();
128 if (title
== null || title
.trim().equals(""))
129 title
= mapLayer
.toString();
132 return super.getText(element
);
137 private class MapContextNode
extends TreeParent
{
138 private MapContext mapContext
;
140 public MapContextNode(MapContext mapContext
) {
141 super("Map Context");
142 this.mapContext
= mapContext
;
145 public MapContext
getMapContext() {