[OpenLayers-Commits] r11983 - in sandbox/bartvde/wps/openlayers: . build examples lib/OpenLayers lib/OpenLayers/Control lib/OpenLayers/Format/CSWGetRecords lib/OpenLayers/Format/Filter lib/OpenLayers/Format/WFSCapabilities lib/OpenLayers/Format/WMSCapabilities lib/OpenLayers/Handler lib/OpenLayers/Lang lib/OpenLayers/Renderer tests tests/Control tests/Format/CSWGetRecords tests/Format/Filter tests/Format/OWSContext tests/Format/WMSCapabilities tests/Handler tests/Layer tests/Renderer

commits-20090109 at openlayers.org commits-20090109 at openlayers.org
Fri May 20 06:58:56 EDT 2011


Author: bartvde
Date: 2011-05-20 03:58:55 -0700 (Fri, 20 May 2011)
New Revision: 11983

Added:
   sandbox/bartvde/wps/openlayers/lib/OpenLayers/Lang/lt.js
   sandbox/bartvde/wps/openlayers/tests/Control/EditingToolbar.html
Modified:
   sandbox/bartvde/wps/openlayers/
   sandbox/bartvde/wps/openlayers/build/license.txt
   sandbox/bartvde/wps/openlayers/examples/navtoolbar-alwaysZoom.html
   sandbox/bartvde/wps/openlayers/examples/wfs-protocol-transactions.html
   sandbox/bartvde/wps/openlayers/examples/wfs-protocol-transactions.js
   sandbox/bartvde/wps/openlayers/examples/wfs-snap-split.html
   sandbox/bartvde/wps/openlayers/lib/OpenLayers/Control/EditingToolbar.js
   sandbox/bartvde/wps/openlayers/lib/OpenLayers/Control/NavToolbar.js
   sandbox/bartvde/wps/openlayers/lib/OpenLayers/Control/Navigation.js
   sandbox/bartvde/wps/openlayers/lib/OpenLayers/Control/Panel.js
   sandbox/bartvde/wps/openlayers/lib/OpenLayers/Control/TransformFeature.js
   sandbox/bartvde/wps/openlayers/lib/OpenLayers/Events.js
   sandbox/bartvde/wps/openlayers/lib/OpenLayers/Format/CSWGetRecords/v2_0_2.js
   sandbox/bartvde/wps/openlayers/lib/OpenLayers/Format/Filter/v1_0_0.js
   sandbox/bartvde/wps/openlayers/lib/OpenLayers/Format/Filter/v1_1_0.js
   sandbox/bartvde/wps/openlayers/lib/OpenLayers/Format/WFSCapabilities/v1_0_0.js
   sandbox/bartvde/wps/openlayers/lib/OpenLayers/Format/WMSCapabilities/v1.js
   sandbox/bartvde/wps/openlayers/lib/OpenLayers/Handler/Box.js
   sandbox/bartvde/wps/openlayers/lib/OpenLayers/Handler/Feature.js
   sandbox/bartvde/wps/openlayers/lib/OpenLayers/Handler/Path.js
   sandbox/bartvde/wps/openlayers/lib/OpenLayers/Handler/Point.js
   sandbox/bartvde/wps/openlayers/lib/OpenLayers/Renderer/Canvas.js
   sandbox/bartvde/wps/openlayers/lib/OpenLayers/Util.js
   sandbox/bartvde/wps/openlayers/license.txt
   sandbox/bartvde/wps/openlayers/tests/Control/NavToolbar.html
   sandbox/bartvde/wps/openlayers/tests/Control/Navigation.html
   sandbox/bartvde/wps/openlayers/tests/Control/Panel.html
   sandbox/bartvde/wps/openlayers/tests/Control/TransformFeature.html
   sandbox/bartvde/wps/openlayers/tests/Format/CSWGetRecords/v2_0_2.html
   sandbox/bartvde/wps/openlayers/tests/Format/CSWGetRecords/v2_0_2.js
   sandbox/bartvde/wps/openlayers/tests/Format/Filter/v1_1_0.html
   sandbox/bartvde/wps/openlayers/tests/Format/OWSContext/v0_3_1.html
   sandbox/bartvde/wps/openlayers/tests/Format/WMSCapabilities/v1_1_1.html
   sandbox/bartvde/wps/openlayers/tests/Handler/Box.html
   sandbox/bartvde/wps/openlayers/tests/Handler/Feature.html
   sandbox/bartvde/wps/openlayers/tests/Handler/Path.html
   sandbox/bartvde/wps/openlayers/tests/Handler/Polygon.html
   sandbox/bartvde/wps/openlayers/tests/Layer/Vector.html
   sandbox/bartvde/wps/openlayers/tests/Layer/WrapDateLine.html
   sandbox/bartvde/wps/openlayers/tests/Renderer/Canvas.html
   sandbox/bartvde/wps/openlayers/tests/Util.html
   sandbox/bartvde/wps/openlayers/tests/list-tests.html
Log:
merge WPS sandbox with trunk


Property changes on: sandbox/bartvde/wps/openlayers
___________________________________________________________________
Modified: svn:mergeinfo
   - /sandbox/roberthl/openlayers:9745-9748
   + /sandbox/roberthl/openlayers:9745-9748
/trunk/openlayers:11919-11982

Modified: sandbox/bartvde/wps/openlayers/build/license.txt
===================================================================
--- sandbox/bartvde/wps/openlayers/build/license.txt	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/build/license.txt	2011-05-20 10:58:55 UTC (rev 11983)
@@ -2,7 +2,7 @@
 
   OpenLayers.js -- OpenLayers Map Viewer Library
 
-  Copyright 2005-2011 OpenLayers Contributors, released under the Clear BSD
+  Copyright 2005-2011 OpenLayers Contributors, released under the FreeBSD
   license. Please see http://svn.openlayers.org/trunk/openlayers/license.txt
   for the full text of the license.
 

Modified: sandbox/bartvde/wps/openlayers/examples/navtoolbar-alwaysZoom.html
===================================================================
--- sandbox/bartvde/wps/openlayers/examples/navtoolbar-alwaysZoom.html	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/examples/navtoolbar-alwaysZoom.html	2011-05-20 10:58:55 UTC (rev 11983)
@@ -47,7 +47,7 @@
 				     */
 				    draw: function() {
 				        var div = OpenLayers.Control.Panel.prototype.draw.apply(this, arguments);
-				        this.activateControl(this.controls[0]);
+                        this.defaultControl = this.controls[0];
 				        return div;
 				    }
 				});

Modified: sandbox/bartvde/wps/openlayers/examples/wfs-protocol-transactions.html
===================================================================
--- sandbox/bartvde/wps/openlayers/examples/wfs-protocol-transactions.html	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/examples/wfs-protocol-transactions.html	2011-05-20 10:58:55 UTC (rev 11983)
@@ -85,10 +85,13 @@
             <p>
                 Use the tools to create, modify, and delete (in order from left
                 to right) features. Use the save tool (picture of a disk) to
-                save your changes. Use the navigation tool (hand) to stop
-                editing and use the mouse for map navigation.
+                save your changes.
             </p>
             <p>
+                To deactivate "drawing" or "modifying" depress the
+                corresponding button.
+            </p>
+            <p>
                 See the <a href="wfs-protocol-transactions.js" target="_blank">
                 wfs-protocol-transactions.js source</a> to see how this is done.
             </p>        

Modified: sandbox/bartvde/wps/openlayers/examples/wfs-protocol-transactions.js
===================================================================
--- sandbox/bartvde/wps/openlayers/examples/wfs-protocol-transactions.js	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/examples/wfs-protocol-transactions.js	2011-05-20 10:58:55 UTC (rev 11983)
@@ -43,7 +43,8 @@
         maxExtent: new OpenLayers.Bounds(-20037508, -20037508, 20037508, 20037508),
         restrictedExtent: extent,
         controls: [
-            new OpenLayers.Control.PanZoom()
+            new OpenLayers.Control.PanZoom(),
+            new OpenLayers.Control.Navigation()
         ]
     });
     var gphy = new OpenLayers.Layer.Google(
@@ -69,12 +70,9 @@
    
     map.addLayers([gphy, wfs]);
 
-    var panel = new OpenLayers.Control.Panel(
-        {'displayClass': 'customEditingToolbar'}
-    );
-    
-    var navigate = new OpenLayers.Control.Navigation({
-        title: "Pan Map"
+    var panel = new OpenLayers.Control.Panel({
+        displayClass: 'customEditingToolbar',
+        allowDepress: true
     });
     
     var draw = new OpenLayers.Control.DrawFeature(
@@ -104,8 +102,7 @@
         displayClass: "olControlSaveFeatures"
     });
 
-    panel.addControls([navigate, save, del, edit, draw]);
-    panel.defaultControl = navigate;
+    panel.addControls([save, del, edit, draw]);
     map.addControl(panel);
     map.zoomToExtent(extent, true);
 }

Modified: sandbox/bartvde/wps/openlayers/examples/wfs-snap-split.html
===================================================================
--- sandbox/bartvde/wps/openlayers/examples/wfs-snap-split.html	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/examples/wfs-snap-split.html	2011-05-20 10:58:55 UTC (rev 11983)
@@ -107,7 +107,8 @@
                 projection: new OpenLayers.Projection("EPSG:900913"),
                 units: "m",
                 controls: [
-                    new OpenLayers.Control.PanZoom()
+                    new OpenLayers.Control.PanZoom(),
+                    new OpenLayers.Control.Navigation()
                 ]
             });
 
@@ -203,9 +204,10 @@
             split.activate();
 
             // add some editing tools to a panel
-            var panel = new OpenLayers.Control.Panel(
-                {displayClass: 'customEditingToolbar'}
-            );
+            var panel = new OpenLayers.Control.Panel({
+                displayClass: 'customEditingToolbar',
+                allowDepress: true
+            });
             var draw = new OpenLayers.Control.DrawFeature(
                 wfs, OpenLayers.Handler.Path,
                 {
@@ -233,11 +235,9 @@
 
 
             panel.addControls([
-                new OpenLayers.Control.Navigation(),
                 save, del, modify, draw
             ]);
             
-            panel.defaultControl = panel.controls[0];
             map.addControl(panel);
             map.setCenter(new OpenLayers.LonLat(-11561460.5, 5541773), 15);
         }
@@ -280,8 +280,9 @@
         updating, or deleting of existing features.</p>
         <p>Use the tools to create, modify, and delete (in order from left
         to right) features.  Use the save tool (picture of a disk) to
-        save your changes.  Use the navigation tool (hand) to stop editing
-        and use the mouse for map navigation.</p>
+        save your changes.</p>
+        <p>To deactivate "drawing" or "modifying" depress the corresponding
+        button.</p>
     </div>
 
 </body>

Modified: sandbox/bartvde/wps/openlayers/lib/OpenLayers/Control/EditingToolbar.js
===================================================================
--- sandbox/bartvde/wps/openlayers/lib/OpenLayers/Control/EditingToolbar.js	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/lib/OpenLayers/Control/EditingToolbar.js	2011-05-20 10:58:55 UTC (rev 11983)
@@ -55,7 +55,9 @@
      */
     draw: function() {
         var div = OpenLayers.Control.Panel.prototype.draw.apply(this, arguments);
-        this.activateControl(this.controls[0]);
+        if (this.defaultControl === null) {
+            this.defaultControl = this.controls[0];
+        }
         return div;
     },
 

Modified: sandbox/bartvde/wps/openlayers/lib/OpenLayers/Control/NavToolbar.js
===================================================================
--- sandbox/bartvde/wps/openlayers/lib/OpenLayers/Control/NavToolbar.js	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/lib/OpenLayers/Control/NavToolbar.js	2011-05-20 10:58:55 UTC (rev 11983)
@@ -47,7 +47,9 @@
      */
     draw: function() {
         var div = OpenLayers.Control.Panel.prototype.draw.apply(this, arguments);
-        this.activateControl(this.controls[0]);
+        if (this.defaultControl === null) {
+            this.defaultControl = this.controls[0];
+        }
         return div;
     },
 

Modified: sandbox/bartvde/wps/openlayers/lib/OpenLayers/Control/Navigation.js
===================================================================
--- sandbox/bartvde/wps/openlayers/lib/OpenLayers/Control/Navigation.js	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/lib/OpenLayers/Control/Navigation.js	2011-05-20 10:58:55 UTC (rev 11983)
@@ -38,6 +38,18 @@
     dragPanOptions: null,
 
     /**
+     * Property: pinchZoom
+     * {<OpenLayers.Control.PinchZoom>}
+     */
+    pinchZoom: null,
+
+    /**
+     * APIProperty: pinchZoomOptions
+     * {Object} Options passed to the PinchZoom control.
+     */
+    pinchZoomOptions: null,
+
+    /**
      * APIProperty: documentDrag
      * {Boolean} Allow panning of the map by dragging outside map viewport.
      *     Default is false.
@@ -124,6 +136,12 @@
             this.zoomBox.destroy();
         }
         this.zoomBox = null;
+
+        if (this.pinchZoom) {
+            this.pinchZoom.destroy();
+        }
+        this.pinchZoom = null;
+
         OpenLayers.Control.prototype.destroy.apply(this,arguments);
     },
     
@@ -139,6 +157,9 @@
         if (this.zoomBoxEnabled) {
             this.zoomBox.activate();
         }
+        if (this.pinchZoom) {
+            this.pinchZoom.activate();
+        }
         return OpenLayers.Control.prototype.activate.apply(this,arguments);
     },
 
@@ -146,6 +167,9 @@
      * Method: deactivate
      */
     deactivate: function() {
+        if (this.pinchZoom) {
+            this.pinchZoom.deactivate();
+        }
         this.zoomBox.deactivate();
         this.dragPan.deactivate();
         this.handlers.click.deactivate();
@@ -188,6 +212,11 @@
                                     this, {"up"  : this.wheelUp,
                                            "down": this.wheelDown},
                                     this.mouseWheelOptions );
+        if (OpenLayers.Control.PinchZoom) {
+            this.pinchZoom = new OpenLayers.Control.PinchZoom(
+                OpenLayers.Util.extend(
+                    {map: this.map}, this.pinchZoomOptions));
+        }
     },
 
     /**

Modified: sandbox/bartvde/wps/openlayers/lib/OpenLayers/Control/Panel.js
===================================================================
--- sandbox/bartvde/wps/openlayers/lib/OpenLayers/Control/Panel.js	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/lib/OpenLayers/Control/Panel.js	2011-05-20 10:58:55 UTC (rev 11983)
@@ -47,6 +47,14 @@
     saveState: false,
       
     /**
+     * APIProperty: allowDepress
+     * {Boolean} If is true the <OpenLayers.Control.TYPE_TOOL> controls can 
+     *     be deactivated by clicking the icon that represents them.  Default 
+     *     is false.
+     */
+    allowDepress: false,
+    
+    /**
      * Property: activeState
      * {Object} stores the active state of this panel's controls.
      */
@@ -199,15 +207,19 @@
             }
             return;
         }
-        var c;
-        for (var i=0, len=this.controls.length; i<len; i++) {
-            c = this.controls[i];
-            if (c != control &&
-               (c.type === OpenLayers.Control.TYPE_TOOL || c.type == null)) {
-                c.deactivate();
+        if (this.allowDepress && control.active) {
+            control.deactivate();
+        } else {
+            var c;
+            for (var i=0, len=this.controls.length; i<len; i++) {
+                c = this.controls[i];
+                if (c != control &&
+                   (c.type === OpenLayers.Control.TYPE_TOOL || c.type == null)) {
+                    c.deactivate();
+                }
             }
+            control.activate();
         }
-        control.activate();
     },
 
     /**

Modified: sandbox/bartvde/wps/openlayers/lib/OpenLayers/Control/TransformFeature.js
===================================================================
--- sandbox/bartvde/wps/openlayers/lib/OpenLayers/Control/TransformFeature.js	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/lib/OpenLayers/Control/TransformFeature.js	2011-05-20 10:58:55 UTC (rev 11983)
@@ -232,6 +232,9 @@
             this.dragControl.deactivate();
             deactivated = true;
         }
+        if (deactivated) {
+        	this.unsetFeature();
+        }
         return deactivated;
     },
     
@@ -265,13 +268,15 @@
             scale: 1,
             ratio: 1
         });
-        var evt = {feature: feature};
-        
+
         var oldRotation = this.rotation;
         var oldCenter = this.center;
         OpenLayers.Util.extend(this, initialParams);
 
-        if(this.events.triggerEvent("beforesetfeature", evt) === false) {
+        var cont = this.events.triggerEvent("beforesetfeature",
+            {feature: feature}
+        );
+        if (cont === false) {
             return;
         }
 
@@ -303,10 +308,26 @@
         
         delete this._setfeature;
 
-        this.events.triggerEvent("setfeature", evt);
+        this.events.triggerEvent("setfeature", {feature: feature});
     },
     
     /**
+     * APIMethod: unsetFeature
+     * Remove the transformation box off any feature.
+     * If the control is active, it will be deactivated first.
+     */
+    unsetFeature: function() {
+    	if (this.active) {
+    		this.deactivate();
+    	} else {
+	    	this.feature = null;
+	    	this.rotation = 0;
+	    	this.scale = 1;
+	    	this.ratio = 1;
+    	}
+    },
+    
+    /**
      * Method: createBox
      * Creates the box with all handles and transformation handles.
      */

Modified: sandbox/bartvde/wps/openlayers/lib/OpenLayers/Events.js
===================================================================
--- sandbox/bartvde/wps/openlayers/lib/OpenLayers/Events.js	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/lib/OpenLayers/Events.js	2011-05-20 10:58:55 UTC (rev 11983)
@@ -588,7 +588,7 @@
      * Example use:
      * (code)
      * // register a single listener for the "loadstart" event
-     * events.on({"loadstart", loadStartListener});
+     * events.on({"loadstart": loadStartListener});
      *
      * // this is equivalent to the following
      * events.register("loadstart", undefined, loadStartListener);
@@ -602,7 +602,7 @@
      *
      * // this is equivalent to the following
      * events.register("loadstart", object, loadStartListener);
-     * events.register("loadstart", object, loadEndListener);
+     * events.register("loadend", object, loadEndListener);
      * (end)
      *
      * Parameters:
@@ -695,7 +695,7 @@
      * Example use:
      * (code)
      * // unregister a single listener for the "loadstart" event
-     * events.un({"loadstart", loadStartListener});
+     * events.un({"loadstart": loadStartListener});
      *
      * // this is equivalent to the following
      * events.unregister("loadstart", undefined, loadStartListener);
@@ -709,7 +709,7 @@
      *
      * // this is equivalent to the following
      * events.unregister("loadstart", object, loadStartListener);
-     * events.unregister("loadstart", object, loadEndListener);
+     * events.unregister("loadend", object, loadEndListener);
      * (end)
      */
     un: function(object) {

Modified: sandbox/bartvde/wps/openlayers/lib/OpenLayers/Format/CSWGetRecords/v2_0_2.js
===================================================================
--- sandbox/bartvde/wps/openlayers/lib/OpenLayers/Format/CSWGetRecords/v2_0_2.js	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/lib/OpenLayers/Format/CSWGetRecords/v2_0_2.js	2011-05-20 10:58:55 UTC (rev 11983)
@@ -27,12 +27,14 @@
      * {Object} Mapping of namespace aliases to namespace URIs.
      */
     namespaces: {
-        xlink: "http://www.w3.org/1999/xlink",
-        xsi: "http://www.w3.org/2001/XMLSchema-instance",
         csw: "http://www.opengis.net/cat/csw/2.0.2",
         dc: "http://purl.org/dc/elements/1.1/",
         dct: "http://purl.org/dc/terms/",
-        ows: "http://www.opengis.net/ows"
+        geonet: "http://www.fao.org/geonetwork",
+        ogc: "http://www.opengis.net/ogc",
+        ows: "http://www.opengis.net/ows",
+        xlink: "http://www.w3.org/1999/xlink",
+        xsi: "http://www.w3.org/2001/XMLSchema-instance"
     },
     
     /**
@@ -232,8 +234,19 @@
                 var record = {type: "Record"};
                 this.readChildNodes(node, record);
                 obj.records.push(record);
+            },
+            "*": function(node, obj) {
+                var name = node.localName || node.nodeName.split(":").pop();
+                obj[name] = this.getChildValue(node);
             }
         },
+        "geonet": {
+            "info": function(node, obj) {
+                var gninfo = {};
+                this.readChildNodes(node, gninfo);
+                obj.gninfo = gninfo;
+            }
+        },
         "dc": {
             // audience, contributor, coverage, creator, date, description, format,
             // identifier, language, provenance, publisher, relation, rights,
@@ -389,14 +402,13 @@
                         node
                     );
                 }
-                //TODO: not implemented in ogc filters?
-                //if (options.SortBy) {
-                    //this.writeNode(
-                        //"ogc:SortBy",
-                        //options.SortBy,
-                        //node
-                    //);
-                //}
+                if (options.SortBy) {
+                    this.writeNode(
+                        "ogc:SortBy",
+                        options.SortBy,
+                        node
+                    );
+                }
                 return node;
             },
             "ElementName": function(options) {
@@ -433,7 +445,8 @@
                 }
                 return node;
             }
-        }
+        },
+        "ogc": OpenLayers.Format.Filter.v1_1_0.prototype.writers["ogc"]
     },
    
     CLASS_NAME: "OpenLayers.Format.CSWGetRecords.v2_0_2" 

Modified: sandbox/bartvde/wps/openlayers/lib/OpenLayers/Format/Filter/v1_0_0.js
===================================================================
--- sandbox/bartvde/wps/openlayers/lib/OpenLayers/Format/Filter/v1_0_0.js	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/lib/OpenLayers/Format/Filter/v1_0_0.js	2011-05-20 10:58:55 UTC (rev 11983)
@@ -130,11 +130,10 @@
                     box.setAttribute("srsName", filter.projection);
                 }
                 return node;
-            }}, OpenLayers.Format.Filter.v1.prototype.writers["ogc"]),
-            
+            }
+        }, OpenLayers.Format.Filter.v1.prototype.writers["ogc"]),
         "gml": OpenLayers.Format.GML.v2.prototype.writers["gml"],
         "feature": OpenLayers.Format.GML.v2.prototype.writers["feature"]
-        
     },
 
     /**

Modified: sandbox/bartvde/wps/openlayers/lib/OpenLayers/Format/Filter/v1_1_0.js
===================================================================
--- sandbox/bartvde/wps/openlayers/lib/OpenLayers/Format/Filter/v1_1_0.js	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/lib/OpenLayers/Format/Filter/v1_1_0.js	2011-05-20 10:58:55 UTC (rev 11983)
@@ -146,8 +146,39 @@
                 }
                 node.appendChild(box); 
                 return node;
-            }}, OpenLayers.Format.Filter.v1.prototype.writers["ogc"]),
-            
+            },
+            "SortBy": function(sortProperties) {
+                var node = this.createElementNSPlus("ogc:SortBy");
+                for (var i=0,l=sortProperties.length;i<l;i++) {
+                    this.writeNode(
+                        "ogc:SortProperty",
+                        sortProperties[i],
+                        node
+                    );
+                }
+                return node;
+            }, 
+            "SortProperty": function(sortProperty) {
+                var node = this.createElementNSPlus("ogc:SortProperty");
+                this.writeNode(
+                    "ogc:PropertyName",
+                    sortProperty,
+                    node
+                );
+                this.writeNode(
+                    "ogc:SortOrder",
+                    (sortProperty.order == 'DESC') ? 'DESC' : 'ASC',
+                    node
+                );
+                return node;
+            },
+            "SortOrder": function(value) {
+                var node = this.createElementNSPlus("ogc:SortOrder", {
+                    value: value
+                });
+                return node;
+            }
+        }, OpenLayers.Format.Filter.v1.prototype.writers["ogc"]),
         "gml": OpenLayers.Format.GML.v3.prototype.writers["gml"],
         "feature": OpenLayers.Format.GML.v3.prototype.writers["feature"]
     },

Modified: sandbox/bartvde/wps/openlayers/lib/OpenLayers/Format/WFSCapabilities/v1_0_0.js
===================================================================
--- sandbox/bartvde/wps/openlayers/lib/OpenLayers/Format/WFSCapabilities/v1_0_0.js	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/lib/OpenLayers/Format/WFSCapabilities/v1_0_0.js	2011-05-20 10:58:55 UTC (rev 11983)
@@ -9,7 +9,7 @@
 
 /**
  * Class: OpenLayers.Format.WFSCapabilities/v1_0_0
- * Read WMS Capabilities version 1.0.0.
+ * Read WFS Capabilities version 1.0.0.
  * 
  * Inherits from:
  *  - <OpenLayers.Format.WFSCapabilities>

Modified: sandbox/bartvde/wps/openlayers/lib/OpenLayers/Format/WMSCapabilities/v1.js
===================================================================
--- sandbox/bartvde/wps/openlayers/lib/OpenLayers/Format/WMSCapabilities/v1.js	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/lib/OpenLayers/Format/WMSCapabilities/v1.js	2011-05-20 10:58:55 UTC (rev 11983)
@@ -303,14 +303,17 @@
                 this.readChildNodes(node, obj);
             },
             "Get": function(node, obj) {
-                this.readChildNodes(node, obj);
+                obj.get = {};
+                this.readChildNodes(node, obj.get);
             },
             "Post": function(node, obj) {
-                this.readChildNodes(node, obj);
+                obj.post = {};
+                this.readChildNodes(node, obj.post);
             },
             "GetMap": function(node, obj) {
                 obj.getmap = {formats: []};
                 this.readChildNodes(node, obj.getmap);
+                obj.getmap.href = obj.getmap.get.href || obj.getmap.post.href; // backwards compatibility
             },
             "GetFeatureInfo": function(node, obj) {
                 obj.getfeatureinfo = {formats: []};

Modified: sandbox/bartvde/wps/openlayers/lib/OpenLayers/Handler/Box.js
===================================================================
--- sandbox/bartvde/wps/openlayers/lib/OpenLayers/Handler/Box.js	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/lib/OpenLayers/Handler/Box.js	2011-05-20 10:58:55 UTC (rev 11983)
@@ -99,11 +99,6 @@
         
         this.map.eventsDiv.appendChild(this.zoomBox);
         
-        var offset = this.getBoxOffsets();
-        var pos = this.dragHandler.start;
-        this.zoomBox.style.left = (pos.x - offset.left) + "px";
-        this.zoomBox.style.top = (pos.y - offset.top) + "px";
-
         OpenLayers.Element.addClass(
             this.map.eventsDiv, "olDrawBox"
         );

Modified: sandbox/bartvde/wps/openlayers/lib/OpenLayers/Handler/Feature.js
===================================================================
--- sandbox/bartvde/wps/openlayers/lib/OpenLayers/Handler/Feature.js	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/lib/OpenLayers/Handler/Feature.js	2011-05-20 10:58:55 UTC (rev 11983)
@@ -147,7 +147,8 @@
                 scope: this
             });
         }
-        return this.mousedown(evt);
+        return OpenLayers.Event.isMultiTouch(evt) ?
+                true : this.mousedown(evt);
     },
 
     /**
@@ -271,7 +272,7 @@
         var type = evt.type;
         var handled = false;
         var previouslyIn = !!(this.feature); // previously in a feature
-        var click = (type == "click" || type == "dblclick");
+        var click = (type == "click" || type == "dblclick" || type == "touchstart");
         this.feature = this.layer.getFeatureFromEvent(evt);
         if(this.feature && !this.feature.layer) {
             // feature has been destroyed
@@ -282,7 +283,7 @@
             this.lastFeature = null;
         }
         if(this.feature) {
-            if(evt.type === "touchstart") {
+            if(type === "touchstart") {
                 // stop the event to prevent Android Webkit from
                 // "flashing" the map div
                 OpenLayers.Event.stop(evt);

Modified: sandbox/bartvde/wps/openlayers/lib/OpenLayers/Handler/Path.js
===================================================================
--- sandbox/bartvde/wps/openlayers/lib/OpenLayers/Handler/Path.js	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/lib/OpenLayers/Handler/Path.js	2011-05-20 10:58:55 UTC (rev 11983)
@@ -36,6 +36,14 @@
     maxVertices: null,
 
     /**
+     * Property: doubleTouchTolerance
+     * {Number} Maximum number of pixels between two touches for
+     *     the gesture to be considered a "finalize feature" action.
+     *     Default is 20.
+     */
+    doubleTouchTolerance: 20,
+
+    /**
      * Property: freehand
      * {Boolean} In freehand mode, the handler starts the path on mouse down,
      * adds a point for every mouse move, and finishes the path on mouse up.
@@ -241,9 +249,9 @@
      */
     touchstart: function(evt) {
         if (this.timerId &&
-            this.passesTolerance(this.lastTouchPx, evt.xy, this.dblclickTolerance)) {
+            this.passesTolerance(this.lastTouchPx, evt.xy,
+                                 this.doubleTouchTolerance)) {
             // double-tap, finalize the geometry
-            this.lastTouchPx = evt.xy; // for up() to detect dblclick and do nothing
             this.finishGeometry();
             window.clearTimeout(this.timerId);
             this.timerId = null;
@@ -277,7 +285,9 @@
         if(this.freehandMode(evt)) {
             stopDown = true;
         }
-        if (!this.touch && (!this.lastDown || !this.passesTolerance(this.lastDown, evt.xy, this.pixelTolerance))) {
+        if (!this.touch && (!this.lastDown ||
+                            !this.passesTolerance(this.lastDown, evt.xy,
+                                                  this.pixelTolerance))) {
             this.modifyFeature(evt.xy, !!this.lastUp);
         }
         this.mouseDown = true;
@@ -323,13 +333,13 @@
      * {Boolean} Allow event propagation
      */
     up: function (evt) {
-        if (this.mouseDown && (!this.lastUp || !this.passesTolerance(
-                this.lastUp, evt.xy, this.dblclickTolerance))) {
+        if (this.mouseDown && (!this.lastUp || !this.lastUp.equals(evt.xy))) {
             if(this.stoppedDown && this.freehandMode(evt)) {
                 this.removePoint();
                 this.finalize();
             } else {
-                if (this.passesTolerance(this.lastDown, evt.xy, this.pixelTolerance)) {
+                if (this.passesTolerance(this.lastDown, evt.xy,
+                                         this.pixelTolerance)) {
                     if (this.touch) {
                         this.modifyFeature(evt.xy);
                     }

Modified: sandbox/bartvde/wps/openlayers/lib/OpenLayers/Handler/Point.js
===================================================================
--- sandbox/bartvde/wps/openlayers/lib/OpenLayers/Handler/Point.js	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/lib/OpenLayers/Handler/Point.js	2011-05-20 10:58:55 UTC (rev 11983)
@@ -107,13 +107,6 @@
     pixelTolerance: 5,
 
     /**
-     * APIProperty: dblclickTolerance
-     * {Number} Maximum number of pixels between two touchend for an
-     *     event to be considered a dblclick.  Default is 20.
-     */
-    dblclickTolerance: 20,
-
-    /**
      * Property: touch
      * {Boolean} Indcates the support of touch events.
      */
@@ -526,8 +519,7 @@
             return true;
         }
         // ignore double-clicks
-        if (this.lastUp && this.passesTolerance(this.lastUp, evt.xy,
-                                                this.dblclickTolerance)) {
+        if (this.lastUp && this.lastUp.equals(evt.xy)) {
             return true;
         }
         if (this.lastDown && this.passesTolerance(this.lastDown, evt.xy,
@@ -564,13 +556,9 @@
     /**
      * Method: passesTolerance
      * Determine whether the event is within the optional pixel tolerance.
-     * Note that the pixel tolerance check only works if mousedown events get
-     * to the listeners registered here.  If they are stopped by other
-     * elements, <pixelTolerance> and <dblclickTolerance> will have no effect
-     * here (this method will always return true).
      *
      * Returns:
-     * {Boolean} The click is within the pixel tolerance (if specified).
+     * {Boolean} The event is within the pixel tolerance (if specified).
      */
     passesTolerance: function(pixel1, pixel2, tolerance) {
         var passes = true;

Copied: sandbox/bartvde/wps/openlayers/lib/OpenLayers/Lang/lt.js (from rev 11982, trunk/openlayers/lib/OpenLayers/Lang/lt.js)
===================================================================
--- sandbox/bartvde/wps/openlayers/lib/OpenLayers/Lang/lt.js	                        (rev 0)
+++ sandbox/bartvde/wps/openlayers/lib/OpenLayers/Lang/lt.js	2011-05-20 10:58:55 UTC (rev 11983)
@@ -0,0 +1,82 @@
+/**
+ * @requires OpenLayers/Lang.js
+ */
+
+/**
+ * Namespace: OpenLayers.Lang["lt"]
+ * Dictionary for Lithuanian.  Keys for entries are used in calls to
+ *     <OpenLayers.Lang.translate>.  Entry bodies are normal strings or
+ *     strings formatted for use with <OpenLayers.String.format> calls.
+ */
+OpenLayers.Lang['lt'] = OpenLayers.Util.applyDefaults({
+
+    'unhandledRequest': "Neapdorota užklausa gražino ${statusText}",
+
+    'permalink': "Pastovi nuoroda",
+
+    'overlays': "Papildomi sluoksniai",
+
+    'baseLayer': "Pagrindinis sluoksnis",
+
+    'sameProjection':
+	"Apžvalginis žemėlapis veikia tik tada, kai jis yra tos pačios projekcijos kaip ir pagrindinis",
+
+    'readNotImplemented': "Skaitymas nėra įgyvendintas.",
+
+    'writeNotImplemented': "Rašymas nėra įgyvendintas.",
+
+    'noFID': "Negaliu atnaujinti objekto, kuris neturi FID.",
+
+    'errorLoadingGML': "Klaida užkraunant GML failą ${url}",
+
+    'browserNotSupported':
+	"Jūsų naršyklė nemoka parodyti vektorių. Šiuo metu galima naudotis tokiais rodymo varikliais:\n{renderers}",
+
+    'componentShouldBe': "addFeatures : komponentas turi būti ${geomType}",
+
+    // console message
+    'getFeatureError':
+	"getFeatureFromEvent buvo iškviestas sluoksniui, kuris neturi priskirto paišymo variklio. Tai paprastai nutinka, kai jūs pašalinate sluoksnį, bet paliekate su juo susijusį [handler]",
+
+    'commitSuccess': "WFS Tranzakcija: PAVYKO ${response}",
+
+    'commitFailed': "WFS Tranzakcija: ŽLUGO ${response}",
+
+    'scale': "Mastelis = 1 : ${scaleDenom}",
+    
+    //labels for the graticule control
+    'W': 'V',
+    'E': 'R',
+    'N': 'Š',
+    'S': 'P',
+    'graticule': 'Tinklelis',
+
+    // console message
+    'layerAlreadyAdded':
+        "Bandėte pridėti prie žemėlapio sluoksnį ${layerName}, tačiau jis jau yra pridėtas",
+
+    // console message
+    'methodDeprecated':
+	"Šis metodas yra pasenęs ir 3.0 versijoje bus pašalintas. " +
+	"Prašome naudoti ${newMethod}.",
+
+    // console message
+    'boundsAddError': "Add funkcijai reikia pateikti tiek x, tiek y reikšmes.",
+
+    // console message
+    'lonlatAddError': "Add funkcijai reikia pateikti tiek lon, tiek lat reikšmes",
+
+    // console message
+    'pixelAddError': "Add funkcijai būtina perduoti tiek x, tiek y reikšmes.",
+
+    // console message
+    'unsupportedGeometryType': "Nepalaikomas geometrijos tipas: ${geomType}",
+
+    // console message
+    'pagePositionFailed':
+        "OpenLayers.Util.pagePosition žlugo: elementas su id ${elemId} gali būti neteisingoje vietoje.",
+
+    // **** end ****
+    'end': ''
+    
+});

Modified: sandbox/bartvde/wps/openlayers/lib/OpenLayers/Renderer/Canvas.js
===================================================================
--- sandbox/bartvde/wps/openlayers/lib/OpenLayers/Renderer/Canvas.js	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/lib/OpenLayers/Renderer/Canvas.js	2011-05-20 10:58:55 UTC (rev 11983)
@@ -145,8 +145,12 @@
             if (rendered) {
                 // keep track of what we have rendered for redraw
                 this.features[feature.id] = [feature, style];
-                this.pendingRedraw = true;
             }
+            else {
+                // remove from features tracked for redraw
+                delete(this.features[feature.id]);
+            }
+            this.pendingRedraw = true;
         }
         if (this.pendingRedraw && !this.locked) {
             this.redraw();
@@ -228,8 +232,8 @@
             var p0 = pt[0];
             var p1 = pt[1];
             if(!isNaN(p0) && !isNaN(p1)) {
-                var x = p0 + xOffset;
-                var y = p1 + yOffset;
+                var x = (p0 + xOffset) | 0;
+                var y = (p1 + yOffset) | 0;
                 var canvas = this.canvas;
                 canvas.globalAlpha = opacity;
                 var factor = OpenLayers.Renderer.Canvas.drawImageScaleFactor ||

Modified: sandbox/bartvde/wps/openlayers/lib/OpenLayers/Util.js
===================================================================
--- sandbox/bartvde/wps/openlayers/lib/OpenLayers/Util.js	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/lib/OpenLayers/Util.js	2011-05-20 10:58:55 UTC (rev 11983)
@@ -1301,7 +1301,7 @@
 };
 
 /**
- * Function: pagePositon
+ * Function: pagePosition
  * Calculates the position of an element on the page (see
  * http://code.google.com/p/doctype/wiki/ArticlePageOffset)
  *

Modified: sandbox/bartvde/wps/openlayers/license.txt
===================================================================
--- sandbox/bartvde/wps/openlayers/license.txt	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/license.txt	2011-05-20 10:58:55 UTC (rev 11983)
@@ -1,38 +1,31 @@
 This license applies to all code and content in the 'branches', 'trunk', and
 'project' directories of the Openlayers code repository at svn.openlayers.org,
 and applies to all release of OpenLayers later than 2.5.
- 
-Copyright (c) 2005-2011 OpenLayers Contributors. See authors.txt for
-  full list.
 
-All rights reserved.
+Copyright 2005-2011 OpenLayers Contributors. All rights reserved. See
+authors.txt for full list.
 
-Redistribution and use in source and binary forms, with or without
-modification, are permitted (subject to the limitations in the
-disclaimer below) provided that the following conditions are met:
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
 
- * Redistributions of source code must retain the above copyright
-   notice, this list of conditions and the following disclaimer.
+ 1. Redistributions of source code must retain the above copyright notice, this
+list of conditions and the following disclaimer.
 
- * Redistributions in binary form must reproduce the above copyright
-   notice, this list of conditions and the following disclaimer in the
-   documentation and/or other materials provided with the
-   distribution.
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the following disclaimer in the documentation and/or
+other materials provided with the distribution.
 
- * Neither the name of OpenLayers nor the names of its contributors 
-   may be used to endorse or promote products derived from this 
-   software without specific prior written permission.
+THIS SOFTWARE IS PROVIDED BY OPENLAYERS CONTRIBUTORS ``AS IS'' AND ANY EXPRESS
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+SHALL COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
-NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
-GRANTED BY THIS LICENSE.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
-HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
-WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
-BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
-OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
-IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+The views and conclusions contained in the software and documentation are those
+of the authors and should not be interpreted as representing official policies,
+either expressed or implied, of OpenLayers Contributors.
\ No newline at end of file

Copied: sandbox/bartvde/wps/openlayers/tests/Control/EditingToolbar.html (from rev 11982, trunk/openlayers/tests/Control/EditingToolbar.html)
===================================================================
--- sandbox/bartvde/wps/openlayers/tests/Control/EditingToolbar.html	                        (rev 0)
+++ sandbox/bartvde/wps/openlayers/tests/Control/EditingToolbar.html	2011-05-20 10:58:55 UTC (rev 11983)
@@ -0,0 +1,30 @@
+<html>
+<head>
+  <script src="../OLLoader.js"></script>
+  <script type="text/javascript">
+    function test_ctor_draw(t) {
+        t.plan(4);
+        var map = new OpenLayers.Map('map');
+        var vLayer = new OpenLayers.Layer.Vector();
+        map.addLayer(vLayer);
+        
+        var editingToolbar = new OpenLayers.Control.EditingToolbar(vLayer);
+        map.addControl(editingToolbar);
+        
+        t.ok(editingToolbar instanceof OpenLayers.Control.EditingToolbar,
+                "new OpenLayers.Control.EditingToolbar returns object" );
+        t.ok(editingToolbar.controls[0] instanceof OpenLayers.Control.Navigation,
+                "EditingToolbar contains Control.Navigation object" );
+        t.eq(editingToolbar.controls[0].active, true,
+                "First control is active" );
+        t.eq(editingToolbar.controls.length, 4,
+                "EditingToolbar contains 4 Controls" );
+        
+        map.destroy();
+    }
+  </script>
+</head>
+<body>
+    <div id="map" style="width: 1024px; height: 512px;"/>
+</body>
+</html>

Modified: sandbox/bartvde/wps/openlayers/tests/Control/NavToolbar.html
===================================================================
--- sandbox/bartvde/wps/openlayers/tests/Control/NavToolbar.html	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/tests/Control/NavToolbar.html	2011-05-20 10:58:55 UTC (rev 11983)
@@ -25,7 +25,18 @@
         // t.eq( control.div.style.top, "6px", "Control div top located correctly by default");
 
     }
+    
+    function test_Control_NavToolbar_defaultControl (t) {
+        t.plan( 1 );
+        var map = new OpenLayers.Map('map');
 
+        var nav = new OpenLayers.Control.NavToolbar();
+        map.addControl(nav);
+        
+        t.eq(nav.controls[0].active, true, "First control is active" );
+        
+        map.destroy();
+    }
   </script>
 </head>
 <body>

Modified: sandbox/bartvde/wps/openlayers/tests/Control/Navigation.html
===================================================================
--- sandbox/bartvde/wps/openlayers/tests/Control/Navigation.html	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/tests/Control/Navigation.html	2011-05-20 10:58:55 UTC (rev 11983)
@@ -18,8 +18,26 @@
         OpenLayers.Control.prototype.initialize = temp;
     }
 
+    function test_draw(t) {
+        t.plan(5);
+        var map = new OpenLayers.Map({div: 'map', controls: []});
+        var control = new OpenLayers.Control.Navigation();
+        map.addControl(control);
+        t.ok(control.handlers.click instanceof OpenLayers.Handler.Click,
+             "click handler set in instance");
+        t.ok(control.dragPan instanceof OpenLayers.Control.DragPan,
+             "drag pan control set in instance");
+        t.ok(control.zoomBox instanceof OpenLayers.Control.ZoomBox,
+             "zoom box control set in instance");
+        t.ok(control.handlers.wheel instanceof OpenLayers.Handler.MouseWheel,
+             "mousewheel handler set in instance");
+        t.ok(control.pinchZoom instanceof OpenLayers.Control.PinchZoom,
+             "pinch zoom control set in instance");
+        map.destroy();
+    }
+
     function test_Control_Navigation_destroy (t) {
-        t.plan(10);
+        t.plan(12);
         
         var temp = OpenLayers.Control.prototype.destroy;
         OpenLayers.Control.prototype.destroy = function() {
@@ -46,6 +64,11 @@
                     t.ok(true, "zoomBox destroyed");
                 }
             },
+            'pinchZoom': {
+                'destroy': function() {
+                    t.ok(true, "pinchZoom destroyed");
+                }
+            },
             handlers: {
                 'wheel': {
                     'destroy': function() {
@@ -66,6 +89,7 @@
 
         t.eq(control.dragPan, null, "'dragPan' set to null");
         t.eq(control.zoomBox, null, "'zoomBox' set to null");
+        t.eq(control.pinchZoom, null, "'pinchZoom' set to null");
         t.eq(control.handlers, null, "handlers set to null");
 
         OpenLayers.Control.prototype.destroy = temp;

Modified: sandbox/bartvde/wps/openlayers/tests/Control/Panel.html
===================================================================
--- sandbox/bartvde/wps/openlayers/tests/Control/Panel.html	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/tests/Control/Panel.html	2011-05-20 10:58:55 UTC (rev 11983)
@@ -247,6 +247,7 @@
         t.ok(!controlNoDeactive.active, "Tool control autoActivate:true is not active");
         
     }
+
     function test_Control_Panel_deactivate (t) {
         t.plan(2);
         var map = new OpenLayers.Map('map');
@@ -262,6 +263,31 @@
 
         map.destroy();
     }
+
+    function test_allowDepress (t) { 
+        t.plan(2); 
+        var map = new OpenLayers.Map('map');
+
+        var panel = new OpenLayers.Control.Panel();
+        panel.addControls([new OpenLayers.Control(),new OpenLayers.Control()]);
+        map.addControl(panel);
+        
+        var control1 = panel.controls[1]
+        
+        panel.activateControl(control1);
+        
+        panel.allowDepress = false;
+        panel.activateControl(control1);
+        t.eq(control1.active, true,
+            "control1 remains active after calling again activateControl when allowDepress = false");
+        panel.allowDepress = true;
+        panel.activateControl(control1);
+        t.eq(control1.active, false,
+            "control1 is inactive after calling again activateControl when allowDepress = true");
+
+        // panel.deactivate();
+        map.destroy();
+    }
   </script>
 </head>
 <body>

Modified: sandbox/bartvde/wps/openlayers/tests/Control/TransformFeature.html
===================================================================
--- sandbox/bartvde/wps/openlayers/tests/Control/TransformFeature.html	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/tests/Control/TransformFeature.html	2011-05-20 10:58:55 UTC (rev 11983)
@@ -54,7 +54,7 @@
     }
     
     function test_setFeature(t) {
-        t.plan(4);
+        t.plan(6);
         var map = new OpenLayers.Map("map", {allOverlays: true});
         var layer = new OpenLayers.Layer.Vector();
         var feature = new OpenLayers.Feature.Vector(
@@ -64,8 +64,16 @@
         map.setCenter(new OpenLayers.LonLat(0, 0), 18);
         var control = new OpenLayers.Control.TransformFeature(layer);
         map.addControl(control);
+        var log = [];
+        control.events.on({
+            "beforesetfeature": function(e) { log.push(e); },
+            "setfeature": function(e) { log.push(e); }
+        });
         control.setFeature(feature);
         
+        t.eq(log[0].type, "beforesetfeature", "beforesetfeature event fired with correct event type");
+        t.eq(log[1].type, "setfeature", "setfeature event fired with correct event type");
+        
         t.ok(control.active, "control activated on setFeature");
         t.ok(feature.geometry.getBounds().equals(control.box.geometry.getBounds()), "box positioned correctly");
         t.geom_eq(control.handles[0].geometry, control.box.geometry.components[0], "handle positioned with box");

Modified: sandbox/bartvde/wps/openlayers/tests/Format/CSWGetRecords/v2_0_2.html
===================================================================
--- sandbox/bartvde/wps/openlayers/tests/Format/CSWGetRecords/v2_0_2.html	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/tests/Format/CSWGetRecords/v2_0_2.html	2011-05-20 10:58:55 UTC (rev 11983)
@@ -41,10 +41,10 @@
     
     function test_read(t) {
         
-        t.plan(14);
+        t.plan(16);
         
         var obj = format.read(csw_response);
-        
+                
         var searchStatus = obj.SearchStatus;
         var searchResults = obj.SearchResults;
         var records = obj.records;
@@ -72,6 +72,10 @@
         t.eq(bbox.crs, "::Lambert Azimuthal Projection", "check value for BoundingBox.crs");
         t.eq(bbox.value, [156, -3, 37, 83], "check value for record.BoundingBox");
         
+        // test gninfo
+        testRecord = records[1];
+        t.ok(testRecord.gninfo, "object contains gninfo properties");
+        t.eq(testRecord.gninfo.schema, "iso19139", "check value for schema property in record.gninfo");
     }
     
     </script> 

Modified: sandbox/bartvde/wps/openlayers/tests/Format/CSWGetRecords/v2_0_2.js
===================================================================
--- sandbox/bartvde/wps/openlayers/tests/Format/CSWGetRecords/v2_0_2.js	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/tests/Format/CSWGetRecords/v2_0_2.js	2011-05-20 10:58:55 UTC (rev 11983)
@@ -37,6 +37,10 @@
         '<ows:LowerCorner>51.1 -34.6</ows:LowerCorner>' +
         '<ows:UpperCorner>-17.3 38.2</ows:UpperCorner>' +
       '</ows:BoundingBox>' +
+      '<geonet:info xmlns:gmd="http://www.isotc211.org/2005/gmd" xmlns:gco="http://www.isotc211.org/2005/gco" xmlns:gts="http://www.isotc211.org/2005/gts" xmlns:gml="http://www.opengis.net/gml">' +
+        '<id>859</id>' +
+        '<schema>iso19139</schema>' +
+      '</geonet:info>' +
     '</csw:BriefRecord>' +
   '</csw:SearchResults>' +
 '</csw:GetRecordsResponse>'

Modified: sandbox/bartvde/wps/openlayers/tests/Format/Filter/v1_1_0.html
===================================================================
--- sandbox/bartvde/wps/openlayers/tests/Format/Filter/v1_1_0.html	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/tests/Format/Filter/v1_1_0.html	2011-05-20 10:58:55 UTC (rev 11983)
@@ -336,7 +336,32 @@
         return new OpenLayers.Format.XML().read(xml).documentElement;
     }
 
-
+    function test_SortBy(t) {
+        t.plan(1);
+    
+        var out =
+            '<ogc:SortBy xmlns:ogc="http://www.opengis.net/ogc">'+
+                '<ogc:SortProperty>'+
+                    '<ogc:PropertyName>Title</ogc:PropertyName>'+
+                    '<ogc:SortOrder>ASC</ogc:SortOrder>'+
+                '</ogc:SortProperty>'+
+                '<ogc:SortProperty>'+
+                    '<ogc:PropertyName>Relevance</ogc:PropertyName>'+
+                    '<ogc:SortOrder>DESC</ogc:SortOrder>'+
+                '</ogc:SortProperty>'+
+            '</ogc:SortBy>';
+        
+        var parser = new OpenLayers.Format.Filter.v1_1_0();
+        var node = parser.writers['ogc'].SortBy.call(parser, [{
+            "property": 'Title',
+            "order": "ASC"
+        },{
+            "property": 'Relevance',
+            "order": "DESC"
+        }]);
+        
+        t.xml_eq(node, out, "Check SortBy");
+    }
     </script> 
 </head> 
 <body>

Modified: sandbox/bartvde/wps/openlayers/tests/Format/OWSContext/v0_3_1.html
===================================================================
--- sandbox/bartvde/wps/openlayers/tests/Format/OWSContext/v0_3_1.html	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/tests/Format/OWSContext/v0_3_1.html	2011-05-20 10:58:55 UTC (rev 11983)
@@ -34,7 +34,7 @@
             '			<Layer name="topp:gnis_pop" hidden="0">' +
             '				<ows:Title>GNIS Population</ows:Title>' +
             '				<Server service="urn:ogc:serviceType:WFS" version="1.0.0">' +
-            '					<OnlineResource xlink:href="http://sigma.openplans.org:8080/geoserver/wfs?"/>' +
+            '					<OnlineResource xlink:href="geoserver/wfs?"/>' +
             '				</Server>' +
             '			</Layer>' +
             '		</Layer>' +
@@ -54,7 +54,7 @@
         t.ok(context.layers[0].queryable, "WMS layer is queryable");
         t.eq(context.layers[0].name, "Tiger 2005fe major roads/railways", "Title correctly set");
         t.ok(context.layers[1].protocol instanceof OpenLayers.Protocol.WFS.v1_0_0, "Vector layer configured with a WFS Protocol");
-        t.eq(context.layers[1].protocol.url, "http://sigma.openplans.org:8080/geoserver/wfs?", "WFS url set correctly");
+        t.eq(context.layers[1].protocol.url, "geoserver/wfs?", "WFS url set correctly");
         t.ok(context.layers[1].strategies[0] instanceof OpenLayers.Strategy.BBOX, "BBOX strategy configured correctly");
         t.eq(context.layers[1].name, "GNIS Population", "Title of second layer correctly set");
         t.eq(context.layers[1].getVisibility(), true, "Second layer is visible");
@@ -79,7 +79,7 @@
         var wfs = new OpenLayers.Layer.Vector("myroads", {
             strategies: [new OpenLayers.Strategy.BBOX()],
             protocol: new OpenLayers.Protocol.WFS({
-                url:  "http://foo/wfs",
+                url:  "foo/wfs?",
                 featureType: "roads",
                 featureNS: "http://foo/myns"
             })
@@ -89,7 +89,7 @@
 
         var owc = new OpenLayers.Format.OWSContext();
         var output = owc.write(map, {id: 'foo'});
-        var expected = '<OWSContext xmlns="http://www.opengis.net/ows-context" version="0.3.1" id="foo" xsi:schemaLocation="http://www.opengis.net/ows-context http://www.ogcnetwork.net/schemas/owc/0.3.1/owsContext.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><General><ows:BoundingBox xmlns:ows="http://www.opengis.net/ows" crs="EPSG:4326"><ows:LowerCorner>-5.986328125 29.013671875</ows:LowerCorner><ows:UpperCorner>15.986328125 50.986328125</ows:UpperCorner></ows:BoundingBox><ows:Title xmlns:ows="http://www.opengis.net/ows">OpenLayers OWSContext</ows:Title></General><ResourceList><Layer name="basic" queryable="0" hidden="0"><ows:Title xmlns:ows="http://www.opengis.net/ows">OpenLayers WMS</ows:Title><ows:OutputFormat xmlns:ows="http://www.opengis.net/ows">image/jpeg</ows:OutputFormat><Server version="1.1.1" service="urn:ogc:serviceType:WMS"><OnlineResource xlink:href="http://labs.metacarta.com/wms/vmap0" xmlns:xlink="http://www.w3.org/1999/xlink"/></Server></Layer
 ><Layer name="feature:roads" hidden="0"><ows:Title xmlns:ows="http://www.opengis.net/ows">myroads</ows:Title><Server version="1.0.0" service="urn:ogc:serviceType:WFS"><OnlineResource xlink:href="http://foo/wfs" xmlns:xlink="http://www.w3.org/1999/xlink"/></Server></Layer></ResourceList></OWSContext>';
+        var expected = '<OWSContext xmlns="http://www.opengis.net/ows-context" version="0.3.1" id="foo" xsi:schemaLocation="http://www.opengis.net/ows-context http://www.ogcnetwork.net/schemas/owc/0.3.1/owsContext.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><General><ows:BoundingBox xmlns:ows="http://www.opengis.net/ows" crs="EPSG:4326"><ows:LowerCorner>-5.986328125 29.013671875</ows:LowerCorner><ows:UpperCorner>15.986328125 50.986328125</ows:UpperCorner></ows:BoundingBox><ows:Title xmlns:ows="http://www.opengis.net/ows">OpenLayers OWSContext</ows:Title></General><ResourceList><Layer name="basic" queryable="0" hidden="0"><ows:Title xmlns:ows="http://www.opengis.net/ows">OpenLayers WMS</ows:Title><ows:OutputFormat xmlns:ows="http://www.opengis.net/ows">image/jpeg</ows:OutputFormat><Server version="1.1.1" service="urn:ogc:serviceType:WMS"><OnlineResource xlink:href="http://labs.metacarta.com/wms/vmap0" xmlns:xlink="http://www.w3.org/1999/xlink"/></Server></Layer
 ><Layer name="feature:roads" hidden="0"><ows:Title xmlns:ows="http://www.opengis.net/ows">myroads</ows:Title><Server version="1.0.0" service="urn:ogc:serviceType:WFS"><OnlineResource xlink:href="foo/wfs?" xmlns:xlink="http://www.w3.org/1999/xlink"/></Server></Layer></ResourceList></OWSContext>';
         t.xml_eq(output, expected, "OWSContext with a WMS and a WFS layer generated correctly");
     }
 
@@ -139,11 +139,11 @@
 
     function test_read_gml(t) {
         t.plan(5);
-        var text = '<?xml version="1.0" encoding="UTF-8"?><OWSContext version="0.3.0" id="ows-context-ex-1-v3" xmlns="http://www.opengis.net/ows-context" xmlns:gml="http://www.opengis.net/gml" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:ogc="http://www.opengis.net/ogc" xmlns:ows="http://www.opengis.net/ows" xmlns:sld="http://www.opengis.net/sld" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/ows-context http://www.ogcnetwork.net/schemas/owc/0.3.0/owsContext.xsd"><General><ows:BoundingBox crs="urn:ogc:def:crs:EPSG:6.6:4326"><ows:LowerCorner>-117.44667178362664 32.57086210449395</ows:LowerCorner><ows:UpperCorner>-116.74066794885977 32.921986352104064</ows:UpperCorner></ows:BoundingBox><ows:Title>OWS Context version 0.3.0 examples</ows:Title></General><ResourceList><Layer name="basic" queryable="0" hidden="0" opacity="1"><ows:Title xmlns:ows="http://www.opengis.net/ows">OpenLayers 
 WMS</ows:Title><ows:OutputFormat xmlns:ows="http://www.opengis.net/ows">image/jpeg</ows:OutputFormat><Server version="1.1.1" service="urn:ogc:serviceType:WMS"><OnlineResource xlink:href="http://labs.metacarta.com/wms/vmap0" xmlns:xlink="http://www.w3.org/1999/xlink"/></Server></Layer><!-- Referenced GML Example --><Layer name="Landuse"><ows:Title>Boston Landuse Polygons</ows:Title><Server service="urn:ogc:serviceType:GML" version="2.1.2" title="Cadcorp GeognoSIS.NET Web Feature Service"><OnlineResource xlink:href="http://www.cadcorpdev.co.uk/gml/MassGIS/LandUse.gml"/></Server><sld:MinScaleDenominator>5000</sld:MinScaleDenominator><sld:MaxScaleDenominator>50000</sld:MaxScaleDenominator><MaxFeatures>99</MaxFeatures></Layer></ResourceList></OWSContext>';
+        var text = '<?xml version="1.0" encoding="UTF-8"?><OWSContext version="0.3.0" id="ows-context-ex-1-v3" xmlns="http://www.opengis.net/ows-context" xmlns:gml="http://www.opengis.net/gml" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:ogc="http://www.opengis.net/ogc" xmlns:ows="http://www.opengis.net/ows" xmlns:sld="http://www.opengis.net/sld" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opengis.net/ows-context http://www.ogcnetwork.net/schemas/owc/0.3.0/owsContext.xsd"><General><ows:BoundingBox crs="urn:ogc:def:crs:EPSG:6.6:4326"><ows:LowerCorner>-117.44667178362664 32.57086210449395</ows:LowerCorner><ows:UpperCorner>-116.74066794885977 32.921986352104064</ows:UpperCorner></ows:BoundingBox><ows:Title>OWS Context version 0.3.0 examples</ows:Title></General><ResourceList><Layer name="basic" queryable="0" hidden="0" opacity="1"><ows:Title xmlns:ows="http://www.opengis.net/ows">OpenLayers 
 WMS</ows:Title><ows:OutputFormat xmlns:ows="http://www.opengis.net/ows">image/jpeg</ows:OutputFormat><Server version="1.1.1" service="urn:ogc:serviceType:WMS"><OnlineResource xlink:href="http://labs.metacarta.com/wms/vmap0" xmlns:xlink="http://www.w3.org/1999/xlink"/></Server></Layer><!-- Referenced GML Example --><Layer name="Landuse"><ows:Title>Boston Landuse Polygons</ows:Title><Server service="urn:ogc:serviceType:GML" version="2.1.2" title="Cadcorp GeognoSIS.NET Web Feature Service"><OnlineResource xlink:href="gml/MassGIS/LandUse.gml"/></Server><sld:MinScaleDenominator>5000</sld:MinScaleDenominator><sld:MaxScaleDenominator>50000</sld:MaxScaleDenominator><MaxFeatures>99</MaxFeatures></Layer></ResourceList></OWSContext>';
         var parser = new OpenLayers.Format.OWSContext();
         var context = parser.read(text, {map: 'map'});
         t.ok(context.layers[1].protocol instanceof OpenLayers.Protocol.HTTP, "serviceType GML is translated into an HTTP Protocol");
-        t.eq(context.layers[1].protocol.url, "http://www.cadcorpdev.co.uk/gml/MassGIS/LandUse.gml", "Url of GML file correctly set");
+        t.eq(context.layers[1].protocol.url, "gml/MassGIS/LandUse.gml", "Url of GML file correctly set");
         t.ok(context.layers[1].protocol.format instanceof OpenLayers.Format.GML, "GML Format associated with protocol");
         t.eq(Math.round(context.layers[1].minScale), 50000, "Minscale correctly read");
         t.eq(Math.round(context.layers[1].maxScale), 5000, "Maxscale correctly read");
@@ -151,11 +151,11 @@
 
     function test_read_kml(t) {
         t.plan(3);
-        var text = '<OWSContext xmlns="http://www.opengis.net/ows-context" version="0.3.1" id="foo" xsi:schemaLocation="http://www.opengis.net/ows-context http://www.ogcnetwork.net/schemas/owc/0.3.1/owsContext.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><General><ows:BoundingBox xmlns:ows="http://www.opengis.net/ows" crs="EPSG:4326"><ows:LowerCorner>-5.986328125 27.9150390625</ows:LowerCorner><ows:UpperCorner>15.986328125 52.0849609375</ows:UpperCorner></ows:BoundingBox><ows:Title xmlns:ows="http://www.opengis.net/ows">OpenLayers OWSContext</ows:Title></General><ResourceList><Layer name="basic" queryable="0" hidden="0" opacity="1"><ows:Title xmlns:ows="http://www.opengis.net/ows">OpenLayers WMS</ows:Title><ows:OutputFormat xmlns:ows="http://www.opengis.net/ows">image/jpeg</ows:OutputFormat><Server version="1.1.1" service="urn:ogc:serviceType:WMS"><OnlineResource xlink:href="http://labs.metacarta.com/wms/vmap0" xmlns:xlink="http://www.w3.org/1999/xlink"/></Serv
 er></Layer><Layer><ows:Title xmlns:ows="http://www.opengis.net/ows">KML</ows:Title><Server version="2.2" service="urn:ogc:serviceType:KML"><OnlineResource xlink:href="http://foo/sundials.kml" xmlns:xlink="http://www.w3.org/1999/xlink"/></Server></Layer></ResourceList></OWSContext>';
+        var text = '<OWSContext xmlns="http://www.opengis.net/ows-context" version="0.3.1" id="foo" xsi:schemaLocation="http://www.opengis.net/ows-context http://www.ogcnetwork.net/schemas/owc/0.3.1/owsContext.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><General><ows:BoundingBox xmlns:ows="http://www.opengis.net/ows" crs="EPSG:4326"><ows:LowerCorner>-5.986328125 27.9150390625</ows:LowerCorner><ows:UpperCorner>15.986328125 52.0849609375</ows:UpperCorner></ows:BoundingBox><ows:Title xmlns:ows="http://www.opengis.net/ows">OpenLayers OWSContext</ows:Title></General><ResourceList><Layer name="basic" queryable="0" hidden="0" opacity="1"><ows:Title xmlns:ows="http://www.opengis.net/ows">OpenLayers WMS</ows:Title><ows:OutputFormat xmlns:ows="http://www.opengis.net/ows">image/jpeg</ows:OutputFormat><Server version="1.1.1" service="urn:ogc:serviceType:WMS"><OnlineResource xlink:href="http://labs.metacarta.com/wms/vmap0" xmlns:xlink="http://www.w3.org/1999/xlink"/></Serv
 er></Layer><Layer><ows:Title xmlns:ows="http://www.opengis.net/ows">KML</ows:Title><Server version="2.2" service="urn:ogc:serviceType:KML"><OnlineResource xlink:href="foo/sundials.kml" xmlns:xlink="http://www.w3.org/1999/xlink"/></Server></Layer></ResourceList></OWSContext>';
         var parser = new OpenLayers.Format.OWSContext();
         var context = parser.read(text, {map: 'map'});
         t.ok(context.layers[1].protocol instanceof OpenLayers.Protocol.HTTP, "serviceType KML is translated into an HTTP Protocol");
-        t.eq(context.layers[1].protocol.url, "http://foo/sundials.kml", "Url of KML file correctly set");
+        t.eq(context.layers[1].protocol.url, "foo/sundials.kml", "Url of KML file correctly set");
         t.ok(context.layers[1].protocol.format instanceof OpenLayers.Format.KML, "KML Format associated with protocol");
     }
 
@@ -175,7 +175,7 @@
             projection: map.displayProjection,
             strategies: [new OpenLayers.Strategy.Fixed()],
             protocol: new OpenLayers.Protocol.HTTP({
-                url: "http://foo/sundials.gml",
+                url: "foo/sundials.gml",
                 format: new OpenLayers.Format.GML()
             })
         });
@@ -184,7 +184,7 @@
 
         var owc = new OpenLayers.Format.OWSContext();
         var output = owc.write(map, {id: 'foo'});
-        var expected = '<OWSContext xmlns="http://www.opengis.net/ows-context" version="0.3.1" id="foo" xsi:schemaLocation="http://www.opengis.net/ows-context http://www.ogcnetwork.net/schemas/owc/0.3.1/owsContext.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><General><ows:BoundingBox xmlns:ows="http://www.opengis.net/ows" crs="EPSG:4326"><ows:LowerCorner>-5.986328125 29.013671875</ows:LowerCorner><ows:UpperCorner>15.986328125 50.986328125</ows:UpperCorner></ows:BoundingBox><ows:Title xmlns:ows="http://www.opengis.net/ows">OpenLayers OWSContext</ows:Title></General><ResourceList><Layer name="basic" queryable="0" hidden="0"><ows:Title xmlns:ows="http://www.opengis.net/ows">OpenLayers WMS</ows:Title><ows:OutputFormat xmlns:ows="http://www.opengis.net/ows">image/jpeg</ows:OutputFormat><Server version="1.1.1" service="urn:ogc:serviceType:WMS"><OnlineResource xlink:href="http://labs.metacarta.com/wms/vmap0" xmlns:xlink="http://www.w3.org/1999/xlink"/></Server></Layer
 ><Layer><ows:Title xmlns:ows="http://www.opengis.net/ows">GML</ows:Title><Server version="2.1.2" service="urn:ogc:serviceType:GML"><OnlineResource xlink:href="http://foo/sundials.gml" xmlns:xlink="http://www.w3.org/1999/xlink"/></Server></Layer></ResourceList></OWSContext>';
+        var expected = '<OWSContext xmlns="http://www.opengis.net/ows-context" version="0.3.1" id="foo" xsi:schemaLocation="http://www.opengis.net/ows-context http://www.ogcnetwork.net/schemas/owc/0.3.1/owsContext.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><General><ows:BoundingBox xmlns:ows="http://www.opengis.net/ows" crs="EPSG:4326"><ows:LowerCorner>-5.986328125 29.013671875</ows:LowerCorner><ows:UpperCorner>15.986328125 50.986328125</ows:UpperCorner></ows:BoundingBox><ows:Title xmlns:ows="http://www.opengis.net/ows">OpenLayers OWSContext</ows:Title></General><ResourceList><Layer name="basic" queryable="0" hidden="0"><ows:Title xmlns:ows="http://www.opengis.net/ows">OpenLayers WMS</ows:Title><ows:OutputFormat xmlns:ows="http://www.opengis.net/ows">image/jpeg</ows:OutputFormat><Server version="1.1.1" service="urn:ogc:serviceType:WMS"><OnlineResource xlink:href="http://labs.metacarta.com/wms/vmap0" xmlns:xlink="http://www.w3.org/1999/xlink"/></Server></Layer
 ><Layer><ows:Title xmlns:ows="http://www.opengis.net/ows">GML</ows:Title><Server version="2.1.2" service="urn:ogc:serviceType:GML"><OnlineResource xlink:href="foo/sundials.gml" xmlns:xlink="http://www.w3.org/1999/xlink"/></Server></Layer></ResourceList></OWSContext>';
         t.xml_eq(output, expected, "OWSContext with a WMS and a GML vector layer generated correctly");
     }
 
@@ -204,7 +204,7 @@
             projection: map.displayProjection,
             strategies: [new OpenLayers.Strategy.Fixed()],
             protocol: new OpenLayers.Protocol.HTTP({
-                url: "http://foo/sundials.kml",
+                url: "foo/sundials.kml",
                 format: new OpenLayers.Format.KML({
                     extractStyles: true
                 })
@@ -215,7 +215,7 @@
 
         var owc = new OpenLayers.Format.OWSContext();
         var output = owc.write(map, {id: 'foo'});
-        var expected = '<OWSContext xmlns="http://www.opengis.net/ows-context" version="0.3.1" id="foo" xsi:schemaLocation="http://www.opengis.net/ows-context http://www.ogcnetwork.net/schemas/owc/0.3.1/owsContext.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><General><ows:BoundingBox xmlns:ows="http://www.opengis.net/ows" crs="EPSG:4326"><ows:LowerCorner>-5.986328125 29.013671875</ows:LowerCorner><ows:UpperCorner>15.986328125 50.986328125</ows:UpperCorner></ows:BoundingBox><ows:Title xmlns:ows="http://www.opengis.net/ows">OpenLayers OWSContext</ows:Title></General><ResourceList><Layer name="basic" queryable="0" hidden="0"><ows:Title xmlns:ows="http://www.opengis.net/ows">OpenLayers WMS</ows:Title><ows:OutputFormat xmlns:ows="http://www.opengis.net/ows">image/jpeg</ows:OutputFormat><Server version="1.1.1" service="urn:ogc:serviceType:WMS"><OnlineResource xlink:href="http://labs.metacarta.com/wms/vmap0" xmlns:xlink="http://www.w3.org/1999/xlink"/></Server></Layer
 ><Layer><ows:Title xmlns:ows="http://www.opengis.net/ows">KML</ows:Title><Server version="2.2" service="urn:ogc:serviceType:KML"><OnlineResource xlink:href="http://foo/sundials.kml" xmlns:xlink="http://www.w3.org/1999/xlink"/></Server></Layer></ResourceList></OWSContext>';
+        var expected = '<OWSContext xmlns="http://www.opengis.net/ows-context" version="0.3.1" id="foo" xsi:schemaLocation="http://www.opengis.net/ows-context http://www.ogcnetwork.net/schemas/owc/0.3.1/owsContext.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><General><ows:BoundingBox xmlns:ows="http://www.opengis.net/ows" crs="EPSG:4326"><ows:LowerCorner>-5.986328125 29.013671875</ows:LowerCorner><ows:UpperCorner>15.986328125 50.986328125</ows:UpperCorner></ows:BoundingBox><ows:Title xmlns:ows="http://www.opengis.net/ows">OpenLayers OWSContext</ows:Title></General><ResourceList><Layer name="basic" queryable="0" hidden="0"><ows:Title xmlns:ows="http://www.opengis.net/ows">OpenLayers WMS</ows:Title><ows:OutputFormat xmlns:ows="http://www.opengis.net/ows">image/jpeg</ows:OutputFormat><Server version="1.1.1" service="urn:ogc:serviceType:WMS"><OnlineResource xlink:href="http://labs.metacarta.com/wms/vmap0" xmlns:xlink="http://www.w3.org/1999/xlink"/></Server></Layer
 ><Layer><ows:Title xmlns:ows="http://www.opengis.net/ows">KML</ows:Title><Server version="2.2" service="urn:ogc:serviceType:KML"><OnlineResource xlink:href="foo/sundials.kml" xmlns:xlink="http://www.w3.org/1999/xlink"/></Server></Layer></ResourceList></OWSContext>';
         t.xml_eq(output, expected, "OWSContext with a WMS and a KML vector layer generated correctly");
     }
 

Modified: sandbox/bartvde/wps/openlayers/tests/Format/WMSCapabilities/v1_1_1.html
===================================================================
--- sandbox/bartvde/wps/openlayers/tests/Format/WMSCapabilities/v1_1_1.html	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/tests/Format/WMSCapabilities/v1_1_1.html	2011-05-20 10:58:55 UTC (rev 11983)
@@ -5,7 +5,7 @@
     
     function test_read(t) {
         
-        t.plan(15);
+        t.plan(17);
 
         var xml = document.getElementById("gssample").firstChild.nodeValue;
         var doc = new OpenLayers.Format.XML().read(xml);
@@ -22,6 +22,16 @@
             "http://publicus.opengeo.org:80/geoserver/wms?SERVICE=WMS&",
             "getmap href parsed"
         );
+        t.eq(
+            getmap.get.href,
+            getmap.href,
+            "getmap.get.href parsed"
+        );
+        t.eq(
+            getmap.post,
+            undefined,
+            "getmap.post not available"
+        );
         
         t.ok(capability.layers, "layers parsed");
         t.eq(capability.layers.length, 22, "correct number of layers parsed");
@@ -422,12 +432,16 @@
       <Format>image/jpeg</Format>
       <DCPType>
         <HTTP>
-
           <Get>
             <OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink"
              xlink:type="simple"
-             xlink:href="http://hostname:port/path" />
+             xlink:href="http://hostname:port/path/get" />
           </Get>
+          <Post>
+            <OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink"
+             xlink:type="simple"
+             xlink:href="http://hostname:port/path/post" />
+          </Post>
         </HTTP>
       </DCPType>
     </GetMap>

Modified: sandbox/bartvde/wps/openlayers/tests/Handler/Box.html
===================================================================
--- sandbox/bartvde/wps/openlayers/tests/Handler/Box.html	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/tests/Handler/Box.html	2011-05-20 10:58:55 UTC (rev 11983)
@@ -39,7 +39,7 @@
         map.div.removeChild(testdiv);
         var testAll = !isNaN(left);
 
-        t.plan(testAll ? 12 : 2);
+        t.plan(testAll ? 10 : 2);
 
         // we change NaN values to 0 values in the handler's
         // boxOffsets object, this is to prevent "invalid
@@ -58,14 +58,10 @@
         handler.dragHandler.start = {x: 5, y: 5};
         handler.startBox();
         offset = handler.getBoxOffsets();
+        handler.moveBox({x: 10, y: 10});
         if (testAll) {
             t.eq(parseInt(handler.zoomBox.style.left), 5 - offset.left, "x position of box correct");
             t.eq(parseInt(handler.zoomBox.style.top), 5 - offset.top, "y position of box correct");
-        }
-        handler.moveBox({x: 10, y: 10});
-        if (testAll) {
-            t.eq(parseInt(handler.zoomBox.style.left), 5 - offset.left, "x position of box still correct");
-            t.eq(parseInt(handler.zoomBox.style.top), 5 - offset.top, "y position of box still correct");
             t.eq(parseInt(handler.zoomBox.style.width), 5 + offset.width + 1, "x dimension of box correct");
             t.eq(parseInt(handler.zoomBox.style.height), 5 + offset.height + 1, "y dimension of box correct");
         }

Modified: sandbox/bartvde/wps/openlayers/tests/Handler/Feature.html
===================================================================
--- sandbox/bartvde/wps/openlayers/tests/Handler/Feature.html	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/tests/Handler/Feature.html	2011-05-20 10:58:55 UTC (rev 11983)
@@ -123,7 +123,7 @@
     }
 
     function test_callbacks(t) {
-        t.plan(13);
+        t.plan(14);
         
         var map = new OpenLayers.Map('map', {controls: []});
         var control = new OpenLayers.Control();
@@ -235,6 +235,12 @@
         evtPx.type = "touchstart";
         map.events.triggerEvent('touchstart', evtPx);
 
+        // test touchstart on the same feature
+        // 'click' callback should be called
+        callbacks['click'] = getCallback('click (touch)', newFeature);
+        evtPx.type = "touchstart";
+        map.events.triggerEvent('touchstart', evtPx);
+
         // test touchstart in new feature and out of last feature
         // both 'click' and 'clickout' callbacks should be called
         lastFeature = newFeature;
@@ -582,6 +588,64 @@
         t.eq(clicks, 0, "click callback does not trigger when tolerance is reached");
     }
 
+    function test_multitouch_canvas(t) {
+        var supported = OpenLayers.Renderer.Canvas.prototype.supported();
+        if (!supported) { t.plan(0); return; }
+
+        t.plan(1);
+
+        // set up
+
+        var log;
+
+        var map = new OpenLayers.Map('map');
+        var layer = new OpenLayers.Layer.Vector('vectors', {
+            renderers: ['Canvas'],
+            isBaseLayer: true
+        });
+        map.addLayer(layer);
+
+        var control = new OpenLayers.Control();
+        var handler = new OpenLayers.Handler.Feature(control, layer,
+                {click: function() { log++; }});
+        control.handler = handler;
+        map.addControl(control);
+        control.activate();
+
+        var feature = new OpenLayers.Feature.Vector(
+            new OpenLayers.Geometry.Point(0, 0));
+        layer.addFeatures(feature);
+
+        map.zoomToMaxExtent();
+
+        // test
+
+        // mock getMousePosition on the events object to make
+        // sure scrolls, offsets and leftop do not interfere
+        map.events.getMousePosition = function(evt) {
+            return new OpenLayers.Pixel(evt.clientX,
+                                        evt.clientY);
+        };
+
+        log = 0;
+        var evt = {
+            type: 'touchstart',
+            touches: [{
+                clientX: 100,
+                clientY: 75
+            }, {
+                clientX: 200,
+                clientY: 75
+            }]
+        };
+        map.events.handleBrowserEvent(evt);
+        t.eq(log, 0, "no feature selection when multi-touching");
+
+        // tear down
+
+        map.destroy();
+    }
+
   </script>
 </head>
 <body>

Modified: sandbox/bartvde/wps/openlayers/tests/Handler/Path.html
===================================================================
--- sandbox/bartvde/wps/openlayers/tests/Handler/Path.html	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/tests/Handler/Path.html	2011-05-20 10:58:55 UTC (rev 11983)
@@ -179,8 +179,7 @@
             }
         },
         {
-            pixelTolerance: 0,
-            dblclickTolerance: 0
+            pixelTolerance: 0
         });
         control.handler = handler;
         map.addControl(control);
@@ -577,10 +576,10 @@
     // added here each a non-working sequence is found.
     //
 
-    // stopDown:true, stopUp:true
+    // stopDown:true, stopUp:true, pixelTolerance:1
     // a) click on (0, 0)
-    // b) mousedown on (0.5, 0.5)
-    // c) mouseup on (1, 1)
+    // b) mousedown on (1, 1)
+    // c) mouseup on (2, 2)
     // d) dblclick on (10, 10)
     function test_sequence1(t) {
         t.plan(1);
@@ -595,7 +594,7 @@
         var control = new OpenLayers.Control({});
         var handler = new OpenLayers.Handler.Path(control,
             {done: function(g) { log.geometry = g; }},
-            {stopDown: true, stopUp: true}
+            {stopDown: true, stopUp: true, pixelTolerance: 1}
         );
         control.handler = handler;
         map.addControl(control);
@@ -611,16 +610,16 @@
             {type: "mousedown", xy: new OpenLayers.Pixel(0, 0)});
         handler.mouseup(
             {type: "mouseup", xy: new OpenLayers.Pixel(0, 0)});
-        // b) mousedown on (0.5, 0.5)
+        // b) mousedown on (1, 1)
         handler.mousemove(
-            {type: "mousemove", xy: new OpenLayers.Pixel(0.5, 0.5)});
+            {type: "mousemove", xy: new OpenLayers.Pixel(1, 1)});
         handler.mousedown(
-            {type: "mousedown", xy: new OpenLayers.Pixel(0.5, 0.5)});
-        // c) mouseup on (1, 1)
+            {type: "mousedown", xy: new OpenLayers.Pixel(1, 1)});
+        // c) mouseup on (2, 2)
         handler.mousemove(
-            {type: "mousemove", xy: new OpenLayers.Pixel(1, 1)});
+            {type: "mousemove", xy: new OpenLayers.Pixel(2, 2)});
         handler.mouseup(
-            {type: "mouseup", xy: new OpenLayers.Pixel(1, 1)});
+            {type: "mouseup", xy: new OpenLayers.Pixel(2, 2)});
         // d) dblclick on (10, 10)
         handler.mousemove(
             {type: "mousemove", xy: new OpenLayers.Pixel(10, 10)});
@@ -637,10 +636,10 @@
             ]), "geometry is correct");
     }
 
-    // stopDown:false, stopUp:false
+    // stopDown:false, stopUp:false, pixelTolerance:1
     // a) click on (0, 0)
-    // b) mousedown on (0.5, 0.5)
-    // c) mouseup on (1, 1)
+    // b) mousedown on (1, 1)
+    // c) mouseup on (2, 2)
     // d) dblclick on (10, 10)
     function test_sequence2(t) {
         t.plan(1);
@@ -655,7 +654,7 @@
         var control = new OpenLayers.Control({});
         var handler = new OpenLayers.Handler.Path(control,
             {done: function(g) { log.geometry = g; }},
-            {stopDown: false, stopUp: false}
+            {stopDown: false, stopUp: false, pixelTolerance: 1}
         );
         control.handler = handler;
         map.addControl(control);
@@ -671,16 +670,16 @@
             {type: "mousedown", xy: new OpenLayers.Pixel(0, 0)});
         handler.mouseup(
             {type: "mouseup", xy: new OpenLayers.Pixel(0, 0)});
-        // b) mousedown on (0.5, 0.5)
+        // b) mousedown on (1, 1)
         handler.mousemove(
-            {type: "mousemove", xy: new OpenLayers.Pixel(0.5, 0.5)});
+            {type: "mousemove", xy: new OpenLayers.Pixel(1, 1)});
         handler.mousedown(
-            {type: "mousedown", xy: new OpenLayers.Pixel(0.5, 0.5)});
-        // c) mouseup on (1, 1)
+            {type: "mousedown", xy: new OpenLayers.Pixel(1, 1)});
+        // c) mouseup on (2, 2)
         handler.mousemove(
-            {type: "mousemove", xy: new OpenLayers.Pixel(1, 1)});
+            {type: "mousemove", xy: new OpenLayers.Pixel(2, 2)});
         handler.mouseup(
-            {type: "mouseup", xy: new OpenLayers.Pixel(1, 1)});
+            {type: "mouseup", xy: new OpenLayers.Pixel(2, 2)});
         // d) dblclick on (10, 10)
         handler.mousemove(
             {type: "mousemove", xy: new OpenLayers.Pixel(10, 10)});
@@ -714,8 +713,7 @@
         var control = new OpenLayers.Control({});
         var handler = new OpenLayers.Handler.Path(control, {},
         {
-            pixelTolerance: 0,
-            dblclickTolerance: 0
+            pixelTolerance: 0
         });
         control.handler = handler;
         map.addControl(control);
@@ -819,7 +817,7 @@
     // a) tap
     // c) doubletap
     function test_touch_sequence1(t) {
-        t.plan(17);
+        t.plan(19);
 
         // set up
 
@@ -841,7 +839,7 @@
                 log = {type: 'modify', geometry: g, feature: f};
             }
         }, {
-            dblclickTolerance: 2
+            doubleTouchTolerance: 2
         });
         control.handler = handler;
         map.addControl(control);
@@ -888,6 +886,10 @@
                 new OpenLayers.Geometry.Point(-149, 75),  // (1, 0)
                 new OpenLayers.Geometry.Point(-140, 65)   // (10, 10)
             ]), "[touchstart] final geometry is correct");
+        log = null;
+        ret = handler.touchend({});
+        t.ok(ret, '[touchend] event propagates');
+        t.eq(log, null, '[touchend] feature not finalized or modified');
 
         // tear down
 
@@ -898,7 +900,7 @@
     // b) tap-move
     // c) doubletap
     function test_touch_sequence2(t) {
-        t.plan(23);
+        t.plan(25);
 
         // set up
 
@@ -920,7 +922,7 @@
                 log = {type: 'modify', geometry: g, feature: f};
             }
         }, {
-            dblclickTolerance: 2
+            doubleTouchTolerance: 2
         });
         control.handler = handler;
         map.addControl(control);
@@ -979,6 +981,10 @@
                 new OpenLayers.Geometry.Point(-149, 75),  // (1, 0)
                 new OpenLayers.Geometry.Point(-140, 65)   // (10, 10)
             ]), "[touchstart] final geometry is correct");
+        log = null;
+        ret = handler.touchend({});
+        t.ok(ret, '[touchend] event propagates');
+        t.eq(log, null, '[touchend] feature not finalized or modified');
 
         // tear down
 

Modified: sandbox/bartvde/wps/openlayers/tests/Handler/Polygon.html
===================================================================
--- sandbox/bartvde/wps/openlayers/tests/Handler/Polygon.html	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/tests/Handler/Polygon.html	2011-05-20 10:58:55 UTC (rev 11983)
@@ -170,8 +170,7 @@
             }
         },
         {
-            pixelTolerance: 0,
-            dblclickTolerance: 0
+            pixelTolerance: 0
         });
         control.handler = handler;
         map.addControl(control);
@@ -563,8 +562,7 @@
             OpenLayers.Handler.Polygon,
             {handlerOptions: {
                 holeModifier: "altKey",
-                pixelTolerance: 0,
-                dblclickTolerance: 0
+                pixelTolerance: 0
             }}
         );
         map.addControl(draw);
@@ -780,7 +778,7 @@
         var handler = new OpenLayers.Handler.Polygon(control,
             {done: function(g) { log.geometry = g; }},
             {stopDown: true, stopUp: true,
-            pixelTolerance: 0, dblclickTolerance: 0}
+            pixelTolerance: 0}
         );
         control.handler = handler;
         map.addControl(control);
@@ -852,7 +850,7 @@
         var handler = new OpenLayers.Handler.Polygon(control,
             {done: function(g) { log.geometry = g; }},
             {stopDown: false, stopUp: false,
-            pixelTolerance: 0, dblclickTolerance: 0}
+            pixelTolerance: 0}
         );
         control.handler = handler;
         map.addControl(control);
@@ -908,7 +906,7 @@
     // b) tap
     // c) doubletap
     function test_touch_sequence1(t) {
-        t.plan(24);
+        t.plan(26);
 
         // set up
 
@@ -930,7 +928,7 @@
                 log = {type: 'modify', geometry: g, feature: f};
             }
         }, {
-            dblclickTolerance: 2
+            doubleTouchTolerance: 2
         });
         control.handler = handler;
         map.addControl(control);
@@ -994,6 +992,10 @@
                     new OpenLayers.Geometry.Point(-140, 65)  // (10, 10)
                 ])
             ]), "[touchstart] geometry is correct");
+        log = null;
+        ret = handler.touchend({});
+        t.ok(ret, '[touchend] event propagates');
+        t.eq(log, null, '[touchend] feature not finalized or modified');
 
         // tear down
 
@@ -1005,7 +1007,7 @@
     // c) tap
     // d) doubletap
     function test_touch_sequence2(t) {
-        t.plan(30);
+        t.plan(32);
 
         // set up
 
@@ -1027,7 +1029,7 @@
                 log = {type: 'modify', geometry: g, feature: f};
             }
         }, {
-            dblclickTolerance: 2
+            doubleTouchTolerance: 2
         });
         control.handler = handler;
         map.addControl(control);
@@ -1103,6 +1105,10 @@
                     new OpenLayers.Geometry.Point(-140, 65)  // (10, 10)
                 ])
             ]), "[touchstart] geometry is correct");
+        log = null;
+        ret = handler.touchend({});
+        t.ok(ret, '[touchend] event propagates');
+        t.eq(log, null, '[touchend] feature not finalized or modified');
 
         // tear down
 

Modified: sandbox/bartvde/wps/openlayers/tests/Layer/Vector.html
===================================================================
--- sandbox/bartvde/wps/openlayers/tests/Layer/Vector.html	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/tests/Layer/Vector.html	2011-05-20 10:58:55 UTC (rev 11983)
@@ -685,9 +685,12 @@
                              "given graphicHeight and graphicWidth, both are set: width");
                 feature.style = customStyle5;
                 layer.drawFeature(feature);
-                t.eq(root.firstChild.getAttributeNS(null, 'style'),
-                             'opacity: '+customStyle5.graphicOpacity.toString()+((OpenLayers.BROWSER_NAME == "opera" || OpenLayers.BROWSER_NAME == "safari") ? "" : ';'),
-                             "graphicOpacity correctly set");
+                // we use startsWith here as some browsers (at least Safari 3 and FireFox 4)
+                // do not append a semi-colon to the opacity string
+                t.ok(OpenLayers.String.startsWith(
+                            root.firstChild.getAttributeNS(null, 'style'),
+                            "opacity: " + customStyle5.graphicOpacity.toString()),
+                     "graphicOpacity correctly set");
                 feature.style = customStyle6;
                 layer.drawFeature(feature);
                 var x = geometryX / renderer.getResolution() + renderer.left;

Modified: sandbox/bartvde/wps/openlayers/tests/Layer/WrapDateLine.html
===================================================================
--- sandbox/bartvde/wps/openlayers/tests/Layer/WrapDateLine.html	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/tests/Layer/WrapDateLine.html	2011-05-20 10:58:55 UTC (rev 11983)
@@ -134,9 +134,9 @@
         var m = new OpenLayers.Map('map');
         m.addLayer(layer);
         m.zoomToMaxExtent();
-        t.eq(layer.grid[3][0].url, "http://octo.metacarta.com/cgi-bin/mapserv?MAP=%2Fmapdata%2Fvmap_wms.map&LAYERS=basic&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=0%2C-90%2C180%2C90&WIDTH=256&HEIGHT=256", "cell [3][0] is wrapped around the world.");
-        t.eq(layer.grid[0][0].url, "http://octo.metacarta.com/cgi-bin/mapserv?MAP=%2Fmapdata%2Fvmap_wms.map&LAYERS=basic&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=0%2C450%2C180%2C630&WIDTH=256&HEIGHT=256", "cell [0][0] is wrapped around the world lon, but not lat");
-        t.eq(layer.grid[0][3].url, "http://octo.metacarta.com/cgi-bin/mapserv?MAP=%2Fmapdata%2Fvmap_wms.map&LAYERS=basic&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=-180%2C450%2C0%2C630&WIDTH=256&HEIGHT=256", "cell [3][0] is not wrapped at all.");
+        t.eq(layer.grid[3][0].url, "http://octo.metacarta.com/cgi-bin/mapserv?MAP=%2Fmapdata%2Fvmap_wms.map&LAYERS=basic&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&SRS=EPSG%3A4326&BBOX=0%2C-90%2C180%2C90&WIDTH=256&HEIGHT=256", "cell [3][0] is wrapped around the world.");
+        t.eq(layer.grid[0][0].url, "http://octo.metacarta.com/cgi-bin/mapserv?MAP=%2Fmapdata%2Fvmap_wms.map&LAYERS=basic&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&SRS=EPSG%3A4326&BBOX=0%2C450%2C180%2C630&WIDTH=256&HEIGHT=256", "cell [0][0] is wrapped around the world lon, but not lat");
+        t.eq(layer.grid[0][3].url, "http://octo.metacarta.com/cgi-bin/mapserv?MAP=%2Fmapdata%2Fvmap_wms.map&LAYERS=basic&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&SRS=EPSG%3A4326&BBOX=-180%2C450%2C0%2C630&WIDTH=256&HEIGHT=256", "cell [3][0] is not wrapped at all.");
         m.destroy();
 
     }
@@ -168,9 +168,9 @@
         var m = new OpenLayers.Map('map');
         m.addLayers([baselayer,layer]);
         m.zoomToMaxExtent();
-        t.eq(layer.grid[0][0].url, "http://www2.dmsolutions.ca/cgi-bin/mswms_gmap?LAYERS=bathymetry%2Cland_fn%2Cpark%2Cdrain_fn%2Cdrainage%2Cprov_bound%2Cfedlimit%2Crail%2Croad%2Cpopplace&TRANSPARENT=true&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=0%2C450%2C180%2C630&WIDTH=256&HEIGHT=256", "grid[0][0] wms overlay is okay");
-        t.eq(layer.grid[0][3].url, "http://www2.dmsolutions.ca/cgi-bin/mswms_gmap?LAYERS=bathymetry%2Cland_fn%2Cpark%2Cdrain_fn%2Cdrainage%2Cprov_bound%2Cfedlimit%2Crail%2Croad%2Cpopplace&TRANSPARENT=true&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=-180%2C450%2C0%2C630&WIDTH=256&HEIGHT=256", "grid[0][3] wms overlay is okay");
-        t.eq(layer.grid[3][0].url, "http://www2.dmsolutions.ca/cgi-bin/mswms_gmap?LAYERS=bathymetry%2Cland_fn%2Cpark%2Cdrain_fn%2Cdrainage%2Cprov_bound%2Cfedlimit%2Crail%2Croad%2Cpopplace&TRANSPARENT=true&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&SRS=EPSG%3A4326&BBOX=0%2C-90%2C180%2C90&WIDTH=256&HEIGHT=256", "grid[3][0] wms overlay okay");
+        t.eq(layer.grid[0][0].url, "http://www2.dmsolutions.ca/cgi-bin/mswms_gmap?LAYERS=bathymetry%2Cland_fn%2Cpark%2Cdrain_fn%2Cdrainage%2Cprov_bound%2Cfedlimit%2Crail%2Croad%2Cpopplace&TRANSPARENT=true&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&SRS=EPSG%3A4326&BBOX=0%2C450%2C180%2C630&WIDTH=256&HEIGHT=256", "grid[0][0] wms overlay is okay");
+        t.eq(layer.grid[0][3].url, "http://www2.dmsolutions.ca/cgi-bin/mswms_gmap?LAYERS=bathymetry%2Cland_fn%2Cpark%2Cdrain_fn%2Cdrainage%2Cprov_bound%2Cfedlimit%2Crail%2Croad%2Cpopplace&TRANSPARENT=true&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&SRS=EPSG%3A4326&BBOX=-180%2C450%2C0%2C630&WIDTH=256&HEIGHT=256", "grid[0][3] wms overlay is okay");
+        t.eq(layer.grid[3][0].url, "http://www2.dmsolutions.ca/cgi-bin/mswms_gmap?LAYERS=bathymetry%2Cland_fn%2Cpark%2Cdrain_fn%2Cdrainage%2Cprov_bound%2Cfedlimit%2Crail%2Croad%2Cpopplace&TRANSPARENT=true&FORMAT=image%2Fpng&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&SRS=EPSG%3A4326&BBOX=0%2C-90%2C180%2C90&WIDTH=256&HEIGHT=256", "grid[3][0] wms overlay okay");
         m.destroy();
     }
 

Modified: sandbox/bartvde/wps/openlayers/tests/Renderer/Canvas.html
===================================================================
--- sandbox/bartvde/wps/openlayers/tests/Renderer/Canvas.html	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/tests/Renderer/Canvas.html	2011-05-20 10:58:55 UTC (rev 11983)
@@ -171,7 +171,7 @@
             {display: "none"}
         );
         t.eq(exp, false, "c) drawFeature returns false");
-        t.eq(count, 0, "c) redraw is not called when drawing a feature with display 'none'");
+        t.eq(count, 1, "c) redraw is called when drawing a feature with display 'none'");
         renderer.clear();
 
         // d) draw a point feature outside renderer extent
@@ -180,7 +180,7 @@
             new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(-1000, 0)), {}
         );
         t.eq(exp, false, "d) drawFeature returns false");
-        t.eq(count, 0, "d) redraw is not called when drawing a feature outside renderer extent");
+        t.eq(count, 1, "d) redraw is called when drawing a feature outside renderer extent");
         renderer.clear();
         
         map.destroy();

Modified: sandbox/bartvde/wps/openlayers/tests/Util.html
===================================================================
--- sandbox/bartvde/wps/openlayers/tests/Util.html	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/tests/Util.html	2011-05-20 10:58:55 UTC (rev 11983)
@@ -121,8 +121,9 @@
         var prop = (OpenLayers.BROWSER_NAME == 'safari') ? 'overflowX' : 'overflow';
         t.eq( div.style[prop], overflow, "div.style.overflow set correctly");    
         t.eq( parseFloat(div.style.opacity), opacity, "element.style.opacity set correctly");    
-        //Safari 3 returns null for this value, which is okay
-        var filterString = (OpenLayers.BROWSER_NAME == 'safari') ? null : 'alpha(opacity=' + (opacity * 100) + ')';
+        //Some non-IE browsers don't return the alpha string for this value, which is okay
+        var filterString = div.style.filter.match(/^alpha/) != null ? 
+                               'alpha(opacity=' + (opacity * 100) + ')' : div.style.filter;
         t.eq( div.style.filter, filterString, "element.style.filter set correctly");
 
         //test defaults
@@ -190,8 +191,9 @@
         t.eq( image.src, img, "image.style.backgroundImage correctly");    
         t.eq( image.style.position, position, "image.style.position set correctly");    
         t.eq( parseFloat(image.style.opacity), opacity, "image.style.opacity set correctly");    
-        //Safari 3 returns null for this value, which is okay
-        var filterString = (OpenLayers.BROWSER_NAME == 'safari') ? null : 'alpha(opacity=' + (opacity * 100) + ')';
+        //Some non-IE browsers don't return the alpha string for this value, which is okay
+        var filterString = image.style.filter.match(/^alpha/) != null ? 
+                               'alpha(opacity=' + (opacity * 100) + ')' : image.style.filter;
         t.eq( image.style.filter, filterString, "element.style.filter set correctly");
 
         //test defaults
@@ -381,8 +383,9 @@
         if (OpenLayers.Util.alphaHack()) {
             filterString = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://www.openlayers.org/images/OpenLayers.trac.png', sizingMethod='crop') alpha(opacity=50)";
         } else {
-            //Safari 3 returns null for this value, which is okay
-            var filterString = (OpenLayers.BROWSER_NAME == 'safari') ? null : 'alpha(opacity=' + (opacity * 100) + ')';
+            //Some non-IE browsers don't return the alpha string for this value, which is okay
+            var filterString = imageDiv.style.filter.match(/^alpha/) != null ? 
+                                   'alpha(opacity=' + (opacity * 100) + ')' : imageDiv.style.filter;
         }        
         t.eq( imageDiv.style.filter, filterString, "element.style.filter set correctly");
 
@@ -449,8 +452,9 @@
 
         t.eq(parseFloat(element.style.opacity), opacity, 
              "element.style.opacity set correctly when opacity = " + opacity);
-        //Safari 3 returns null for this value, which is okay
-        var filterString = (OpenLayers.BROWSER_NAME == 'safari') ? null : 'alpha(opacity=' + (opacity * 100) + ')';
+        //Some non-IE browsers don't return the alpha string for this value, which is okay
+        var filterString = element.style.filter.match(/^alpha/) != null ? 
+                               'alpha(opacity=' + (opacity * 100) + ')' : element.style.filter;
         t.eq(element.style.filter, filterString, 
              "element.style.filter set correctly when opacity = " + opacity);
 
@@ -459,8 +463,9 @@
     
         t.eq(parseFloat(element.style.opacity), opacity, 
              "element.style.opacity not changed if the value is incorrect");
-        //Safari 3 returns null for this value, which is okay
-        var filterString = (OpenLayers.BROWSER_NAME == 'safari') ? null : 'alpha(opacity=' + (opacity * 100) + ')';
+        //Some non-IE browsers don't return the alpha string for this value, which is okay
+        var filterString = element.style.filter.match(/^alpha/) != null ? 
+                               'alpha(opacity=' + (opacity * 100) + ')' : element.style.filter;
         t.eq(element.style.filter, filterString, 
              "element.style.filter not changed if the value is incorrect");
 
@@ -469,8 +474,9 @@
     
         t.eq(parseFloat(element.style.opacity), opacity, 
              "element.style.opacity not changed if the value is incorrect");
-        //Safari 3 returns null for this value, which is okay
-        var filterString = (OpenLayers.BROWSER_NAME == 'safari') ? null : 'alpha(opacity=' + (opacity * 100) + ')';
+        //Some non-IE browsers don't return the alpha string for this value, which is okay
+        var filterString = element.style.filter.match(/^alpha/) != null ? 
+                               'alpha(opacity=' + (opacity * 100) + ')' : element.style.filter;
         t.eq(element.style.filter, filterString, 
              "element.style.filter not changed if the value is incorrect");
 
@@ -521,8 +527,9 @@
         var prop = (OpenLayers.BROWSER_NAME == 'safari') ? 'overflowX' : 'overflow';
         t.eq( element.style[prop], overflow, "element.style.overflow set correctly");    
         t.eq( parseFloat(element.style.opacity), opacity, "element.style.opacity set correctly");    
-        //Safari 3 returns null for this value, which is okay
-        var filterString = (OpenLayers.BROWSER_NAME == 'safari') ? null : 'alpha(opacity=' + (opacity * 100) + ')';
+        //Some non-IE browsers don't return the alpha string for this value, which is okay
+        var filterString = element.style.filter.match(/^alpha/) != null ? 
+                               'alpha(opacity=' + (opacity * 100) + ')' : element.style.filter;
         t.eq( element.style.filter, filterString, "element.style.filter set correctly");
     }
 
@@ -565,8 +572,9 @@
             filterString = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://www.openlayers.org/images/OpenLayers.trac.png', sizingMethod='crop') alpha(opacity=50)";
             t.ok( true, "skipping element test outside of Mozilla");
         } else {
-            //Safari 3 returns null for this value, which is okay
-            var filterString = (OpenLayers.BROWSER_NAME == 'safari') ? null : 'alpha(opacity=' + (opacity * 100) + ')';
+            //Some non-IE browsers don't return the alpha string for this value, which is okay
+            var filterString = imageDiv.style.filter.match(/^alpha/) != null ? 
+                                   'alpha(opacity=' + (opacity * 100) + ')' : imageDiv.style.filter;
             t.ok( image.nodeName == "IMG", "createImage creates a valid HTMLImageElement" );
         }
         t.eq( imageDiv.style.filter, filterString, "element.style.filter set correctly");

Modified: sandbox/bartvde/wps/openlayers/tests/list-tests.html
===================================================================
--- sandbox/bartvde/wps/openlayers/tests/list-tests.html	2011-05-20 10:50:29 UTC (rev 11982)
+++ sandbox/bartvde/wps/openlayers/tests/list-tests.html	2011-05-20 10:58:55 UTC (rev 11983)
@@ -15,6 +15,7 @@
     <li>Control/DragFeature.html</li>
     <li>Control/DragPan.html</li>
     <li>Control/DrawFeature.html</li>
+    <li>Control/EditingToolbar.html</li>
     <li>Control/Geolocate.html</li>
     <li>Control/GetFeature.html</li>
     <li>Control/Graticule.html</li>



More information about the Commits mailing list