[Commits] r2481 - in core/trunk/geoext: lib/GeoExt/widgets tests/lib/GeoExt/widgets

commits at geoext.org commits at geoext.org
Wed Nov 17 12:08:56 CET 2010


Author: fredj
Date: 2010-11-17 12:08:56 +0100 (Wed, 17 Nov 2010)
New Revision: 2481

Modified:
   core/trunk/geoext/lib/GeoExt/widgets/MapPanel.js
   core/trunk/geoext/tests/lib/GeoExt/widgets/MapPanel.html
Log:
Save the MapPanel state after a layer is added or removed from the
OpenLayers.Map. r=elemoine (closes #372)


Modified: core/trunk/geoext/lib/GeoExt/widgets/MapPanel.js
===================================================================
--- core/trunk/geoext/lib/GeoExt/widgets/MapPanel.js	2010-11-16 16:55:43 UTC (rev 2480)
+++ core/trunk/geoext/lib/GeoExt/widgets/MapPanel.js	2010-11-17 11:08:56 UTC (rev 2481)
@@ -106,7 +106,9 @@
      */
     stateEvents: ["aftermapmove",
                   "afterlayervisibilitychange",
-                  "afterlayeropacitychange"],
+                  "afterlayeropacitychange",
+                  "afterlayeradd",
+                  "afterlayerremove"],
 
     /** private: method[initComponent]
      *  Initializes the map panel. Creates an OpenLayers map if
@@ -154,11 +156,23 @@
             /** private: event[afterlayeropacitychange]
              *  Fires after a layer changed opacity.
              */
-            "afterlayeropacitychange"
+            "afterlayeropacitychange",
+
+            /** private: event[afterlayeradd]
+             *  Fires after a layer added to the map.
+             */
+            "afterlayeradd",
+
+            /** private: event[afterlayerremove]
+             *  Fires after a layer removed from the map.
+             */
+            "afterlayerremove"
         );
         this.map.events.on({
             "moveend": this.onMoveend,
-            "changelayer": this.onLayerchange,
+            "changelayer": this.onChangelayer,
+            "addlayer": this.onAddlayer,
+            "removelayer": this.onRemovelayer,
             scope: this
         });
     },
@@ -171,12 +185,12 @@
         this.fireEvent("aftermapmove");
     },
 
-    /** private: method[onLayerchange]
+    /** private: method[onChangelayer]
      *  :param e: ``Object``
      *
      * The "changelayer" listener.
      */
-    onLayerchange: function(e) {
+    onChangelayer: function(e) {
         if(e.property) {
             if(e.property === "visibility") {
                 this.fireEvent("afterlayervisibilitychange");
@@ -186,6 +200,18 @@
         }
     },
 
+    /** private: method[onAddlayer]
+     */
+    onAddlayer: function() {
+        this.fireEvent("afterlayeradd");
+    },
+
+    /** private: method[onRemovelayer]
+     */
+    onRemovelayer: function() {
+        this.fireEvent("afterlayerremove");
+    },
+
     /** private: method[applyState]
      *  :param state: ``Object`` The state to apply.
      *
@@ -349,7 +375,9 @@
         if(this.map && this.map.events) {
             this.map.events.un({
                 "moveend": this.onMoveend,
-                "changelayer": this.onLayerchange,
+                "changelayer": this.onChangelayer,
+                "addlayer": this.onAddlayer,
+                "removelayer": this.onRemovelayer,
                 scope: this
             });
         }

Modified: core/trunk/geoext/tests/lib/GeoExt/widgets/MapPanel.html
===================================================================
--- core/trunk/geoext/tests/lib/GeoExt/widgets/MapPanel.html	2010-11-16 16:55:43 UTC (rev 2480)
+++ core/trunk/geoext/tests/lib/GeoExt/widgets/MapPanel.html	2010-11-17 11:08:56 UTC (rev 2481)
@@ -445,7 +445,7 @@
         }
 
         function test_getState_called(t) {
-            t.plan(2);
+            t.plan(4);
 
             // set up
 
@@ -476,6 +476,25 @@
                 t.eq(log, true, "getState called when map is moved");
             });
 
+            // test that getState gets called when the a layer is
+            // added to the map
+            // 1 test
+            log = false;
+            var l = new OpenLayers.Layer("foo");
+            mapPanel.map.addLayers([l]);
+            t.delay_call(1, function() {
+                t.eq(log, true, "getState called when a layer is added to the map");
+            });
+
+            // test that getState gets called when the a layer is
+            // removed from the map
+            // 1 test
+            log = false;
+            mapPanel.map.removeLayer(l);
+            t.delay_call(1, function() {
+                t.eq(log, true, "getState called when a layer is removed from the map");
+            });
+
             // test that getState gets called when layer visibility
             // is changed
             // 1 test



More information about the Commits mailing list