]> git.argeo.org Git - lgpl/argeo-commons.git/blob - DefaultMapEditor.java
e9311b9dbce7e68afced827da0993e432e246bc2
[lgpl/argeo-commons.git] / DefaultMapEditor.java
1 package org.argeo.gis.ui.editors;
2
3 import org.argeo.gis.ui.MapContextProvider;
4 import org.argeo.gis.ui.MapControlCreator;
5 import org.argeo.gis.ui.views.LayersView;
6 import org.eclipse.core.runtime.IProgressMonitor;
7 import org.eclipse.swt.SWT;
8 import org.eclipse.swt.layout.GridLayout;
9 import org.eclipse.swt.widgets.Composite;
10 import org.eclipse.ui.IEditorInput;
11 import org.eclipse.ui.IEditorSite;
12 import org.eclipse.ui.PartInitException;
13 import org.eclipse.ui.part.EditorPart;
14 import org.geotools.data.FeatureSource;
15 import org.geotools.map.MapContext;
16 import org.opengis.feature.simple.SimpleFeature;
17 import org.opengis.feature.simple.SimpleFeatureType;
18
19 /** A generic map editor */
20 public class DefaultMapEditor extends EditorPart implements MapContextProvider {
21 public final static String ID = "org.argeo.gis.ui.defaultMapEditor";
22
23 private MapContext mapContext;
24 private Composite map;
25 private MapControlCreator mapControlCreator;
26
27 @Override
28 public void init(IEditorSite site, IEditorInput input)
29 throws PartInitException {
30 if (input instanceof MapContextProvider) {
31 mapContext = ((MapContextProvider) input).getMapContext();
32 setSite(site);
33 setInput(input);
34 setPartName(input.getName());
35 } else {
36 throw new PartInitException("Support only "
37 + MapContextProvider.class + " inputs");
38 }
39 }
40
41 @Override
42 public void createPartControl(Composite parent) {
43 Composite mapArea = new Composite(parent, SWT.NONE);
44 GridLayout layout = new GridLayout();
45 layout.marginHeight = 0;
46 layout.marginWidth = 0;
47 mapArea.setLayout(layout);
48 map = mapControlCreator.createMapControl(mapArea, this);
49 }
50
51 public void addLayer(
52 FeatureSource<SimpleFeatureType, SimpleFeature> featureSource) {
53 // TODO: deal with style
54 mapContext.addLayer(featureSource, null);
55 }
56
57 @Override
58 public void doSave(IProgressMonitor monitor) {
59 }
60
61 @Override
62 public void doSaveAs() {
63 }
64
65 @Override
66 public boolean isDirty() {
67 return false;
68 }
69
70 @Override
71 public boolean isSaveAsAllowed() {
72 return false;
73 }
74
75 @Override
76 public void setFocus() {
77 LayersView layersView = (LayersView) getEditorSite()
78 .getWorkbenchWindow().getActivePage().findView(LayersView.ID);
79 layersView.setMapContext(getMapContext());
80 map.setFocus();
81 }
82
83 public MapContext getMapContext() {
84 return mapContext;
85 }
86
87 public void setMapControlCreator(MapControlCreator mapControlCreator) {
88 this.mapControlCreator = mapControlCreator;
89 }
90
91 }