]> 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
Add Swing map viewer to build
[lgpl/argeo-commons.git] / gis / plugins / org.argeo.gis.ui / src / main / java / org / argeo / gis / ui / editors / MapFormPage.java
index c84816571c4a79c07eab21d91f49e1203ec243cc..e6b5984f7c23d4f366cbd2e0f974da688059596e 100644 (file)
@@ -6,10 +6,13 @@ 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.argeo.gis.ui.MapViewerListener;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.layout.FillLayout;
+import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.forms.AbstractFormPart;
 import org.eclipse.ui.forms.IManagedForm;
 import org.eclipse.ui.forms.editor.FormEditor;
 import org.eclipse.ui.forms.editor.FormPage;
@@ -43,21 +46,15 @@ public class MapFormPage extends FormPage {
                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 + "'");
+               mapViewer.getControl().setLayoutData(
+                               new GridData(SWT.FILL, SWT.FILL, true, true));
 
-       }
-
-       public void featureUnselected(String layerId, String featureId) {
-               if (log.isDebugEnabled())
-                       log.debug("Unselected feature '" + featureId + "' of layer '"
-                                       + layerId + "'");
+               // form part
+               MapFormPart mapFormPart = new MapFormPart();
+               getManagedForm().addPart(mapFormPart);
+               mapViewer.addMapViewerListener(mapFormPart);
 
+               tk.adapt(mapViewer.getControl());
        }
 
        public void setFocus() {
@@ -69,4 +66,23 @@ public class MapFormPage extends FormPage {
                return mapViewer;
        }
 
+       private static class MapFormPart extends AbstractFormPart implements
+                       MapViewerListener {
+
+               public void featureSelected(String layerId, String featureId) {
+                       if (log.isDebugEnabled())
+                               log.debug("Selected feature '" + featureId + "' of layer '"
+                                               + layerId + "'");
+                       markDirty();
+               }
+
+               public void featureUnselected(String layerId, String featureId) {
+                       if (log.isDebugEnabled())
+                               log.debug("Unselected feature '" + featureId + "' of layer '"
+                                               + layerId + "'");
+
+                       markDirty();
+               }
+
+       }
 }