[Commits] r2400 - in core/trunk/geoext: lib/GeoExt/plugins tests/lib/GeoExt/plugins
commits at geoext.org
commits at geoext.org
Thu Sep 23 13:55:10 CEST 2010
Author: ahocevar
Date: 2010-09-23 13:55:10 +0200 (Thu, 23 Sep 2010)
New Revision: 2400
Modified:
core/trunk/geoext/lib/GeoExt/plugins/PrintPageField.js
core/trunk/geoext/lib/GeoExt/plugins/PrintProviderField.js
core/trunk/geoext/tests/lib/GeoExt/plugins/PrintPageField.html
core/trunk/geoext/tests/lib/GeoExt/plugins/PrintProviderField.html
Log:
Perform destroy action in an onBeforeDestroy listener. r=elemoine (closes #334)
Modified: core/trunk/geoext/lib/GeoExt/plugins/PrintPageField.js
===================================================================
--- core/trunk/geoext/lib/GeoExt/plugins/PrintPageField.js 2010-09-23 11:01:47 UTC (rev 2399)
+++ core/trunk/geoext/lib/GeoExt/plugins/PrintPageField.js 2010-09-23 11:55:10 UTC (rev 2400)
@@ -101,7 +101,10 @@
*/
init: function(target) {
this.target = target;
- var onCfg = {scope: this};
+ var onCfg = {
+ "beforedestroy": this.onBeforeDestroy,
+ scope: this
+ };
var eventName = target instanceof Ext.form.ComboBox ?
"select" : target instanceof Ext.form.Checkbox ?
"check" : "valid";
@@ -179,9 +182,10 @@
t.resumeEvents();
},
- /** private: method[destroy]
+ /** private: method[onBeforeDestroy]
*/
- destroy: function() {
+ onBeforeDestroy: function() {
+ this.target.un("beforedestroy", this.onBeforeDestroy, this);
this.target.un("select", this.onFieldChange, this);
this.target.un("valid", this.onFieldChange, this);
this.printPage.un("change", this.onPageChange, this);
Modified: core/trunk/geoext/lib/GeoExt/plugins/PrintProviderField.js
===================================================================
--- core/trunk/geoext/lib/GeoExt/plugins/PrintProviderField.js 2010-09-23 11:01:47 UTC (rev 2399)
+++ core/trunk/geoext/lib/GeoExt/plugins/PrintProviderField.js 2010-09-23 11:55:10 UTC (rev 2400)
@@ -101,7 +101,8 @@
this.target = target;
var onCfg = {
scope: this,
- "render": this.onRender
+ "render": this.onRender,
+ "beforedestroy": this.onBeforeDestroy
};
onCfg[target instanceof Ext.form.ComboBox ? "select" : "valid"] =
this.onFieldChange;
@@ -168,9 +169,10 @@
}
},
- /** private: method[destroy]
+ /** private: method[onBeforeDestroy]
*/
- destroy: function() {
+ onBeforeDestroy: function() {
+ this.target.un("beforedestroy", this.onBeforeDestroy, this);
this.target.un("render", this.onRender, this);
this.target.un("select", this.onFieldChange, this);
this.target.un("valid", this.onFieldChange, this);
Modified: core/trunk/geoext/tests/lib/GeoExt/plugins/PrintPageField.html
===================================================================
--- core/trunk/geoext/tests/lib/GeoExt/plugins/PrintPageField.html 2010-09-23 11:01:47 UTC (rev 2399)
+++ core/trunk/geoext/tests/lib/GeoExt/plugins/PrintPageField.html 2010-09-23 11:55:10 UTC (rev 2400)
@@ -9,8 +9,8 @@
<script type="text/javascript">
var printCapabilities = {"scales":[{"name":"1:25,000","value":"25000"},{"name":"1:50,000","value":"50000"},{"name":"1:100,000","value":"100000"},{"name":"1:200,000","value":"200000"},{"name":"1:500,000","value":"500000"},{"name":"1:1,000,000","value":"1000000"},{"name":"1:2,000,000","value":"2000000"},{"name":"1:4,000,000","value":"4000000"}],"dpis":[{"name":"75","value":"75"},{"name":"150","value":"150"},{"name":"300","value":"300"}],"layouts":[{"name":"A4 portrait","map":{"width":440,"height":483},"rotation":true},{"name":"Legal","map":{"width":440,"height":483},"rotation":false}],"printURL":"http://demo.opengeo.org/geoserver/pdf/print.pdf","createURL":"http://demo.opengeo.org/geoserver/pdf/create.json"};
- function test_init(t){
- t.plan(1);
+ function test_init_destroy(t){
+ t.plan(3);
var log = {};
var printPage = new GeoExt.data.PrintPage({
@@ -19,7 +19,10 @@
})
});
var plugin = new GeoExt.plugins.PrintPageField({
- printPage: printPage
+ printPage: printPage,
+ onPageChange: function(arg) {
+ log.onPageChange = arg;
+ }
});
var field = {
@@ -32,6 +35,18 @@
plugin.init(field);
t.ok(log.on["valid"] === plugin.onFieldChange, "onFieldChange handler set correctly.");
+
+ field = new Ext.form.Field({
+ name: "scale",
+ plugins: plugin,
+ renderTo: document.body
+ });
+ printPage.fireEvent("change", "foo");
+ t.eq(log.onPageChange, "foo", "onPageChange called on page's change event.");
+ delete log.onPageChange;
+ field.destroy();
+ printPage.fireEvent("change", "bar");
+ t.eq(log.onPageChange, undefined, "onPageChanged not called after field is destroyed.");
}
function test_init__scales_field(t){
Modified: core/trunk/geoext/tests/lib/GeoExt/plugins/PrintProviderField.html
===================================================================
--- core/trunk/geoext/tests/lib/GeoExt/plugins/PrintProviderField.html 2010-09-23 11:01:47 UTC (rev 2399)
+++ core/trunk/geoext/tests/lib/GeoExt/plugins/PrintProviderField.html 2010-09-23 11:55:10 UTC (rev 2400)
@@ -9,15 +9,18 @@
<script type="text/javascript">
var printCapabilities = {"scales":[{"name":"1:25,000","value":"25000"},{"name":"1:50,000","value":"50000"},{"name":"1:100,000","value":"100000"},{"name":"1:200,000","value":"200000"},{"name":"1:500,000","value":"500000"},{"name":"1:1,000,000","value":"1000000"},{"name":"1:2,000,000","value":"2000000"},{"name":"1:4,000,000","value":"4000000"}],"dpis":[{"name":"75","value":"75"},{"name":"150","value":"150"},{"name":"300","value":"300"}],"layouts":[{"name":"A4 portrait","map":{"width":440,"height":483},"rotation":true},{"name":"Legal","map":{"width":440,"height":483},"rotation":false}],"printURL":"http://demo.opengeo.org/geoserver/pdf/print.pdf","createURL":"http://demo.opengeo.org/geoserver/pdf/create.json"};
- function test_init(t){
- t.plan(2);
+ function test_init_destroy(t){
+ t.plan(4);
var log = {};
var printProvider = new GeoExt.data.PrintProvider({
capabilities: printCapabilities
});
var plugin = new GeoExt.plugins.PrintProviderField({
- printProvider: printProvider
+ printProvider: printProvider,
+ onProviderChange: function(arg) {
+ log.onProviderChange = arg;
+ }
});
var field = {
@@ -29,6 +32,18 @@
t.ok(log.on["valid"] === plugin.onFieldChange, "onFieldChange handler set correctly.");
t.ok(log.on["render"] === plugin.onRender, "onRender handler set correctly.");
+
+ field = new Ext.form.Field({
+ store: printProvider.layouts,
+ plugins: plugin,
+ renderTo: document.body
+ });
+ printProvider.fireEvent("layoutchange", "foo");
+ t.eq(log.onProviderChange, "foo", "onProviderChange called on layoutchange.");
+ delete log.onProviderChange;
+ field.destroy();
+ printProvider.fireEvent("layoutchange", "bar");
+ t.eq(log.onProviderChange, undefined, "onProviderChange not called after field is destroyed.");
}
function test_render(t) {
More information about the Commits
mailing list