[Commits] r896 - in apps/opengeo/geoexplorer/trunk: lib/GeoExplorer/Full theme theme/img/silk

commits at geoext.org commits at geoext.org
Fri May 29 00:35:29 CEST 2009


Author: dwins
Date: 2009-05-29 00:35:29 +0200 (Fri, 29 May 2009)
New Revision: 896

Added:
   apps/opengeo/geoexplorer/trunk/theme/img/silk/eye.png
   apps/opengeo/geoexplorer/trunk/theme/img/silk/star.png
Modified:
   apps/opengeo/geoexplorer/trunk/lib/GeoExplorer/Full/Full.js
   apps/opengeo/geoexplorer/trunk/theme/geoexplorer.css
Log:
Add layer selection panel to wizard.


Modified: apps/opengeo/geoexplorer/trunk/lib/GeoExplorer/Full/Full.js
===================================================================
--- apps/opengeo/geoexplorer/trunk/lib/GeoExplorer/Full/Full.js	2009-05-28 22:25:44 UTC (rev 895)
+++ apps/opengeo/geoexplorer/trunk/lib/GeoExplorer/Full/Full.js	2009-05-28 22:35:29 UTC (rev 896)
@@ -35,6 +35,7 @@
     showEmbedWizard: function() {
         var config = this.extractConfiguration();
 
+        var layerSelection = this.makeLayerWizardPane(config);
         var finalize = this.makeFinalWizardPane(config);
         var wizard = new GeoExplorer.Wizard({
             height: 300,
@@ -42,7 +43,13 @@
             resizable: false,
             modal: true,
             title: "Export Map",
-            pages: [{title: 'Finish', panel: finalize}]
+            pages: [{
+                title: 'Choose Layers',
+                panel: layerSelection
+            },{
+                title: 'Finish', 
+                panel: finalize
+            }]
         });
         wizard.show();
     },
@@ -73,7 +80,7 @@
             var query = Ext.urlEncode({q: Ext.util.JSON.encode(config)}); 
 
             // TODO: configurablize!!!1!!!!!111!!!!!!
-            var pathname = document.location.pathname.replace(/\/[^/]*$/, '/embed.html'); 
+            var pathname = document.location.pathname.replace(/\/[^\/]*$/, '/embed.html'); 
             var url = 
                 document.location.protocol + "//" +
                 document.location.hostname +
@@ -87,8 +94,6 @@
         heightField.on("change", updateSnippet);
         widthField.on("change", updateSnippet);
 
-        updateSnippet();
-
         var snippet = new Ext.Panel({
             border: false,
             layout: 'fit',
@@ -142,7 +147,139 @@
                 description, 
                 snippet, 
                 {cls: 'gx-field-label', html: "Map Size", border: false},
-                adjustments]
+                adjustments],
+            listeners: {
+                show: updateSnippet
+            }
         });
+    },
+
+    makeLayerWizardPane: function (config) {
+        var datalayers = [];
+        var basemaps = [];
+
+        for (var i = 0, len = config.map.layers.length; i < len; i++) {
+            if (config.map.layers[i].isBaseLayer) {
+                basemaps.push(config.map.layers[i]);
+            } else {
+                datalayers.push(config.map.layers[i]);
+            }
+        }
+
+        var datalayerstore = new Ext.data.JsonStore({
+            fields: ['name', {name: 'visibility', type: 'bool'}],
+            data: datalayers
+        });
+
+        var basemapstore = new Ext.data.JsonStore({
+            fields: ['name', {name: 'visibility', type: 'bool'}],
+            data: basemaps
+        });
+
+        cbRenderer = function(value) {
+            return '<input type="checkbox"' +
+                (value ? ' checked="checked"' : '') +
+                '></input>';
+        };
+
+        var datagrid = new Ext.grid.GridPanel({
+            store: datalayerstore,
+            region: 'center',
+            autoScroll: true,
+            columns: [
+                {
+                    header: '<img src="theme/img/silk/eye.png"></img>',
+                    id: 'visibility',
+                    dataIndex: 'visibility',
+                    width: 28,
+                    renderer: cbRenderer
+                },{
+                    header: 'Layer Name',
+                    id: 'layer',
+                    dataIndex: 'name'
+                }
+            ],
+            autoExpandColumn:'layer',
+            title: "Pure",
+            listeners: {
+                rowclick: function(grid, index, evt) {
+                    var record = grid.getStore().getAt(index);
+                    record.set("visibility", !record.get("visibility"));
+                }
+            }
+        });
+
+        radioRenderer = function(value) {
+            return '<input type="radio"' +
+                (value ? ' checked="checked"' : '') +
+                '></input>';
+        };
+
+        var basegrid = new Ext.grid.GridPanel({
+            store: basemapstore,
+            region: 'east',
+            width: 150,
+            resizable: true,
+            autoScroll: true,
+            columns: [
+                {
+                    header: '<img src="theme/img/silk/star.png"></img>',
+                    id: 'visibility',
+                    dataIndex: 'visibility',
+                    width: 28,
+                    renderer: radioRenderer
+                }, {
+                    header: 'Layer Name',
+                    id: 'layer',
+                    dataIndex: 'name'
+                }
+            ],
+            autoExpandColumn:'layer',
+            title: "Base",
+            listeners: {
+                rowclick: function(grid, index, evt) {
+                    var record = grid.getStore().getAt(index);
+                    grid.getStore().each(function(record) {
+                        record.set("visibility", false);
+                    });
+                    record.set("visibility", true);
+                }
+            }
+        });
+
+        return new Ext.Panel({
+            layout: 'border',
+            border: false,
+            cls: 'gx-wizard-pane',
+            items: [
+                {
+                    region: 'north',
+                    cls: "gx-wizard-description",
+                    border: false,
+                    html:'<p>Select the layers that are visible by default.</p>'
+                },
+                datagrid, 
+                basegrid
+            ],
+            listeners: {
+                hide: function() {
+                    for (var i = 0, len = config.map.layers.length;
+                        i < len; 
+                        i++) {
+                        var layer = config.map.layers[i];
+                        
+                        var record = 
+                            datalayerstore.getAt(datalayerstore.find("name", layer.name));
+
+                        if (!record) {
+                            record = 
+                                basemapstore.getAt(basemapstore.find("name", layer.name));
+                        }
+
+                        if (record) layer.visibility = record.get("visibility");
+                    }
+                }
+            }
+        });
     }
 });

Modified: apps/opengeo/geoexplorer/trunk/theme/geoexplorer.css
===================================================================
--- apps/opengeo/geoexplorer/trunk/theme/geoexplorer.css	2009-05-28 22:25:44 UTC (rev 895)
+++ apps/opengeo/geoexplorer/trunk/theme/geoexplorer.css	2009-05-28 22:35:29 UTC (rev 896)
@@ -205,6 +205,14 @@
     padding: 4px;
 }
 
+.gx-grid-true {
+    background: red;
+}
+
+.gx-grid-false {
+    background: blue;
+}
+
 .gx-wizard-pane .x-panel-body {
     background: none;
 }

Added: apps/opengeo/geoexplorer/trunk/theme/img/silk/eye.png
===================================================================
(Binary files differ)


Property changes on: apps/opengeo/geoexplorer/trunk/theme/img/silk/eye.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Added: apps/opengeo/geoexplorer/trunk/theme/img/silk/star.png
===================================================================
(Binary files differ)


Property changes on: apps/opengeo/geoexplorer/trunk/theme/img/silk/star.png
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream



More information about the Commits mailing list