Changeset 1200

Show
Ignore:
Timestamp:
07/02/09 00:42:34 (4 years ago)
Author:
tschaub
Message:

Partially working baselayer reworking.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • apps/opengeo/geoexplorer/trunk/src/script/app/GeoExplorer.js

    r1199 r1200  
    330330        this.on("ready", function() {addLayerButton.enable();}); 
    331331 
    332         var addBaseLayerButton = new Ext.Button({ 
    333             tooltip : "Add Base Layers", 
    334             disabled: true, 
    335             iconCls: "icon-addlayers", 
    336             handler: this.showBaseCapabilitiesGrid, 
    337             scope: this 
    338         }); 
    339         this.on("ready", function() {addBaseLayerButton.enable();}); 
    340  
    341  
    342         //allow user to select only one layer at a time 
    343         //by sharing selection model 
    344         var selectionModel = new Ext.tree.DefaultSelectionModel({ 
    345             listeners: { 
    346                 beforeselect: function() { 
    347                     removeLayerAction.enable(); 
    348                 } 
    349             } 
    350         }); 
    351  
    352         var baseSelectionModel = new Ext.tree.DefaultSelectionModel({ 
    353             listeners: { 
    354                 beforeselect: function() { 
    355                     removeBaseLayerAction.enable(); 
    356                 } 
    357             } 
    358         }); 
    359  
    360332        var removeLayerAction = new Ext.Action({ 
    361333            text: "Remove Layer", 
     
    364336            tooltip: "Remove Layer", 
    365337            handler: function() { 
    366                 var node = selectionModel.getSelectedNode(); 
     338                var node = layerTree.getSelectionModel().getSelectedNode(); 
    367339                if(node && node.layer) { 
    368340                    var layer = node.layer; 
     
    377349        }); 
    378350 
    379         var removeBaseLayerAction = new Ext.Action({ 
    380             text: "Remove Base Layer", 
    381             iconCls: "icon-removelayers", 
    382             disabled: true, 
    383             tooltip: "Remove Base Layer", 
    384             handler: function() { 
    385                 var node = baseSelectionModel.getSelectedNode(); 
    386                 if(node && node.layer) { 
    387                     var layer = node.layer; 
    388                     var store = node.layerStore; 
    389                     var record = store.getAt(store.findBy(function(record) { 
    390                         return record.get("layer") === layer; 
    391                     })); 
    392                     store.remove(record); 
    393                     removeBaseLayerAction.disable(); 
    394                 } 
    395             } 
    396         }); 
    397  
    398         var layerTreeConfig = { 
    399             border:false, 
     351        var treeRoot = new Ext.tree.TreeNode({ 
     352            text: "Layers", 
     353            expanded: true, 
     354            isTarget: false 
     355        }); 
     356        treeRoot.appendChild(new GeoExplorer.GroupContainer({ 
     357            text: "Overlays", 
     358            iconCls: "gx-folder", 
     359            expanded: true, 
     360            background: false, 
     361            layerStore: this.mapPanel.layers, 
     362            singleClickExpand: true, 
     363            allowDrag: false, 
     364            listeners: { 
     365                append: function(tree, node) { 
     366                    node.expand(); 
     367                } 
     368            } 
     369        })); 
     370        treeRoot.appendChild(new GeoExplorer.GroupContainer({ 
     371            text: "Base Layers", 
     372            iconCls: "gx-folder", 
     373            expanded: true, 
     374            background: true, 
     375            layerStore: this.mapPanel.layers, 
     376            singleClickExpand: true, 
     377            allowDrag: false, 
     378            listeners: { 
     379                append: function(tree, node) { 
     380                    node.expand(); 
     381                } 
     382            } 
     383        })); 
     384         
     385        var layerTree = new Ext.tree.TreePanel({ 
     386            root: treeRoot, 
    400387            rootVisible: false, 
    401             autoScroll: true, 
    402             split: true, 
     388            border: false, 
     389            enableDD: true, 
     390            selModel: new Ext.tree.DefaultSelectionModel({ 
     391                listeners: { 
     392                    beforeselect: function(sel, node) { 
     393                        if(node && node.layer) { 
     394                            // allow removal if more than one non-vector layer 
     395                            var count = this.mapPanel.layers.queryBy(function(r) { 
     396                                return !(r.get("layer") instanceof OpenLayers.Layer.Vector); 
     397                            }).getCount(); 
     398                            if(count > 1) { 
     399                                removeLayerAction.enable(); 
     400                            } 
     401                        } 
     402                    }, 
     403                    scope: this 
     404                } 
     405            }), 
    403406            listeners: { 
     407                dragdrop: function(tree, node, dd, evt) { 
     408                    if(node && node.layer) { 
     409                        var index = this.mapPanel.layers.findBy(function(r) { 
     410                            return r.get("layer") === node.layer; 
     411                        }); 
     412                        if(index > -1) { 
     413                            var record = this.mapPanel.layers.getAt(index); 
     414                            if(record.get("background") !== node.parentNode.background) { 
     415                                record.set("background"); 
     416                            } 
     417                        } 
     418                    } 
     419                }, 
    404420                contextmenu: function(node, e) { 
    405                     node.select(); 
    406                     var c = node.getOwnerTree().contextMenu; 
    407                     c.contextNode = node; 
    408                     c.showAt(e.getXY()); 
     421                    if(node && node.layer) { 
     422                        node.select(); 
     423                        var c = node.getOwnerTree().contextMenu; 
     424                        c.contextNode = node; 
     425                        c.showAt(e.getXY()); 
     426                    } 
    409427                }, 
    410428                scope: this 
     
    415433                        text: "Zoom to Layer Extent", 
    416434                        iconCls: "icon-zoom-visible", 
    417                         handler: function()
    418                             var node = selectionModel.getSelectedNode(); 
     435                        handler: function()
     436                            var node = layerTree.getSelectionModel().getSelectedNode(); 
    419437                            if(node && node.layer) { 
    420438                                this.map.zoomToExtent(node.layer.restrictedExtent); 
     
    426444                ] 
    427445            }) 
    428         };         
    429  
    430         var overlayLayerTree = new Ext.tree.TreePanel( 
    431             Ext.apply( 
    432                 { 
    433                     title: "Layers", 
    434                     tbar: [ 
    435                         addLayerButton, 
    436                         Ext.apply(new Ext.Button(removeLayerAction), {text: ""}) 
    437                     ], 
    438                     selModel: selectionModel, 
    439                     root: new GeoExplorer.GroupContainer({ 
    440                         background: false, 
    441                         layerStore: this.layerStore 
    442                     }), 
    443                     ddGroup: "OverlayLayerDD", 
    444                     height: 'auto', 
    445                     region: 'center', 
    446                     enableDD: true 
    447                 },  
    448                 layerTreeConfig)); 
    449          
    450         var baseLayerTree = new Ext.tree.TreePanel( 
    451             Ext.apply( 
    452                 { 
    453                     title: 'Base Layers', 
    454                     tbar: [ 
    455                         addBaseLayerButton, 
    456                         Ext.apply(new Ext.Button(removeBaseLayerAction), {text: ""}) 
    457                     ], 
    458                     root: new GeoExplorer.GroupContainer({ 
    459                         background: true, 
    460                         layerStore: this.layerStore 
    461                     }),  
    462                     selModel: baseSelectionModel, 
    463                     ddGroup: "BaseLayerDD", 
    464                     height: 160, 
    465                     region: 'south', 
    466                     contextMenu: new Ext.menu.Menu({ 
    467                     items: [ 
    468                         { 
    469                             text: "Zoom to Layer Extent", 
    470                             iconCls: "icon-zoom-visible", 
    471                             handler: function(){ 
    472                                 var node = selectionModel.getSelectedNode(); 
    473                                 if(node && node.layer) { 
    474                                     this.map.zoomToExtent(node.layer.restrictedExtent); 
    475                                 } 
    476                             }, 
    477                             scope: this 
    478                         }, 
    479                         removeBaseLayerAction 
    480                     ] 
    481             }) 
    482         },  
    483         layerTreeConfig)); 
     446        }); 
    484447 
    485448        var layersContainer = new Ext.Panel({ 
     449            autoScroll: true, 
    486450            border: false, 
    487451            region: 'center', 
    488             layout: 'border', 
    489             items: [overlayLayerTree, baseLayerTree] 
     452            title: "Layers", 
     453            items: [layerTree], 
     454            tbar: [ 
     455                addLayerButton, 
     456                Ext.apply(new Ext.Button(removeLayerAction), {text: ""}) 
     457            ] 
    490458        }); 
    491459 
  • apps/opengeo/geoexplorer/trunk/src/script/app/GeoExplorer/GroupContainer.js

    r1182 r1200  
    66 
    77    /** 
    8      * Constructor: GeoExt.tree.OverlayLayerContainer 
     8     * Constructor: GeoExplorer.GroupContainer 
    99     *  
    1010     * Parameters: 
     
    1212     */ 
    1313    constructor: function(config) { 
    14         config.text = config.text || "Overlays"; 
     14        config.text = config.text || "Layers"; 
    1515        this.background = config.background; 
    1616        GeoExplorer.GroupContainer.superclass.constructor.apply(this, 
  • apps/opengeo/geoexplorer/trunk/src/theme/app/geoexplorer.css

    r1198 r1200  
    256256    display: block; 
    257257} 
     258 
     259.x-tree-node img.gx-folder, .x-tree-node-collapsed img.gx-folder{ 
     260    background: url(http://extjs.cachefly.net/ext-2.2.1/resources/images/default/tree/folder.gif); 
     261} 
     262  
     263.x-tree-node-expanded img.gx-folder { 
     264    background: url(http://extjs.cachefly.net/ext-2.2.1/resources/images/default/tree/folder-open.gif); 
     265} 
    258266