[Commits] r1200 - in apps/opengeo/geoexplorer/trunk/src: script/app script/app/GeoExplorer theme/app

commits at geoext.org commits at geoext.org
Thu Jul 2 00:42:35 CEST 2009


Author: tschaub
Date: 2009-07-02 00:42:34 +0200 (Thu, 02 Jul 2009)
New Revision: 1200

Modified:
   apps/opengeo/geoexplorer/trunk/src/script/app/GeoExplorer.js
   apps/opengeo/geoexplorer/trunk/src/script/app/GeoExplorer/GroupContainer.js
   apps/opengeo/geoexplorer/trunk/src/theme/app/geoexplorer.css
Log:
Partially working baselayer reworking.

Modified: apps/opengeo/geoexplorer/trunk/src/script/app/GeoExplorer/GroupContainer.js
===================================================================
--- apps/opengeo/geoexplorer/trunk/src/script/app/GeoExplorer/GroupContainer.js	2009-07-01 20:59:51 UTC (rev 1199)
+++ apps/opengeo/geoexplorer/trunk/src/script/app/GeoExplorer/GroupContainer.js	2009-07-01 22:42:34 UTC (rev 1200)
@@ -5,13 +5,13 @@
     background: null,
 
     /**
-     * Constructor: GeoExt.tree.OverlayLayerContainer
+     * Constructor: GeoExplorer.GroupContainer
      * 
      * Parameters:
      * config - {Object}
      */
     constructor: function(config) {
-        config.text = config.text || "Overlays";
+        config.text = config.text || "Layers";
         this.background = config.background;
         GeoExplorer.GroupContainer.superclass.constructor.apply(this,
             arguments);

Modified: apps/opengeo/geoexplorer/trunk/src/script/app/GeoExplorer.js
===================================================================
--- apps/opengeo/geoexplorer/trunk/src/script/app/GeoExplorer.js	2009-07-01 20:59:51 UTC (rev 1199)
+++ apps/opengeo/geoexplorer/trunk/src/script/app/GeoExplorer.js	2009-07-01 22:42:34 UTC (rev 1200)
@@ -329,41 +329,13 @@
         });
         this.on("ready", function() {addLayerButton.enable();});
 
-        var addBaseLayerButton = new Ext.Button({
-            tooltip : "Add Base Layers",
-            disabled: true,
-            iconCls: "icon-addlayers",
-            handler: this.showBaseCapabilitiesGrid,
-            scope: this
-        });
-        this.on("ready", function() {addBaseLayerButton.enable();});
-
-
-        //allow user to select only one layer at a time
-        //by sharing selection model
-        var selectionModel = new Ext.tree.DefaultSelectionModel({
-            listeners: {
-                beforeselect: function() {
-                    removeLayerAction.enable();
-                }
-            }
-        });
-
-        var baseSelectionModel = new Ext.tree.DefaultSelectionModel({
-            listeners: {
-                beforeselect: function() {
-                    removeBaseLayerAction.enable();
-                }
-            }
-        });
-
         var removeLayerAction = new Ext.Action({
             text: "Remove Layer",
             iconCls: "icon-removelayers",
             disabled: true,
             tooltip: "Remove Layer",
             handler: function() {
-                var node = selectionModel.getSelectedNode();
+                var node = layerTree.getSelectionModel().getSelectedNode();
                 if(node && node.layer) {
                     var layer = node.layer;
                     var store = node.layerStore;
@@ -376,36 +348,82 @@
             }
         });
 
-        var removeBaseLayerAction = new Ext.Action({
-            text: "Remove Base Layer",
-            iconCls: "icon-removelayers",
-            disabled: true,
-            tooltip: "Remove Base Layer",
-            handler: function() {
-                var node = baseSelectionModel.getSelectedNode();
-                if(node && node.layer) {
-                    var layer = node.layer;
-                    var store = node.layerStore;
-                    var record = store.getAt(store.findBy(function(record) {
-                        return record.get("layer") === layer;
-                    }));
-                    store.remove(record);
-                    removeBaseLayerAction.disable();
+        var treeRoot = new Ext.tree.TreeNode({
+            text: "Layers",
+            expanded: true,
+            isTarget: false
+        });
+        treeRoot.appendChild(new GeoExplorer.GroupContainer({
+            text: "Overlays",
+            iconCls: "gx-folder",
+            expanded: true,
+            background: false,
+            layerStore: this.mapPanel.layers,
+            singleClickExpand: true,
+            allowDrag: false,
+            listeners: {
+                append: function(tree, node) {
+                    node.expand();
                 }
             }
-        });
-
-        var layerTreeConfig = {
-            border:false,
+        }));
+        treeRoot.appendChild(new GeoExplorer.GroupContainer({
+            text: "Base Layers",
+            iconCls: "gx-folder",
+            expanded: true,
+            background: true,
+            layerStore: this.mapPanel.layers,
+            singleClickExpand: true,
+            allowDrag: false,
+            listeners: {
+                append: function(tree, node) {
+                    node.expand();
+                }
+            }
+        }));
+        
+        var layerTree = new Ext.tree.TreePanel({
+            root: treeRoot,
             rootVisible: false,
-            autoScroll: true,
-            split: true,
+            border: false,
+            enableDD: true,
+            selModel: new Ext.tree.DefaultSelectionModel({
+                listeners: {
+                    beforeselect: function(sel, node) {
+                        if(node && node.layer) {
+                            // allow removal if more than one non-vector layer
+                            var count = this.mapPanel.layers.queryBy(function(r) {
+                                return !(r.get("layer") instanceof OpenLayers.Layer.Vector);
+                            }).getCount();
+                            if(count > 1) {
+                                removeLayerAction.enable();
+                            }
+                        }
+                    },
+                    scope: this
+                }
+            }),
             listeners: {
+                dragdrop: function(tree, node, dd, evt) {
+                    if(node && node.layer) {
+                        var index = this.mapPanel.layers.findBy(function(r) {
+                            return r.get("layer") === node.layer;
+                        });
+                        if(index > -1) {
+                            var record = this.mapPanel.layers.getAt(index);
+                            if(record.get("background") !== node.parentNode.background) {
+                                record.set("background");
+                            }
+                        }
+                    }
+                },
                 contextmenu: function(node, e) {
-                    node.select();
-                    var c = node.getOwnerTree().contextMenu;
-                    c.contextNode = node;
-                    c.showAt(e.getXY());
+                    if(node && node.layer) {
+                        node.select();
+                        var c = node.getOwnerTree().contextMenu;
+                        c.contextNode = node;
+                        c.showAt(e.getXY());
+                    }
                 },
                 scope: this
             },
@@ -414,8 +432,8 @@
                     {
                         text: "Zoom to Layer Extent",
                         iconCls: "icon-zoom-visible",
-                        handler: function(){
-                            var node = selectionModel.getSelectedNode();
+                        handler: function() {
+                            var node = layerTree.getSelectionModel().getSelectedNode();
                             if(node && node.layer) {
                                 this.map.zoomToExtent(node.layer.restrictedExtent);
                             }
@@ -425,68 +443,18 @@
                     removeLayerAction
                 ]
             })
-        };        
+        });
 
-        var overlayLayerTree = new Ext.tree.TreePanel(
-            Ext.apply(
-                {
-                    title: "Layers",
-                    tbar: [
-                        addLayerButton,
-                        Ext.apply(new Ext.Button(removeLayerAction), {text: ""})
-                    ],
-                    selModel: selectionModel,
-                    root: new GeoExplorer.GroupContainer({
-                        background: false,
-                        layerStore: this.layerStore
-                    }),
-                    ddGroup: "OverlayLayerDD",
-                    height: 'auto',
-                    region: 'center',
-                    enableDD: true
-                }, 
-                layerTreeConfig));
-        
-        var baseLayerTree = new Ext.tree.TreePanel(
-            Ext.apply(
-                {
-                    title: 'Base Layers',
-                    tbar: [
-                        addBaseLayerButton,
-                        Ext.apply(new Ext.Button(removeBaseLayerAction), {text: ""})
-                    ],
-                    root: new GeoExplorer.GroupContainer({
-                        background: true,
-                        layerStore: this.layerStore
-                    }), 
-                    selModel: baseSelectionModel,
-                    ddGroup: "BaseLayerDD",
-                    height: 160,
-                    region: 'south',
-                    contextMenu: new Ext.menu.Menu({
-                    items: [
-                        {
-                            text: "Zoom to Layer Extent",
-                            iconCls: "icon-zoom-visible",
-                            handler: function(){
-                                var node = selectionModel.getSelectedNode();
-                                if(node && node.layer) {
-                                    this.map.zoomToExtent(node.layer.restrictedExtent);
-                                }
-                            },
-                            scope: this
-                        },
-                        removeBaseLayerAction
-                    ]
-            })
-        }, 
-        layerTreeConfig));
-
         var layersContainer = new Ext.Panel({
+            autoScroll: true,
             border: false,
             region: 'center',
-            layout: 'border',
-            items: [overlayLayerTree, baseLayerTree]
+            title: "Layers",
+            items: [layerTree],
+            tbar: [
+                addLayerButton,
+                Ext.apply(new Ext.Button(removeLayerAction), {text: ""})
+            ]
         });
 
         var legendContainer = new GeoExt.LegendPanel({

Modified: apps/opengeo/geoexplorer/trunk/src/theme/app/geoexplorer.css
===================================================================
--- apps/opengeo/geoexplorer/trunk/src/theme/app/geoexplorer.css	2009-07-01 20:59:51 UTC (rev 1199)
+++ apps/opengeo/geoexplorer/trunk/src/theme/app/geoexplorer.css	2009-07-01 22:42:34 UTC (rev 1200)
@@ -255,4 +255,12 @@
     height: 16px;
     display: block;
 }
+
+.x-tree-node img.gx-folder, .x-tree-node-collapsed img.gx-folder{
+    background: url(http://extjs.cachefly.net/ext-2.2.1/resources/images/default/tree/folder.gif);
+}
+ 
+.x-tree-node-expanded img.gx-folder {
+    background: url(http://extjs.cachefly.net/ext-2.2.1/resources/images/default/tree/folder-open.gif);
+}
     



More information about the Commits mailing list