[Commits] r2747 - sandbox/mapgears/geoext.ux/ux/WFSTFeatureEditing/lib/GeoExt.ux/widgets

commits at geoext.org commits at geoext.org
Wed Jul 13 20:33:50 CEST 2011


Author: adube
Date: 2011-07-13 20:33:50 +0200 (Wed, 13 Jul 2011)
New Revision: 2747

Modified:
   sandbox/mapgears/geoext.ux/ux/WFSTFeatureEditing/lib/GeoExt.ux/widgets/WFSTFeatureEditingManager.js
Log:
WFSTFeatureEditing - geometry type now automatically detected using GML2 property types, only first geometry property is used for the purpose of determining the handler to use for the DrawFeature control

Modified: sandbox/mapgears/geoext.ux/ux/WFSTFeatureEditing/lib/GeoExt.ux/widgets/WFSTFeatureEditingManager.js
===================================================================
--- sandbox/mapgears/geoext.ux/ux/WFSTFeatureEditing/lib/GeoExt.ux/widgets/WFSTFeatureEditingManager.js	2011-07-13 12:38:19 UTC (rev 2746)
+++ sandbox/mapgears/geoext.ux/ux/WFSTFeatureEditing/lib/GeoExt.ux/widgets/WFSTFeatureEditingManager.js	2011-07-13 18:33:50 UTC (rev 2747)
@@ -108,6 +108,43 @@
      */
     DEFAULT_ACTION_GROUP: "wfstFeatureEditing",
 
+    /** private: property[GEOM_PROPERTIS]
+     *  ``Object`` Hash OGC GML2 geometry property types used to detect which
+     *            element of the WFS DescribeFeatureType requests is a geometry.
+     *            Each entry has a hash of properties used to create the
+     *            :class:`OpenLayers.Control.DrawFeature` control :
+     *            - "handler": defines the handler to use for the draw control
+     *            - "multiGeometry": the according constructor if it's multi
+     *                               geometry.
+     *
+     *  Note : "GeometryPropertyType" set as "point" by default.
+     */
+    GEOM_PROPERTIES: {
+        "PointPropertyType": {
+            "handler": OpenLayers.Handler.Point
+        },
+        "LineStringPropertyType": {
+            "handler": OpenLayers.Handler.Path
+        },
+        "PolygonPropertyType": {
+            "handler": OpenLayers.Handler.Polygon
+        },
+        "MultiPointPropertyType": {
+            "handler": OpenLayers.Handler.Point,
+            "multiGeometry": OpenLayers.Geometry.MultiPoint
+        },
+        "MultiLineStringPropertyType": {
+            "handler": OpenLayers.Handler.Path,
+            "multiGeometry": OpenLayers.Geometry.MultiLineString
+        },
+        "MultiPolygonPropertyType": {
+            "handler": OpenLayers.Handler.Polygon,
+            "multiGeometry": OpenLayers.Geometry.MultiPolygon
+        },
+        "GeometryPropertyType": {
+            "handler": OpenLayers.Handler.Point
+        }
+    },
 
 /* i18n  */
 
@@ -198,11 +235,6 @@
      */
     layerOptions: null,
 
-    /** api: config[geomProperty]
-     * ``String`` The name of the geometry property.  Defaults to "the_geom".
-     */
-    geomProperty: "the_geom",
-
     /** api: config[actionGroup]
      * ``String`` "group" property value when creating new
      *            :class:`GeoExt.Action` objects. Defaults to
@@ -491,43 +523,22 @@
 
         var describe = format.read(response.responseXML);
         var fields = [];
+        var geomProperty;
 
         if (describe && describe.featureTypes && describe.featureTypes[0]) {
             Ext.each(describe.featureTypes[0].properties, function(property, index) {
                 fields.push({"name": property.name});
-                if (property.name == this.manager.geomProperty) {
-                    var geomType;
-                    switch (property.localType) {
-                      case "PointPropertyType":
-                        this.layer.wfstFeatureEditing.drawHandler =
-                            OpenLayers.Handler.Point;
-                        break;
-                      case "LineStringPropertyType":
-                        this.layer.wfstFeatureEditing.drawHandler =
-                            OpenLayers.Handler.Path;
-                        break;
-                      case "PolygonPropertyType":
-                        this.layer.wfstFeatureEditing.drawHandler =
-                            OpenLayers.Handler.Polygon;
-                        break;
-                      case "MultiPointPropertyType":
-                        this.layer.wfstFeatureEditing.drawHandler =
-                            OpenLayers.Handler.Point;
+                // the first geometry property detected is used to set the
+                // handler and multi geometry constructor (if geometry is multi)
+                // used for the DrawFeature control
+                geomProperty = this.manager.GEOM_PROPERTIES[property.localType];
+                if (geomProperty &&
+                    !this.layer.wfstFeatureEditing.drawHandler) {
+                    this.layer.wfstFeatureEditing.drawHandler =
+                        geomProperty.handler;
+                    if (geomProperty.multiGeometry) {
                         this.layer.wfstFeatureEditing.multiGeometry =
-                            OpenLayers.Geometry.MultiPoint;
-                        break;
-                      case "MultiLineStringPropertyType":
-                        this.layer.wfstFeatureEditing.drawHandler =
-                            OpenLayers.Handler.Path;
-                        this.layer.wfstFeatureEditing.multiGeometry =
-                            OpenLayers.Geometry.MultiLineString;
-                        break;
-                      case "MultiPolygonPropertyType":
-                        this.layer.wfstFeatureEditing.drawHandler =
-                            OpenLayers.Handler.Polygon;
-                        this.layer.wfstFeatureEditing.multiGeometry =
-                            OpenLayers.Geometry.MultiPolygon;
-                        break;
+                            geomProperty.multiGeometry;
                     }
                 }
             }, this);



More information about the Commits mailing list