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