[Commits] r2510 - in sandbox/mapgears/geoext.ux/ux/LayerTreeBuilder: examples lib/GeoExt.ux/widgets/tree

commits at geoext.org commits at geoext.org
Fri Dec 3 17:40:19 CET 2010


Author: adube
Date: 2010-12-03 17:40:18 +0100 (Fri, 03 Dec 2010)
New Revision: 2510

Modified:
   sandbox/mapgears/geoext.ux/ux/LayerTreeBuilder/examples/tree-builder.js
   sandbox/mapgears/geoext.ux/ux/LayerTreeBuilder/lib/GeoExt.ux/widgets/tree/LayerTreeBuilder.js
Log:
LayerTreeBuilder - vector legend nodes added

Modified: sandbox/mapgears/geoext.ux/ux/LayerTreeBuilder/examples/tree-builder.js
===================================================================
--- sandbox/mapgears/geoext.ux/ux/LayerTreeBuilder/examples/tree-builder.js	2010-12-03 15:38:13 UTC (rev 2509)
+++ sandbox/mapgears/geoext.ux/ux/LayerTreeBuilder/examples/tree-builder.js	2010-12-03 16:40:18 UTC (rev 2510)
@@ -71,10 +71,38 @@
     ));
 
     // group : Vector
-    layers.push(new OpenLayers.Layer.Vector(
-        "A vector layer",
-        {visibility: false, group: 'Vector'}
-    ));
+    //         also shows that the "VectorLegend" is supported
+    var mercator = new OpenLayers.Projection('EPSG:900913');
+    var lonlat = new OpenLayers.Projection('EPSG:4326');
+        
+    var features = new Array(50);
+    for (var i=0; i<features.length; i++) {
+        features[i] = new OpenLayers.Feature.Vector(
+            new OpenLayers.Geometry.Point(
+                (20 * Math.random()) - 80, 20 * Math.random() + 40
+            ).transform(lonlat, mercator)
+        );
+    }
+    var rules = [
+        new OpenLayers.Rule({
+            title: "Blue stars",
+            symbolizer: {
+                graphicName: "star",
+                pointRadius: 8,
+                fillColor: "#99ccff",
+                strokeColor: "#666666",
+                strokeWidth: 1
+            }
+        })
+    ];
+    var vector = new OpenLayers.Layer.Vector('Vector points', {
+        styleMap: new OpenLayers.StyleMap(
+            new OpenLayers.Style({}, {rules: rules})
+        ),
+        group: "Vector"
+    });
+    vector.addFeatures(features);
+    layers.push(vector);
 
     // group : undefined
     layers.push(new OpenLayers.Layer.Vector(
@@ -140,7 +168,8 @@
         rootVisible: false,
         lines: false,
         // widget custom properties
-        legendNodes: true
+        wmsLegendNodes: true,
+        vectorLegendNodes: true
     });
 
     new Ext.Viewport({

Modified: sandbox/mapgears/geoext.ux/ux/LayerTreeBuilder/lib/GeoExt.ux/widgets/tree/LayerTreeBuilder.js
===================================================================
--- sandbox/mapgears/geoext.ux/ux/LayerTreeBuilder/lib/GeoExt.ux/widgets/tree/LayerTreeBuilder.js	2010-12-03 15:38:13 UTC (rev 2509)
+++ sandbox/mapgears/geoext.ux/ux/LayerTreeBuilder/lib/GeoExt.ux/widgets/tree/LayerTreeBuilder.js	2010-12-03 16:40:18 UTC (rev 2510)
@@ -13,13 +13,20 @@
     baseLayersText: "Base layers",
     /* end i18n */
 
-    /** api: config[closeOnLayerAdded]
+    /** api: config[wmsLegendNodes]
      * ``Boolean``
-     * Defaults to true.  Whether layer nodes (such as WMS, Vector, etc) should
-     * have child legend nodes or not.
+     * Defaults to true.  Whether WMS layer nodes should have child legend
+     * nodes or not.
      */
-    legendNodes: true,
+    wmsLegendNodes: true,
 
+    /** api: config[vectorLegendNodes]
+     * ``Boolean``
+     * Defaults to true.  Whether vector layer nodes should have child legend
+     * nodes or not.
+     */
+    vectorLegendNodes: true,
+
     /** api: config[layerStore]
      *  ``GeoExt.data.LayerStore``
      *  The layer store containing layers to be displayed in the tree. 
@@ -110,12 +117,14 @@
                 };
                 this.getRootNode().appendChild(layerNode);
             } else {
-                this.addGroupNodes(group, this.getRootNode(), groupString);
+                this.addGroupNodes(
+                    group, this.getRootNode(), groupString, record
+                );
             }
         }, this);
     },
 
-    addGroupNodes: function(groups, parentNode, groupString){
+    addGroupNodes: function(groups, parentNode, groupString, layerRecord){
         var group = groups.shift();
         var childNode = this.getNodeByText(parentNode, group);
 
@@ -125,23 +134,39 @@
             // 'LayerContainer'
             if (groups.length == 0) {
                 var createNode;
-
-                if (this.legendNodes) {
+                var layer = layerRecord.getLayer();
+                // WMS and Vector layers can have legend nodes if according
+                // property is enabled
+                if (layer instanceof OpenLayers.Layer.WMS
+                    && this.wmsLegendNodes)
+                {
                     createNode = function(attr) {
                         var layerRecord = this.store.getByLayer(attr.layer);
                         var layer = layerRecord.getLayer();
-                        if (layer instanceof OpenLayers.Layer.WMS){
-                            // add a WMS legend to each node created
-                            attr.component = {
-                              xtype: "gx_wmslegend",
-                              layerRecord: layerRecord,
-                              showTitle: false,
-                              hidden: !layer.visibility,
-                              cls: "gx-layertreebuilder-legend"
-                            };
-                        }
+                        attr.component = {
+                          xtype: "gx_wmslegend",
+                          layerRecord: layerRecord,
+                          showTitle: false,
+                          hidden: !layer.visibility,
+                          cls: "gx-layertreebuilder-legend"
+                        };
                         return GeoExt.tree.LayerLoader.prototype.createNode.call(this, attr);
                     }
+                } else if (layer instanceof OpenLayers.Layer.Vector
+                    && this.vectorLegendNodes)
+                {
+                    createNode = function(attr) {
+                        var layerRecord = this.store.getByLayer(attr.layer);
+                        var layer = layerRecord.getLayer();
+                        attr.component = {
+                          xtype: "gx_vectorlegend",
+                          layerRecord: layerRecord,
+                          showTitle: false,
+                          hidden: !layer.visibility,
+                          cls: "gx-layertreebuilder-legend"
+                        };
+                        return GeoExt.tree.LayerLoader.prototype.createNode.call(this, attr);
+                    }
                 } else {
                     createNode = function(attr) {
                         return GeoExt.tree.LayerLoader.prototype.createNode.call(this, attr);
@@ -178,7 +203,7 @@
         }
 
         if (groups.length != 0){
-            this.addGroupNodes(groups, childNode, groupString);
+            this.addGroupNodes(groups, childNode, groupString, layerRecord);
         }
 
     },



More information about the Commits mailing list