[Commits] r2706 - in sandbox/mapgears/geoext.ux/ux/WFSTFeatureEditing: lib/GeoExt.ux/widgets tests/lib/GeoExt.ux/widgets

commits at geoext.org commits at geoext.org
Wed May 18 17:33:03 CEST 2011


Author: adube
Date: 2011-05-18 17:33:03 +0200 (Wed, 18 May 2011)
New Revision: 2706

Modified:
   sandbox/mapgears/geoext.ux/ux/WFSTFeatureEditing/lib/GeoExt.ux/widgets/WFSTFeatureEditingManager.js
   sandbox/mapgears/geoext.ux/ux/WFSTFeatureEditing/tests/lib/GeoExt.ux/widgets/WFSTFeatureEditingManager.html
Log:
WFSTFeatureEditing - createEditingTools tests, small fixes in manager

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-05-18 14:55:52 UTC (rev 2705)
+++ sandbox/mapgears/geoext.ux/ux/WFSTFeatureEditing/lib/GeoExt.ux/widgets/WFSTFeatureEditingManager.js	2011-05-18 15:33:03 UTC (rev 2706)
@@ -608,7 +608,7 @@
             text: layer.name,
             hidden: true,
             control: drawControl,
-            map: map,
+            map: this.map,
             disabled: !layer.inRange,
             // button options
             toggleGroup: this.actionGroup || this.DEFAULT_ACTION_GROUP,
@@ -651,9 +651,9 @@
             });
         }
 
-        // ================================================
-        // SelectFeature (hovering and main point of entry)
-        // ================================================
+        // ===============================
+        // SelectFeature (click selection)
+        // ===============================
         var selectControl = new OpenLayers.Control.SelectFeature(layer, {
             clickout: false
         });
@@ -678,9 +678,9 @@
         });
         layer.wfstFeatureEditing.selectControl = selectControl;
 
-        // =========================
-        // SelectFeature (selecting)
-        // =========================
+        // ======================================================
+        // SelectFeature (highlight and "click select" activator)
+        // ======================================================
         var highlightControl = new OpenLayers.Control.SelectFeature(layer, {
             hover: true,
             highlightOnly: true,
@@ -713,14 +713,12 @@
 
         this.map.addControl(selectControl);
         this.useFilter && this.map.addControl(highlightControl);
-        layer.wfstFeatureEditing._mainEditControl = (this.useFilter) 
-            ? userFilterControl : highlightControl;
 
         var editAction = new GeoExt.Action({
             text: layer.name,
             hidden: true,
             control: (this.useFilter) ? userFilterControl : highlightControl,
-            map: map,
+            map: this.map,
             disabled: !layer.inRange,
             // button options
             toggleGroup: this.actionGroup || this.DEFAULT_ACTION_GROUP,
@@ -764,7 +762,7 @@
                 this.manager.featureEditorGridContainer.add(editorGrid);
                 this.manager.featureEditorGridContainer.doLayout();
             },
-            scope: {layer: layer, manager: manager}
+            scope: {layer: layer, manager: this}
         });
 
         // ===========

Modified: sandbox/mapgears/geoext.ux/ux/WFSTFeatureEditing/tests/lib/GeoExt.ux/widgets/WFSTFeatureEditingManager.html
===================================================================
--- sandbox/mapgears/geoext.ux/ux/WFSTFeatureEditing/tests/lib/GeoExt.ux/widgets/WFSTFeatureEditingManager.html	2011-05-18 14:55:52 UTC (rev 2705)
+++ sandbox/mapgears/geoext.ux/ux/WFSTFeatureEditing/tests/lib/GeoExt.ux/widgets/WFSTFeatureEditingManager.html	2011-05-18 15:33:03 UTC (rev 2706)
@@ -17,6 +17,8 @@
             type="text/javascript" ></script>
     <script src="../../../../lib/GeoExt.ux/WFSTFeatureEditing.js"
             type="text/javascript" ></script>
+    <script src="http://dev.geoext.org/ux/geoext.ux/ux/FeatureEditing/lib/GeoExt.ux/FeatureEditorGrid.js"
+            type="text/javascript"></script>
     <script type="text/javascript">
     var DummyMainPanelContainer = Ext.extend(Ext.Panel, {});
 
@@ -43,6 +45,50 @@
         return new Ext.Toolbar();
     };
 
+    function getNewWFSVectorLayer_Road(manager) {
+        var layer, saveStragegy;
+
+        saveStrategy = new OpenLayers.Strategy.Save();
+        layer = new OpenLayers.Layer.Vector("Roads", {
+            protocol: new OpenLayers.Protocol.WFS({
+                featureType: "road",
+                featureNS: "http://localhost",
+                url: "http://dev8.mapgears.com/cgi-bin/tinyows-trunk?",
+                version: "1.0.0"
+            }),
+            strategies: [new OpenLayers.Strategy.Fixed(), saveStrategy],
+            displayInLayerSwitcher: false,
+            visibility: false
+        });
+        layer.wfstFeatureEditing = {
+            "fields": [{"name": "fnode_"}, {"name": "tnode_"},
+                {"name": "lpoly_"}, {"name": "rpoly_"}, {"name": "length"},
+                {"name": "road_"}, {"name": "road_id"}, {"name": "f_code"},
+                {"name": "name_e"}, {"name": "name_f"}, {"name": "the_geom"}],
+            "manager": manager,
+            "saveStrategy": saveStrategy,
+            "drawHandler": OpenLayers.Handler.Path
+        };
+
+        return layer;
+    };
+
+    function getNewVectorFeature_Road() {
+        return new OpenLayers.Feature.Vector(
+            new OpenLayers.Geometry.Point(0,0), {
+                "lpoly_": "1",
+                "rpoly_": "1",
+                "length": "1",
+                "road_": "1",
+                "road_id": "1",
+                "f_code": "1",
+                "name_e": "1",
+                "name_f": "1",
+                "the_geom": "1"
+            }
+        );
+    };
+
     function test_WFSTFeatureEditingManager_constructor(t) {
         t.plan(21);
 
@@ -307,6 +353,122 @@
             t.ok(true, "waited for 2s"); 
         });
     }
+
+    function test_WFSTFeatureEditingManager_createEditingTools(t) {
+        t.plan(16);
+
+        var DummyManager = Ext.extend(GeoExt.ux.WFSTFeatureEditingManager, {});
+        var manager, log, layer, wfstFE;
+
+        DummyManager.prototype.createToolsFromURL = function() {};
+
+        manager = new DummyManager({
+            "map": getNewMap(),
+            "toolbar": getNewToolbar(),
+            "mainPanelContainer": getNewMainPanelContainer(),
+            "url": "../../../../examples/data/wfscap_gmap.xml"
+        });
+
+        layer = getNewWFSVectorLayer_Road(manager);
+        manager.map.addLayer(layer);
+        manager.layers = [layer];
+        wfstFE = layer.wfstFeatureEditing;
+
+        manager.createEditingTools();
+
+        // (4) testing layer 'draw' control and action
+        log = (wfstFE.drawAction instanceof GeoExt.Action);
+        t.ok(log, "Layer 'draw' action correctly set");
+        log = (wfstFE.drawControl instanceof OpenLayers.Control.DrawFeature);
+        t.ok(log, "Layer 'draw' control correctly set to draw feature");
+        log = (wfstFE.drawControl.handler instanceof OpenLayers.Handler.Path);
+        t.ok(log, "Layer 'draw' control has handler correctly set path");
+        log = (wfstFE.drawControl.map instanceof OpenLayers.Map);
+        t.ok(log, "Layer 'draw' control was added to the map");
+
+        // (2) testing layer 'userFilter' control, because manager has
+        //     'useFilter' set to true by default
+        log = (wfstFE.userFilterControl instanceof OpenLayers.Control.UserFilter);
+        t.ok(log, "Layer 'userFilter' control correctly set");
+        log = (wfstFE.userFilterControl.map instanceof OpenLayers.Map);
+        t.ok(log, "Layer 'userFilter' control was added to the map");
+
+        // (2) testing layer select control for select purpose
+        log = (wfstFE.selectControl instanceof OpenLayers.Control.SelectFeature);
+        t.ok(log, "Layer 'select' control correctly set");
+        log = (wfstFE.selectControl.map instanceof OpenLayers.Map);
+        t.ok(log, "Layer 'select' control was added to the map");
+
+        // (4) testing layer select control for highlight purpose
+        log = (wfstFE.highlightControl instanceof OpenLayers.Control.SelectFeature);
+        t.ok(log, "Layer 'highlight' control correctly set");
+        t.eq(wfstFE.highlightControl.highlightOnly, true, "Highlight control has 'highlightOnly' correctly set to true");
+        t.eq(wfstFE.highlightControl.hover, true, "Highlight control has 'hover' correctly set to true");
+        log = (wfstFE.highlightControl.map instanceof OpenLayers.Map);
+        t.ok(log, "Layer 'highlight' control was added to the map");
+
+        // (2) testing 'edit' action and which control is uses (should be
+        //     userFilter)
+        log = (wfstFE.editAction instanceof GeoExt.Action);
+        t.ok(log, "Layer 'edit' action correctly set");
+        log = (wfstFE.editAction.control instanceof OpenLayers.Control.UserFilter);
+        t.ok(log, "Edit action control correctly set to 'UserFilter' since 'useFilter' property is true by default");
+
+        // (1) testing 'featureGrid'
+        log = (wfstFE.featureGrid instanceof gxp.grid.FeatureGrid);
+        t.ok(log, "Layer gxp.grid.FeatureGrid correctly set");
+
+        // (1) testing that no layer remains in the manager layers array after
+        //     all editing tools were created
+        t.eq(manager.layers.length, 0, "After all tools were created, the layers array is emptied");
+    }
+
+    function test_WFSTFeatureEditingManager_createEditingTools_useFilterFalse(t) {
+        t.plan(8);
+
+        var DummyManager = Ext.extend(GeoExt.ux.WFSTFeatureEditingManager, {});
+        var manager, log, layer, wfstFE, feature;
+
+        DummyManager.prototype.createToolsFromURL = function() {};
+
+        manager = new DummyManager({
+            "map": getNewMap(),
+            "toolbar": getNewToolbar(),
+            "mainPanelContainer": getNewMainPanelContainer(),
+            "url": "../../../../examples/data/wfscap_gmap.xml",
+            "useFilter": false
+        });
+
+        layer = getNewWFSVectorLayer_Road(manager);
+        manager.map.addLayer(layer);
+        manager.layers = [layer];
+        wfstFE = layer.wfstFeatureEditing;
+
+        manager.createEditingTools();
+
+        // (1) testing 'edit' action control, should use 'highlight' control
+        log = (wfstFE.editAction.control instanceof OpenLayers.Control.SelectFeature && wfstFE.editAction.control.highlightOnly === true);
+        t.ok(log, "Edit action control correctly set to 'SelectFeature' since 'useFilter' property is set to false");
+
+        // (3) testing select control activations (hightlight and click),
+        //     should also set layer visibility to true
+        wfstFE.highlightControl.activate();
+        t.eq(wfstFE.highlightControl.active, true, "Select control for highlight purpose activated");
+        t.eq(wfstFE.selectControl.active, true, "Select control for select on click purpose activated");
+        t.eq(layer.visibility, true, "Layer visibility was set to true by select control");
+
+        // (4) testing feature selection, which should create a
+        //     featureEditorGrid object
+        feature = getNewVectorFeature_Road();
+        layer.addFeatures([feature]);
+        t.eq(layer.features.length, 1, "Feature was added");
+        wfstFE.selectControl.select(feature);
+        t.eq(layer.selectedFeatures.length, 1, "Feature was selected");
+        log = (wfstFE.editorGrid instanceof GeoExt.ux.FeatureEditorGrid);
+        t.ok(log, "FeatureEditorGrid ux correctly set.");
+        log = (feature === wfstFE.editorGrid.getStore().feature);
+        t.ok(log, "FeatureEditorGrid ux store has the right feature set");
+    }
     </script>
   <body>
     <div id="map" style="width: 200px; height: 200px;"></div>



More information about the Commits mailing list