[Commits] r1909 - in core/trunk/geoext: lib/GeoExt/data tests/lib/GeoExt/data

commits at geoext.org commits at geoext.org
Mon Feb 22 17:21:03 CET 2010


Author: ahocevar
Date: 2010-02-22 17:21:02 +0100 (Mon, 22 Feb 2010)
New Revision: 1909

Modified:
   core/trunk/geoext/lib/GeoExt/data/PrintProvider.js
   core/trunk/geoext/tests/lib/GeoExt/data/PrintProvider.html
Log:
added beforeencodelayer and encodelayer events to PrintProvider. Thanks bartvde for the initial patch. r=bartvde,me (closes #228)

Modified: core/trunk/geoext/lib/GeoExt/data/PrintProvider.js
===================================================================
--- core/trunk/geoext/lib/GeoExt/data/PrintProvider.js	2010-02-18 14:05:40 UTC (rev 1908)
+++ core/trunk/geoext/lib/GeoExt/data/PrintProvider.js	2010-02-22 16:21:02 UTC (rev 1909)
@@ -222,7 +222,36 @@
              *    PrintProvider
              *  * url - ``String`` the url of the print document
              */
-            "print"
+            "print",
+
+            /** api: events[beforeencodelayer]
+             *  Triggered before a layer is encoded. This can be used to
+             *  exclude layers from the printing, by having the listener
+             *  return false.
+             *
+             *  Listener arguments:
+             *  * printProvider - :class:`GeoExt.data.PrintProvider` this
+             *    PrintProvider
+             *  * layer - ``OpenLayers.Layer`` the layer which is about to be 
+             *    encoded.
+             */
+            "beforeencodelayer",
+            
+            /** api: events[encodelayer]
+             *  Triggered when a layer is encoded. This can be used to modify
+             *  the encoded low-level layer object that will be sent to the
+             *  print service.
+             *  
+             *  Listener arguments:
+             *  * printProvider - :class:`GeoExt.data.PrintProvider` this
+             *    PrintProvider
+             *  * layer - ``OpenLayers.Layer`` the layer which is about to be 
+             *    encoded.
+             *  * encodedLayer - ``Object`` the encoded layer that will be
+             *    sent to the print service.
+             */
+            "encodelayer"
+
         );
         
         GeoExt.data.PrintProvider.superclass.constructor.apply(this, arguments);
@@ -430,7 +459,11 @@
         var encLayer;
         for(var c in this.encoders.layers) {
             if(OpenLayers.Layer[c] && layer instanceof OpenLayers.Layer[c]) {
+                if(this.fireEvent("beforeencodelayer", this, layer) === false) {
+                    return;
+                }
                 encLayer = this.encoders.layers[c].call(this, layer);
+                this.fireEvent("encodelayer", this, layer, encLayer);
                 break;
             }
         }

Modified: core/trunk/geoext/tests/lib/GeoExt/data/PrintProvider.html
===================================================================
--- core/trunk/geoext/tests/lib/GeoExt/data/PrintProvider.html	2010-02-18 14:05:40 UTC (rev 1908)
+++ core/trunk/geoext/tests/lib/GeoExt/data/PrintProvider.html	2010-02-22 16:21:02 UTC (rev 1909)
@@ -90,6 +90,16 @@
                 listeners: {
                     "dpichange": function() {
                         log.dpichange = arguments;
+                    },
+                    "beforeencodelayer": function(provider, layer) {
+                        return layer.name !== "don't print me";
+                    },
+                    "encodelayer": function(provider, layer, encodedLayer) {
+                        if (layer instanceof OpenLayers.Layer.WMS) {
+                            encodedLayer.customParams = Ext.apply({
+                                map_resolution: 150
+                            }, encodedLayer.customParams);
+                        }
                     }
                 }
             });
@@ -98,7 +108,7 @@
                 customParams: {mapTitle: "foo", comment: "bar"}
             });
             var map = new OpenLayers.Map("map");
-            
+
             // layers to test all supported layer encoders
             var layers = [
                 new OpenLayers.Layer.WMS("wms", "http://demo.opengeo.org/geoserver/wms", {
@@ -128,10 +138,15 @@
                     new OpenLayers.Size(580, 288),
                     {numZoomLevels: 3, isBaseLayer: false}
                 ),
-                new OpenLayers.Layer.Vector("vector")
+                new OpenLayers.Layer.Vector("vector"),
+                new OpenLayers.Layer.WMS("don't print me", "http://demo.opengeo.org/geoserver/wms",
+                    {layers: "tasmania", transparent: true}, {
+                        displayInLayerSwitcher: false,
+                        isBaseLayer: false
+                    })
             ];
             map.addLayers(layers);
-            
+
             // give the vector layer a feature
             var feature = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(1,2));
             feature.id = "f1";
@@ -170,7 +185,7 @@
             printProvider.print(map, [printPage], {overview: overview, legend: legend});
             Ext.Ajax.request = origRequest;
             
-            var expect = {"units":"degrees","srs":"EPSG:4326","layout":"A4 portrait","dpi":75,"layers":[{"baseURL":"http://demo.opengeo.org/geoserver/wms","opacity":1,"singleTile":false,"type":"WMS","layers":["topp:tasmania_state_boundaries","topp:tasmania_water_bodies"],"format":"image/gif","styles":[""],"customParams":{"VENDORFOO":"bar"}},{"baseURL":"http://c0.labs.metacarta.com/wms-c/cache/","opacity":1,"singleTile":false,"type":"TileCache","layer":"basic","maxExtent":[-180,-90,180,90],"tileSize":[256,256],"extension":"png","resolutions":[0.703125,0.3515625,0.17578125,0.087890625,0.0439453125,0.02197265625,0.010986328125,0.0054931640625,0.00274658203125,0.001373291015625,0.0006866455078125,0.00034332275390625,0.000171661376953125,0.0000858306884765625,0.00004291534423828125,0.000021457672119140625]},{"type":"Image","baseURL":"http://earthtrends.wri.org/images/maps/4_m_citylights_lg.gif","opacity":1,"extent":[-180,-88.759,180,88.759],"pixelSize":[580,288],"name":"image"},{"type":"Vector","styles":{"1":{"fillColor":"#ee9900","fillOpacity":0.4,"hoverFillColor":"white","hoverFillOpacity":0.8,"strokeColor":"#ee9900","strokeOpacity":1,"strokeWidth":1,"strokeLinecap":"round","strokeDashstyle":"solid","hoverStrokeColor":"red","hoverStrokeOpacity":1,"hoverStrokeWidth":0.2,"pointRadius":6,"hoverPointRadius":1,"hoverPointUnit":"%","pointerEvents":"visiblePainted","cursor":"inherit"}},"styleProperty":"_gx_style","geoJson":{"type":"FeatureCollection","features":[{"type":"Feature","id":"f1","properties":{"_gx_style":1},"geometry":{"type":"Point","coordinates":[1,2]}}]},"name":"vector","opacity":1}],"pages":[{"mapTitle":"foo","comment":"bar","center":[1,2],"scale":4000000,"rotation":0}],"customParam":"foo","legends":[{"name":"tilecache","classes":[{"name":"","icon":"http://trac.geoext.org/chrome/site/img/GeoExt.png"}]},{"name":"wms","classes":[{"name":"","icons":["http://demo.opengeo.org/geoserver/wms?FORMAT=image%2Fgif&VENDORFOO=bar&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetLegendGraphic&EXCEPTIONS=application%2Fvnd.ogc.se_xml&LAYER=topp%3Atasmania_state_boundaries","http://demo.opengeo.org/geoserver/wms?FORMAT=image%2Fgif&VENDORFOO=bar&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetLegendGraphic&EXCEPTIONS=application%2Fvnd.ogc.se_xml&LAYER=topp%3Atasmania_water_bodies"]}]}],"overviewLayers":[{"baseURL":"http://foo/","format":"image/jpeg",layers:["mylayer"],"opacity":1,"singleTile":false,styles:[""],type:"WMS"}]
+            var expect = {"units":"degrees","srs":"EPSG:4326","layout":"A4 portrait","dpi":75,"layers":[{"baseURL":"http://demo.opengeo.org/geoserver/wms","opacity":1,"singleTile":false,"type":"WMS","layers":["topp:tasmania_state_boundaries","topp:tasmania_water_bodies"],"format":"image/gif","styles":[""],"customParams":{"VENDORFOO":"bar", "map_resolution": 150}},{"baseURL":"http://c0.labs.metacarta.com/wms-c/cache/","opacity":1,"singleTile":false,"type":"TileCache","layer":"basic","maxExtent":[-180,-90,180,90],"tileSize":[256,256],"extension":"png","resolutions":[0.703125,0.3515625,0.17578125,0.087890625,0.0439453125,0.02197265625,0.010986328125,0.0054931640625,0.00274658203125,0.001373291015625,0.0006866455078125,0.00034332275390625,0.000171661376953125,0.0000858306884765625,0.00004291534423828125,0.000021457672119140625]},{"type":"Image","baseURL":"http://earthtrends.wri.org/images/maps/4_m_citylights_lg.gif","opacity":1,"extent":[-180,-88.759,180,88.759],"pixelSize":[580,288],"name":"image"},{"type":"Vector","styles":{"1":{"fillColor":"#ee9900","fillOpacity":0.4,"hoverFillColor":"white","hoverFillOpacity":0.8,"strokeColor":"#ee9900","strokeOpacity":1,"strokeWidth":1,"strokeLinecap":"round","strokeDashstyle":"solid","hoverStrokeColor":"red","hoverStrokeOpacity":1,"hoverStrokeWidth":0.2,"pointRadius":6,"hoverPointRadius":1,"hoverPointUnit":"%","pointerEvents":"visiblePainted","cursor":"inherit"}},"styleProperty":"_gx_style","geoJson":{"type":"FeatureCollection","features":[{"type":"Feature","id":"f1","properties":{"_gx_style":1},"geometry":{"type":"Point","coordinates":[1,2]}}]},"name":"vector","opacity":1}],"pages":[{"mapTitle":"foo","comment":"bar","center":[1,2],"scale":4000000,"rotation":0}],"customParam":"foo","legends":[{"name":"tilecache","classes":[{"name":"","icon":"http://trac.geoext.org/chrome/site/img/GeoExt.png"}]},{"name":"wms","classes":[{"name":"","icons":["http://demo.opengeo.org/geoserver/wms?FORMAT=image%2Fgif&VENDORFOO=bar&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetLegendGraphic&EXCEPTIONS=application%2Fvnd.ogc.se_xml&LAYER=topp%3Atasmania_state_boundaries","http://demo.opengeo.org/geoserver/wms?FORMAT=image%2Fgif&VENDORFOO=bar&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetLegendGraphic&EXCEPTIONS=application%2Fvnd.ogc.se_xml&LAYER=topp%3Atasmania_water_bodies"]}]}],"overviewLayers":[{"baseURL":"http://foo/","format":"image/jpeg",layers:["mylayer"],"opacity":1,"singleTile":false,styles:[""],type:"WMS", "customParams": {"map_resolution": 150}}]
 };
 
             t.eq(log.request.jsonData, expect, "Request with encoded layers and legend is correct.");



More information about the Commits mailing list