[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