Changeset 1200
- Timestamp:
- 07/02/09 00:42:34 (4 years ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
apps/opengeo/geoexplorer/trunk/src/script/app/GeoExplorer.js
r1199 r1200 330 330 this.on("ready", function() {addLayerButton.enable();}); 331 331 332 var addBaseLayerButton = new Ext.Button({333 tooltip : "Add Base Layers",334 disabled: true,335 iconCls: "icon-addlayers",336 handler: this.showBaseCapabilitiesGrid,337 scope: this338 });339 this.on("ready", function() {addBaseLayerButton.enable();});340 341 342 //allow user to select only one layer at a time343 //by sharing selection model344 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 360 332 var removeLayerAction = new Ext.Action({ 361 333 text: "Remove Layer", … … 364 336 tooltip: "Remove Layer", 365 337 handler: function() { 366 var node = selectionModel.getSelectedNode();338 var node = layerTree.getSelectionModel().getSelectedNode(); 367 339 if(node && node.layer) { 368 340 var layer = node.layer; … … 377 349 }); 378 350 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, 400 387 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 }), 403 406 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 }, 404 420 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 } 409 427 }, 410 428 scope: this … … 415 433 text: "Zoom to Layer Extent", 416 434 iconCls: "icon-zoom-visible", 417 handler: function() {418 var node = selectionModel.getSelectedNode();435 handler: function() { 436 var node = layerTree.getSelectionModel().getSelectedNode(); 419 437 if(node && node.layer) { 420 438 this.map.zoomToExtent(node.layer.restrictedExtent); … … 426 444 ] 427 445 }) 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 }); 484 447 485 448 var layersContainer = new Ext.Panel({ 449 autoScroll: true, 486 450 border: false, 487 451 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 ] 490 458 }); 491 459 apps/opengeo/geoexplorer/trunk/src/script/app/GeoExplorer/GroupContainer.js
r1182 r1200 6 6 7 7 /** 8 * Constructor: GeoEx t.tree.OverlayLayerContainer8 * Constructor: GeoExplorer.GroupContainer 9 9 * 10 10 * Parameters: … … 12 12 */ 13 13 constructor: function(config) { 14 config.text = config.text || " Overlays";14 config.text = config.text || "Layers"; 15 15 this.background = config.background; 16 16 GeoExplorer.GroupContainer.superclass.constructor.apply(this, apps/opengeo/geoexplorer/trunk/src/theme/app/geoexplorer.css
r1198 r1200 256 256 display: block; 257 257 } 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 } 258 266