]> git.argeo.org Git - lgpl/argeo-commons.git/blob - LayersView.java
096f036579f3f4b5923bb87e03d4cc536cef16f0
[lgpl/argeo-commons.git] / LayersView.java
1 package org.argeo.gis.ui.views;
2
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;
16
17 public class LayersView extends ViewPart implements MapLayerListListener {
18 public final static String ID = "org.argeo.gis.ui.layersView";
19
20 private TreeViewer viewer;
21
22 private MapContext mapContext;
23
24 @Override
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());
30 }
31
32 public void setMapContext(MapContext mapContext) {
33 viewer.setInput(mapContext);
34 if (this.mapContext != null) {
35 this.mapContext.removeMapLayerListListener(this);
36 }
37 this.mapContext = mapContext;
38 this.mapContext.addMapLayerListListener(this);
39 }
40
41 /*
42 * MAP LAYER LIST LISTENER
43 */
44 public void layerAdded(MapLayerListEvent event) {
45 viewer.refresh();
46 }
47
48 public void layerRemoved(MapLayerListEvent event) {
49 viewer.refresh();
50 }
51
52 public void layerChanged(MapLayerListEvent event) {
53 viewer.refresh();
54 }
55
56 public void layerMoved(MapLayerListEvent event) {
57 viewer.refresh();
58 }
59
60 /*
61 * VIEW
62 */
63 @Override
64 public void setFocus() {
65 viewer.getTree().setFocus();
66 }
67
68 public void refresh() {
69 viewer.refresh();
70 }
71
72 private class MapContextContentProvider implements ITreeContentProvider {
73
74 public void dispose() {
75 }
76
77 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
78 }
79
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[] {};
86 else
87 return getChildren(inputElement);
88 }
89
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;
96
97 } else if (element instanceof TreeParent) {
98 return ((TreeParent) element).getChildren();
99 }
100 return new Object[0];
101 }
102
103 public Object getParent(Object element) {
104 if (element instanceof TreeParent) {
105 return ((TreeParent) element).getParent();
106 }
107 return null;
108 }
109
110 public boolean hasChildren(Object element) {
111 if (element instanceof MapContextNode) {
112 return true;
113 } else if (element instanceof TreeParent) {
114 return ((TreeParent) element).hasChildren();
115 } else if (element instanceof MapLayer) {
116 return false;
117 }
118 return false;
119 }
120
121 }
122
123 private class MapContextLabelProvider extends LabelProvider {
124
125 @Override
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();
132 return title;
133 }
134 return super.getText(element);
135 }
136
137 }
138
139 private class MapContextNode extends TreeParent {
140 private MapContext mapContext;
141
142 public MapContextNode(MapContext mapContext) {
143 super("Map Context");
144 this.mapContext = mapContext;
145 }
146
147 public MapContext getMapContext() {
148 return mapContext;
149 }
150
151 }
152 }