[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