]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - gis/plugins/org.argeo.gis.ui/src/main/java/org/argeo/gis/ui/editors/MapFormPage.java
Improve GIS
[lgpl/argeo-commons.git] / gis / plugins / org.argeo.gis.ui / src / main / java / org / argeo / gis / ui / editors / MapFormPage.java
diff --git a/gis/plugins/org.argeo.gis.ui/src/main/java/org/argeo/gis/ui/editors/MapFormPage.java b/gis/plugins/org.argeo.gis.ui/src/main/java/org/argeo/gis/ui/editors/MapFormPage.java
new file mode 100644 (file)
index 0000000..c848165
--- /dev/null
@@ -0,0 +1,72 @@
+package org.argeo.gis.ui.editors;
+
+import javax.jcr.Node;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.argeo.gis.ui.MapControlCreator;
+import org.argeo.gis.ui.MapViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.forms.IManagedForm;
+import org.eclipse.ui.forms.editor.FormEditor;
+import org.eclipse.ui.forms.editor.FormPage;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+
+/** A form editor page to edit geographical data. */
+public class MapFormPage extends FormPage {
+       private final static Log log = LogFactory.getLog(MapFormPage.class);
+
+       private Node context;
+       private MapViewer mapViewer;
+       private MapControlCreator mapControlCreator;
+
+       public MapFormPage(FormEditor editor, String id, String title,
+                       Node context, MapControlCreator mapControlCreator) {
+               super(editor, id, title);
+               this.context = context;
+               this.mapControlCreator = mapControlCreator;
+       }
+
+       @Override
+       protected void createFormContent(IManagedForm managedForm) {
+               Composite parent = managedForm.getForm().getBody();
+               parent.setLayout(new FillLayout());
+
+               FormToolkit tk = managedForm.getToolkit();
+
+               Composite mapArea = new Composite(parent, SWT.NONE);
+               GridLayout layout = new GridLayout();
+               layout.marginHeight = 0;
+               layout.marginWidth = 0;
+               mapArea.setLayout(layout);
+               mapViewer = mapControlCreator.createMapControl(context, mapArea);
+               tk.adapt(mapViewer.getControl());
+       }
+
+       public void featureSelected(String layerId, String featureId) {
+               if (log.isDebugEnabled())
+                       log.debug("Selected feature '" + featureId + "' of layer '"
+                                       + layerId + "'");
+
+       }
+
+       public void featureUnselected(String layerId, String featureId) {
+               if (log.isDebugEnabled())
+                       log.debug("Unselected feature '" + featureId + "' of layer '"
+                                       + layerId + "'");
+
+       }
+
+       public void setFocus() {
+               super.setFocus();
+               mapViewer.getControl().setFocus();
+       }
+
+       public MapViewer getMapViewer() {
+               return mapViewer;
+       }
+
+}