[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