[Commits] r386 - in sandbox/opengeo/geoexplorer: . lib lib/GeoExt/data tests tests/lib/GeoExt/data

commits at geoext.org commits at geoext.org
Tue Apr 14 23:38:01 CEST 2009


Author: dwins
Date: 2009-04-14 23:38:00 +0200 (Tue, 14 Apr 2009)
New Revision: 386

Added:
   sandbox/opengeo/geoexplorer/lib/GeoExt/data/ScaleStore.js
   sandbox/opengeo/geoexplorer/tests/lib/GeoExt/data/ScaleStore.html
Modified:
   sandbox/opengeo/geoexplorer/lib/GeoExt.js
   sandbox/opengeo/geoexplorer/modifications.txt
   sandbox/opengeo/geoexplorer/tests/list-tests.html
Log:
Add scale store that synchronizes scale list with map


Added: sandbox/opengeo/geoexplorer/lib/GeoExt/data/ScaleStore.js
===================================================================
--- sandbox/opengeo/geoexplorer/lib/GeoExt/data/ScaleStore.js	                        (rev 0)
+++ sandbox/opengeo/geoexplorer/lib/GeoExt/data/ScaleStore.js	2009-04-14 21:38:00 UTC (rev 386)
@@ -0,0 +1,43 @@
+/* Copyright (C) 2008-2009 The Open Source Geospatial Foundation ¹
+ * Published under the BSD license.
+ * See http://geoext.org/svn/geoext/core/trunk/license.txt for the full text
+ * of the license.
+ * 
+ * ¹ pending approval */
+
+/**
+ * @include GeoExt/data/LayerReader.js
+ */
+
+Ext.namespace("GeoExt.data");
+
+GeoExt.data.ScaleStore = Ext.extend(Ext.data.Store, {
+    map: null,
+
+    constructor: function(config) {
+        this.map = config.map;
+        delete config.map;
+        config = Ext.applyIf(config, {reader: new Ext.data.JsonReader({}, [
+            "level",
+            "resolution",
+            "scale"
+        ])});
+        GeoExt.data.ScaleStore.superclass.constructor.call(this, config);
+        this.map.events.register('changebaselayer', this, this.populateFromMap);
+        this.populateFromMap();
+    },
+
+    populateFromMap: function() {
+        var zooms = [];
+
+        for (var i = this.map.numZoomLevels-1; i > 0; i--) { 
+            var res = this.map.getResolutionForZoom(i);
+            var units = this.map.baseLayer.units;
+            var scale = OpenLayers.Util.getScaleFromResolution(res, units);
+
+            zooms.push({level: i, resolution: res, scale: scale});
+        }
+
+        this.loadData(zooms);
+    }
+});

Modified: sandbox/opengeo/geoexplorer/lib/GeoExt.js
===================================================================
--- sandbox/opengeo/geoexplorer/lib/GeoExt.js	2009-04-14 21:27:05 UTC (rev 385)
+++ sandbox/opengeo/geoexplorer/lib/GeoExt.js	2009-04-14 21:38:00 UTC (rev 386)
@@ -65,6 +65,7 @@
             "GeoExt/data/LayerReader.js",
             "GeoExt/data/LayerStore.js",
             "GeoExt/data/LayerStoreMediator.js",
+            "GeoExt/data/ScaleStore.js",
             "GeoExt/data/ProtocolProxy.js",
             "GeoExt/data/WMSCapabilitiesReader.js",
             "GeoExt/data/WMSCapabilitiesStore.js",

Modified: sandbox/opengeo/geoexplorer/modifications.txt
===================================================================
--- sandbox/opengeo/geoexplorer/modifications.txt	2009-04-14 21:27:05 UTC (rev 385)
+++ sandbox/opengeo/geoexplorer/modifications.txt	2009-04-14 21:38:00 UTC (rev 386)
@@ -7,4 +7,5 @@
  * Added examples of grid using WMSCapabilitiesStore (see #9)
  * Added (with some tweaks) LegendPanel from GeoExt #2
  * Made FeatureRecord.create() and LayerRecord.create() not modify prototype fields. (see #40)
+ * Added scale store (see #41)
 

Added: sandbox/opengeo/geoexplorer/tests/lib/GeoExt/data/ScaleStore.html
===================================================================
--- sandbox/opengeo/geoexplorer/tests/lib/GeoExt/data/ScaleStore.html	                        (rev 0)
+++ sandbox/opengeo/geoexplorer/tests/lib/GeoExt/data/ScaleStore.html	2009-04-14 21:38:00 UTC (rev 386)
@@ -0,0 +1,64 @@
+<!DOCTYPE html>
+<html debug="true">
+  <head>
+    <script type="text/javascript" src="../../../../../openlayers/lib/OpenLayers.js"></script>
+    <script type="text/javascript" src="../../../../../ext/adapter/ext/ext-base.js"></script>
+    <script type="text/javascript" src="../../../../../ext/ext-all-debug.js"></script>
+    <script type="text/javascript" src="../../../../lib/GeoExt.js"></script>
+
+    <script type="text/javascript">
+       
+        function createMap() {
+            var map = new OpenLayers.Map();
+            map.addLayer(new OpenLayers.Layer.Vector('dummy layer', {
+                maxExtent: new OpenLayers.Bounds(-180, -90, 180, 90),
+                isBaseLayer: true
+            }));
+            map.zoomToMaxExtent();
+            return map;
+        }
+
+        function loadMapPanel() {
+            var map = createMap();
+
+            var mapPanel = new GeoExt.MapPanel({
+                // panel options
+                id: "map-panel",
+                title: "GeoExt MapPanel",
+                renderTo: "mappanel",
+                height: 400,
+                width: 600,
+                // map panel-specific options
+                map: map,
+                center: new OpenLayers.LonLat(5, 45),
+                zoom: 4
+            });
+
+            return mapPanel;
+        }
+
+        function test_constructor(t) {
+            t.plan(1);
+
+            var store, map;
+
+            map = createMap();
+            store = new GeoExt.data.ScaleStore({map: map});
+            t.ok(store.map == map, "ctor sets the passed map in the instance");
+        }
+
+        function test_scalestore(t) {
+            t.plan(1);
+
+            var mapPanel = loadMapPanel();
+            var map = mapPanel.map;
+            var store = new GeoExt.data.ScaleStore({map: map});
+            t.eq(store.data.length, 15, 'Found expected number of zoomlevels');
+        }
+        
+    </script>
+  </head>  
+  <body>
+    <div id="mappanel" style="width:400px; height:300px"></div>
+  </body>
+</html>

Modified: sandbox/opengeo/geoexplorer/tests/list-tests.html
===================================================================
--- sandbox/opengeo/geoexplorer/tests/list-tests.html	2009-04-14 21:27:05 UTC (rev 385)
+++ sandbox/opengeo/geoexplorer/tests/list-tests.html	2009-04-14 21:38:00 UTC (rev 386)
@@ -6,6 +6,7 @@
   <li>lib/GeoExt/data/LayerReader.html</li>
   <li>lib/GeoExt/data/LayerStore.html</li>
   <li>lib/GeoExt/data/LayerStoreMediator.html</li>
+  <li>lib/GeoExt/data/ScaleStore.html</li>
   <li>lib/GeoExt/data/ProtocolProxy.html</li>
   <li>lib/GeoExt/widgets/MapPanel.html</li>
   <li>lib/GeoExt/widgets/Popup.html</li>



More information about the Commits mailing list