[Commits] r928 - apps/opengeo/geoexplorer/trunk/script
commits at geoext.org
commits at geoext.org
Mon Jun 1 20:47:30 CEST 2009
Author: tcoulter
Date: 2009-06-01 20:47:30 +0200 (Mon, 01 Jun 2009)
New Revision: 928
Modified:
apps/opengeo/geoexplorer/trunk/script/GeoExplorer.js
Log:
Updated SFB.
Modified: apps/opengeo/geoexplorer/trunk/script/GeoExplorer.js
===================================================================
--- apps/opengeo/geoexplorer/trunk/script/GeoExplorer.js 2009-06-01 18:47:16 UTC (rev 927)
+++ apps/opengeo/geoexplorer/trunk/script/GeoExplorer.js 2009-06-01 18:47:30 UTC (rev 928)
@@ -1077,7 +1077,7 @@
GeoExt.data.WMSCapabilitiesReader.superclass.constructor.call(this,meta,recordType);};Ext.extend(GeoExt.data.WMSCapabilitiesReader,Ext.data.DataReader,{read:function(request){var data=request.responseXML;if(!data||!data.documentElement){data=request.responseText;}
return this.readRecords(data);},readRecords:function(data){if(typeof data==="string"||data.nodeType){data=this.meta.format.read(data);}
var url=data.capability.request.getmap.href;var records=[],layer;for(var i=0,len=data.capability.layers.length;i<len;i++){layer=data.capability.layers[i];if(layer.name){records.push(new this.recordType(Ext.apply(layer,{layer:new OpenLayers.Layer.WMS(layer.title||layer.name,url,{layers:layer.name})})));}}
-return{totalRecords:records.length,success:true,records:records};}});Ext.namespace("GeoExt.data");GeoExt.data.WMSCapabilitiesStore=function(c){GeoExt.data.WMSCapabilitiesStore.superclass.constructor.call(this,Ext.apply(c,{proxy:c.proxy||(!c.data?new Ext.data.HttpProxy({url:c.url,disableCaching:false,method:"GET"}):undefined),reader:new GeoExt.data.WMSCapabilitiesReader(c,c.fields)}));};Ext.extend(GeoExt.data.WMSCapabilitiesStore,Ext.data.Store);Ext.namespace("GeoExt.data");GeoExt.data.LayerRecord=Ext.data.Record.create([{name:"layer"},{name:"title",type:"string",mapping:"name"}]);GeoExt.data.LayerRecord.create=function(o){var f=Ext.extend(GeoExt.data.LayerRecord,{});var p=f.prototype;p.fields=new Ext.util.MixedCollection(false,function(field){return field.name;});GeoExt.data.LayerRecord.prototype.fields.each(function(f){p.fields.add(f);});if(o){for(var i=0,len=o.length;i<len;i++){p.fields.add(new Ext.data.Field(o[i]));}}
+return{totalRecords:records.length,success:true,records:records};}});Ext.namespace("GeoExt.data");GeoExt.data.WMSCapabilitiesStore=function(c){c=c||{};GeoExt.data.WMSCapabilitiesStore.superclass.constructor.call(this,Ext.apply(c,{proxy:c.proxy||(!c.data?new Ext.data.HttpProxy({url:c.url,disableCaching:false,method:"GET"}):undefined),reader:new GeoExt.data.WMSCapabilitiesReader(c,c.fields)}));};Ext.extend(GeoExt.data.WMSCapabilitiesStore,Ext.data.Store);Ext.namespace("GeoExt.data");GeoExt.data.LayerRecord=Ext.data.Record.create([{name:"layer"},{name:"title",type:"string",mapping:"name"}]);GeoExt.data.LayerRecord.create=function(o){var f=Ext.extend(GeoExt.data.LayerRecord,{});var p=f.prototype;p.fields=new Ext.util.MixedCollection(false,function(field){return field.name;});GeoExt.data.LayerRecord.prototype.fields.each(function(f){p.fields.add(f);});if(o){for(var i=0,len=o.length;i<len;i++){p.fields.add(new Ext.data.Field(o[i]));}}
f.getField=function(name){return p.fields.get(name);};return f;};Ext.namespace('GeoExt','GeoExt.legend');GeoExt.legend.Image=Ext.extend(Ext.BoxComponent,{url:null,imgCls:null,initComponent:function(){GeoExt.legend.Image.superclass.initComponent.call(this);this.autoEl={tag:'img','class':(this.imgCls?this.imgCls:''),src:this.url};},setUrl:function(url){if(this.getEl()){this.getEl().dom.src=url;}},onRender:function(ct,position){GeoExt.legend.Image.superclass.onRender.call(this,ct,position);this.getEl().on('error',this.onImageLoadError,this);},onDestroy:function(){this.getEl().un('error',this.onImageLoadError,this);GeoExt.legend.Image.superclass.onDestroy.apply(this,arguments);},onImageLoadError:function(){this.getEl().dom.src=Ext.BLANK_IMAGE_URL;}});Ext.reg('gx_legendimage',GeoExt.legend.Image);Ext.namespace("GeoExt.tree");GeoExt.tree.LayerNodeUI=Ext.extend(Ext.tree.TreeNodeUI,{radio:null,constructor:function(config){GeoExt.tree.LayerNodeUI.superclass.constructor.apply(this,arguments);},render:function(bulkRender){GeoExt.tree.LayerNodeUI.superclass.render.call(this,bulkRender);var a=this.node.attributes;if(a.radioGroup&&this.radio!==undefined){this.radio=Ext.DomHelper.insertAfter(this.checkbox,['<input type="radio" class="x-tree-node-radio" name="',a.radioGroup,'_radio"></input>'].join(""));}},onClick:function(e){if(e.getTarget('input[type=radio]',1)){this.fireEvent("radiochange",this.node);}else{GeoExt.tree.LayerNodeUI.superclass.onClick.call(this,e);}},toggleCheck:function(value){GeoExt.tree.LayerNodeUI.superclass.toggleCheck.call(this,value);var node=this.node;var layer=this.node.layer;node.visibilityChanging=true;if(this.checkbox&&(layer.getVisibility()!=this.isChecked())){layer.setVisibility(this.isChecked());}
node.visibilityChanging=false;},onDestroy:function(){delete this.radio;GeoExt.tree.LayerNodeUI.superclass.onDestroy.call(this);}});GeoExt.tree.LayerNode=Ext.extend(Ext.tree.TreeNode,{layer:null,layerStore:null,childNodeType:null,visibilityChanging:false,constructor:function(config){config.leaf=config.leaf||!config.children;config.iconCls=typeof config.iconCls=="undefined"&&!config.children?"layer-icon":config.iconCls;config.checked=false;this.defaultUI=this.defaultUI||GeoExt.tree.LayerNodeUI;this.addEvents("radiochange");Ext.apply(this,{layer:config.layer,layerStore:config.layerStore,childNodeType:config.childNodeType});GeoExt.tree.LayerNode.superclass.constructor.apply(this,arguments);},render:function(bulkRender){var layer=this.layer instanceof OpenLayers.Layer&&this.layer;if(!layer){if(!this.layerStore||this.layerStore=="auto"){this.layerStore=GeoExt.MapPanel.guess().layers;}
var i=this.layerStore.findBy(function(o){return o.get("title")==this.layer;},this);if(i!=-1){layer=this.layerStore.getAt(i).get("layer");}}
@@ -1086,7 +1086,12 @@
ui.show();ui.toggleCheck(layer.getVisibility());this.addVisibilityEventHandlers();this.attributes.checked=layer.getVisibility();}else{ui.hide();}
if(this.layerStore instanceof GeoExt.data.LayerStore){this.addStoreEventHandlers(layer);}}
GeoExt.tree.LayerNode.superclass.render.call(this,bulkRender);},addVisibilityEventHandlers:function(){this.layer.events.register("visibilitychanged",this,function(){if(!this.visibilityChanging&&this.attributes.checked!=this.layer.getVisibility()){this.getUI().toggleCheck(this.layer.getVisibility());}});this.on({"checkchange":function(node,checked){if(checked&&this.layer.isBaseLayer&&this.layer.map){this.layer.map.setBaseLayer(this.layer);}
-this.layer.setVisibility(checked);},scope:this});},addStoreEventHandlers:function(){this.layerStore.on({"add":function(store,records,index){var l;for(var i=0;i<records.length;++i){l=records[i].get("layer");if(this.layer==l){this.getUI().show();}else if(this.layer==l.name){this.render(bulkRender);return;}}},"remove":function(store,record,index){if(this.layer==record.get("layer")){this.getUI().hide();}},scope:this});},addChildNodes:function(){if(typeof this.childNodeType=="string"){Ext.tree.TreePanel.nodeTypes[this.childNodeType].add(this);}else if(typeof this.childNodeType.add==="function"){this.childNodeType.add(this);}}});Ext.tree.TreePanel.nodeTypes.gx_layer=GeoExt.tree.LayerNode;Ext.namespace('GeoExt','GeoExt.legend');GeoExt.legend.WMS=Ext.extend(Ext.Panel,{imageFormat:"image/gif",layer:null,bodyBorder:false,initComponent:function(){GeoExt.legend.WMS.superclass.initComponent.call(this);this.createLegend();},getLegendUrl:function(layerName){return this.layer.getFullRequestString({REQUEST:"GetLegendGraphic",WIDTH:null,HEIGHT:null,EXCEPTIONS:"application/vnd.ogc.se_xml",LAYER:layerName,LAYERS:null,SRS:null,FORMAT:this.imageFormat});},createLegend:function(){var layers=this.layer.params.LAYERS.split(",");for(var i=0,len=layers.length;i<len;i++){var layerName=layers[i];var legend=new GeoExt.legend.Image({url:this.getLegendUrl(layerName)});this.add(legend);}}});Ext.namespace('GeoExt');GeoExt.LegendPanel=Ext.extend(Ext.Panel,{dynamic:true,showTitle:true,labelCls:null,bodyStyle:'',layerStore:null,initComponent:function(){GeoExt.LegendPanel.superclass.initComponent.call(this);},onRender:function(){GeoExt.LegendPanel.superclass.onRender.apply(this,arguments);if(!this.layerStore){this.layerStore=GeoExt.MapPanel.guess().layers;}
+this.layer.setVisibility(checked);},scope:this});},addStoreEventHandlers:function(){this.layerStore.on({"add":function(store,records,index){var l;for(var i=0;i<records.length;++i){l=records[i].get("layer");if(this.layer==l){this.getUI().show();}else if(this.layer==l.name){this.render(bulkRender);return;}}},"remove":function(store,record,index){if(this.layer==record.get("layer")){this.getUI().hide();}},scope:this});},addChildNodes:function(){if(typeof this.childNodeType=="string"){Ext.tree.TreePanel.nodeTypes[this.childNodeType].add(this);}else if(typeof this.childNodeType.add==="function"){this.childNodeType.add(this);}}});Ext.tree.TreePanel.nodeTypes.gx_layer=GeoExt.tree.LayerNode;Ext.namespace("GeoExt.tree");GeoExt.tree.LayerContainer=Ext.extend(Ext.tree.TreeNode,{layerStore:null,defaults:null,constructor:function(config){this.layerStore=config.layerStore;this.defaults=config.defaults;GeoExt.tree.LayerContainer.superclass.constructor.apply(this,arguments);},render:function(bulkRender){if(!this.rendered){if(!this.layerStore){this.layerStore=GeoExt.MapPanel.guess().layers;}
+this.layerStore.each(function(record){this.addLayerNode(record);},this);this.layerStore.on({"add":this.onStoreAdd,"remove":this.onStoreRemove,scope:this});}
+GeoExt.tree.LayerContainer.superclass.render.call(this,bulkRender);},onStoreAdd:function(store,records,index){if(!this._reordering){var nodeIndex=this.recordIndexToNodeIndex(index);for(var i=0;i<records.length;++i){this.addLayerNode(records[i],nodeIndex);}}},onStoreRemove:function(store,record,index){if(!this._reordering){this.removeLayerNode(record);}},onDestroy:function(){if(this.layerStore){this.layerStore.un("add",this.onStoreAdd,this);this.layerStore.un("remove",this.onStoreRemove,this);}
+GeoExt.tree.LayerContainer.superclass.onDestroy.apply(this,arguments);},recordIndexToNodeIndex:function(index){var store=this.layerStore;var count=store.getCount();var nodeIndex=-1;for(var i=count-1;i>=0;--i){if(store.getAt(i).get("layer").displayInLayerSwitcher){++nodeIndex;if(index===i){break;}}};return nodeIndex;},nodeIndexToRecordIndex:function(index){var store=this.layerStore;var count=store.getCount();var nodeIndex=-1;for(var i=count-1;i>=0;--i){if(store.getAt(i).get("layer").displayInLayerSwitcher){++nodeIndex;if(index===nodeIndex){break;}}}
+return i;},addLayerNode:function(layerRecord,index){index=index||0;var layer=layerRecord.get("layer");if(layer.displayInLayerSwitcher===true){var node=new GeoExt.tree.LayerNode(Ext.applyIf({iconCls:layer.isBayeLayer?'baselayer-icon':'layer-icon',layer:layer,layerStore:this.layerStore},this.defaults));var sibling=this.item(index);if(sibling){this.insertBefore(node,sibling);}else{this.appendChild(node);}
+node.on("move",this.onChildMove,this);}},removeLayerNode:function(layerRecord){var layer=layerRecord.get("layer");if(layer.displayInLayerSwitcher==true){var node=this.findChildBy(function(node){return node.layer==layer;});if(node){node.un("move",this.onChildMove,this);node.remove();}}},onChildMove:function(tree,node,oldParent,newParent,index){if(oldParent===newParent){var newRecordIndex=this.nodeIndexToRecordIndex(index);var oldRecordIndex=this.layerStore.findBy(function(record){return record.get("layer")===node.layer;});var record=this.layerStore.getAt(oldRecordIndex);this._reordering=true;this.layerStore.remove(record);this.layerStore.insert(newRecordIndex,[record]);delete this._reordering;}}});Ext.tree.TreePanel.nodeTypes.gx_layercontainer=GeoExt.tree.LayerContainer;Ext.namespace("GeoExt.tree");GeoExt.tree.BaseLayerContainer=Ext.extend(GeoExt.tree.LayerContainer,{constructor:function(config){config.text=config.text||"Base Layer";GeoExt.tree.BaseLayerContainer.superclass.constructor.apply(this,arguments);},addLayerNode:function(layerRecord){var layer=layerRecord.get("layer");if(layer.isBaseLayer==true){GeoExt.tree.BaseLayerContainer.superclass.addLayerNode.call(this,layerRecord);}},removeLayerNode:function(layerRecord){var layer=layerRecord.get("layer");if(layer.isBaseLayer==true){GeoExt.tree.BaseLayerContainer.superclass.removeLayerNode.call(this,layerRecord);}}});Ext.tree.TreePanel.nodeTypes.gx_baselayercontainer=GeoExt.tree.BaseLayerContainer;Ext.namespace('GeoExt');GeoExt.LegendPanel=Ext.extend(Ext.Panel,{dynamic:true,showTitle:true,labelCls:null,bodyStyle:'',layerStore:null,initComponent:function(){GeoExt.LegendPanel.superclass.initComponent.call(this);},onRender:function(){GeoExt.LegendPanel.superclass.onRender.apply(this,arguments);if(!this.layerStore){this.layerStore=GeoExt.MapPanel.guess().layers;}
this.layerStore.each(function(record){this.addLegend(record);},this);if(this.dynamic){this.layerStore.on({"add":this.onStoreAdd,"remove":this.onStoreRemove,"update":this.onStoreUpdate,scope:this});}
this.doLayout();},recordIndexToPanelIndex:function(index){var store=this.layerStore;var count=store.getCount();var panelIndex=-1;for(var i=count-1;i>=0;--i){var layer=store.getAt(i).get("layer");var legendGenerator=GeoExt.legend[layer.CLASS_NAME.replace('OpenLayers.Layer.','')];if(layer.displayInLayerSwitcher&&legendGenerator&&(store.getAt(i).get("hideInLegend")!==true)){++panelIndex;if(index===i){break;}}};return panelIndex;},onStoreUpdate:function(store,record,operation){var layer=record.get('layer');var legend=this.getComponent(layer.id);if(legend){legend.setVisible(layer.getVisibility()&&layer.displayInLayerSwitcher&&!record.get('hideInLegend'));if(record.get('legendURL')){var items=legend.findByType('gx_legendimage');for(var i=0,len=items.length;i<len;i++){items[i].setUrl(record.get('legendURL'));}}}},onStoreAdd:function(store,records,index){var panelIndex=this.recordIndexToPanelIndex(index);for(var i=0,len=records.length;i<len;i++){this.addLegend(records[i],panelIndex);}
this.doLayout();},onStoreRemove:function(store,record,index){this.removeLegend(record);},removeLegend:function(record){var legend=this.getComponent(record.get('layer').id);if(legend){this.remove(legend,true);this.doLayout();}},createLegendSubpanel:function(record){var layer=record.get('layer');var mainPanel=this.createMainPanel(record);if(mainPanel!==null){if(record.get('legendURL')){var legend=new GeoExt.legend.Image({url:record.get('legendURL')});mainPanel.add(legend);}else{var legendGenerator=GeoExt.legend[layer.CLASS_NAME.replace('OpenLayers.Layer.','')];if(legendGenerator){var legend=new legendGenerator({layer:layer});mainPanel.add(legend);}}}
@@ -1094,7 +1099,7 @@
(this.labelCls?' '+this.labelCls:'')})]};panel=new Ext.Panel(panelConfig);}
return panel;},onDestroy:function(){if(this.layerStore){this.layerStore.un("add",this.onStoreAdd,this);this.layerStore.un("remove",this.onStoreRemove,this);}
GeoExt.LegendPanel.superclass.onDestroy.apply(this,arguments);}});Ext.reg('gx_legendpanel',GeoExt.LegendPanel);Ext.namespace("GeoExt");GeoExt.SliderTip=Ext.extend(Ext.Tip,{hover:true,dragging:false,minWidth:10,minWidth:10,offsets:[0,-10],init:function(slider){slider.on('dragstart',this.onSlide,this);slider.on('drag',this.onSlide,this);slider.on('dragend',this.hide,this);slider.on('destroy',this.destroy,this);if(this.hover){slider.on('render',this.registerThumbListeners,this);}
-this.slider=slider;},registerThumbListeners:function(){this.slider.thumb.on({"mouseover":function(){this.onSlide(this.slider);this.dragging=false;},"mouseout":function(){if(!this.dragging){this.hide.apply(this,arguments);}},scope:this});},onSlide:function(slider){this.dragging=true;this.show();this.body.update(this.getText(slider));this.doAutoWidth();this.el.alignTo(slider.thumb,'b-t?',this.offsets);},getText:function(slider){return slider.getValue();}});Ext.namespace("GeoExt.data");GeoExt.data.ScaleStore=Ext.extend(Ext.data.Store,{map:null,constructor:function(config){var map=(config.map instanceof GeoExt.MapPanel?config.map.map:config.map);delete config.map;config=Ext.applyIf(config,{reader:new Ext.data.JsonReader({},["level","resolution","scale"])});GeoExt.data.ScaleStore.superclass.constructor.call(this,config);if(map)this.bind(map);},bind:function(map,options){this.map=(map instanceof GeoExt.MapPanel?map.map:map);this.map.events.register('changebaselayer',this,this.populateFromMap);if(this.map.baseLayer){this.populateFromMap();}else{this.map.events.register('addlayer',this,this.populateOnAdd);}},unbind:function(){if(this.map){this.map.events.unregister('addlayer',this,this.populateOnAdd);this.map.events.unregister('changebaselayer',this,this.populateFromMap);delete this.map;}},populateOnAdd:function(evt){if(evt.layer.isBaseLayer){this.populateFromMap();this.map.events.unregister('addlayer',this,this.populateOnAdd);}},populateFromMap:function(){var zooms=[];for(var i=this.map.numZoomLevels-1;i>0;i--){var res=this.map.getResolutionForZoom(i);var units=this.map.baseLayer.units;var scale=OpenLayers.Util.getScaleFromResolution(res,units);zooms.push({level:i,resolution:res,scale:scale});}
+this.slider=slider;},registerThumbListeners:function(){this.slider.thumb.on({"mouseover":function(){this.onSlide(this.slider);this.dragging=false;},"mouseout":function(){if(!this.dragging){this.hide.apply(this,arguments);}},scope:this});},onSlide:function(slider){this.dragging=true;this.show();this.body.update(this.getText(slider));this.doAutoWidth();this.el.alignTo(slider.thumb,'b-t?',this.offsets);},getText:function(slider){return slider.getValue();}});Ext.namespace('GeoExt','GeoExt.legend');GeoExt.legend.WMS=Ext.extend(Ext.Panel,{imageFormat:"image/gif",layer:null,bodyBorder:false,initComponent:function(){GeoExt.legend.WMS.superclass.initComponent.call(this);this.createLegend();},getLegendUrl:function(layerName){return this.layer.getFullRequestString({REQUEST:"GetLegendGraphic",WIDTH:null,HEIGHT:null,EXCEPTIONS:"application/vnd.ogc.se_xml",LAYER:layerName,LAYERS:null,SRS:null,FORMAT:this.imageFormat});},createLegend:function(){var layers=this.layer.params.LAYERS.split(",");for(var i=0,len=layers.length;i<len;i++){var layerName=layers[i];var legend=new GeoExt.legend.Image({url:this.getLegendUrl(layerName)});this.add(legend);}}});Ext.namespace("GeoExt.data");GeoExt.data.ScaleStore=Ext.extend(Ext.data.Store,{map:null,constructor:function(config){var map=(config.map instanceof GeoExt.MapPanel?config.map.map:config.map);delete config.map;config=Ext.applyIf(config,{reader:new Ext.data.JsonReader({},["level","resolution","scale"])});GeoExt.data.ScaleStore.superclass.constructor.call(this,config);if(map)this.bind(map);},bind:function(map,options){this.map=(map instanceof GeoExt.MapPanel?map.map:map);this.map.events.register('changebaselayer',this,this.populateFromMap);if(this.map.baseLayer){this.populateFromMap();}else{this.map.events.register('addlayer',this,this.populateOnAdd);}},unbind:function(){if(this.map){this.map.events.unregister('addlayer',this,this.populateOnAdd);this.map.events.unregister('changebaselayer',this,this.populateFromMap);delete this.map;}},populateOnAdd:function(evt){if(evt.layer.isBaseLayer){this.populateFromMap();this.map.events.unregister('addlayer',this,this.populateOnAdd);}},populateFromMap:function(){var zooms=[];for(var i=this.map.numZoomLevels-1;i>0;i--){var res=this.map.getResolutionForZoom(i);var units=this.map.baseLayer.units;var scale=OpenLayers.Util.getScaleFromResolution(res,units);zooms.push({level:i,resolution:res,scale:scale});}
this.loadData(zooms);}});Ext.namespace("GeoExt");GeoExt.MapPanel=Ext.extend(Ext.Panel,{map:null,layers:null,center:null,zoom:null,extent:null,initComponent:function(){if(!(this.map instanceof OpenLayers.Map)){this.map=new OpenLayers.Map(Ext.applyIf(this.map||{},{allOverlays:true}));}
var layers=this.layers;if(!layers||layers instanceof Array){this.layers=new GeoExt.data.LayerStore({layers:layers,map:this.map});}
if(typeof this.center=="string"){this.center=OpenLayers.LonLat.fromString(this.center);}else if(this.center instanceof Array){this.center=new OpenLayers.LonLat(this.center[0],this.center[1]);}
@@ -1122,15 +1127,10 @@
if(popupPos[1]<padding.top){newPos[1]=padding.top;}else if(popupPos[1]+popupSize.height>panelSize[1]-padding.bottom){newPos[1]=panelSize[1]-padding.bottom-popupSize.height;}
var dx=popupPos[0]-newPos[0];var dy=popupPos[1]-newPos[1];this.map.pan(dx,dy);},beforeDestroy:function(){this.unbindFromMapPanel();GeoExt.Popup.superclass.beforeDestroy.call(this);}});Ext.reg('gx_popup',GeoExt.Popup);Ext.namespace("GeoExt");GeoExt.ScaleSlider=Ext.extend(Ext.Slider,{map:null,minValue:Number.MIN_VALUE,maxValue:Number.MAX_VALUE,baseCls:"gx-scaleslider",updating:false,initComponent:function(){GeoExt.ScaleSlider.superclass.initComponent.call(this);if(this.map){this.bind(this.map);}
this.on({"changecomplete":this.changeHandler,"beforedestroy":this.unbind,scope:this});},onRender:function(){GeoExt.ScaleSlider.superclass.onRender.apply(this,arguments);this.el.addClass(this.baseCls);},afterRender:function(){Ext.Slider.superclass.afterRender.apply(this,arguments);this.update();},addToMap:function(panel){this.on({render:function(){var el=this.getEl();el.setStyle({position:"absolute",zIndex:panel.map.Z_INDEX_BASE.Control});el.on({mousedown:this.stopMouseEvents,click:this.stopMouseEvents});},scope:this});this.bind(panel.map);},stopMouseEvents:function(e){e.stopEvent();},removeFromMap:function(panel){var el=this.getEl();el.un("mousedown",this.stopMouseEvents);el.un("click",this.stopMouseEvents);this.unbind();},bind:function(map){this.map=map;this.map.events.on({zoomend:this.update,changebaselayer:this.initZoomValues,scope:this});if(this.map.baseLayer){this.initZoomValues();}},unbind:function(){if(this.map){this.map.events.un({zoomend:this.update,changebaselayer:this.initZoomValues,scope:this});}},initZoomValues:function(){var layer=this.map.baseLayer;if(this.initialConfig.minValue===undefined){this.minValue=layer.minZoomLevel||1;}
-if(this.initialConfig.maxValue===undefined){this.maxValue=layer.maxZoomLevel||layer.numZoomLevels-1;}},getZoom:function(){return this.getValue();},getScale:function(){return OpenLayers.Util.getScaleFromResolution(this.map.getResolutionForZoom(this.getValue()),this.map.getUnits());},getResolution:function(){return this.map.getResolutionForZoom(this.getValue());},changeHandler:function(){if(this.map&&!this.updating){this.map.zoomTo(this.getValue());}},update:function(){if(this.rendered&&this.map){this.updating=true;this.setValue(this.map.getZoom());this.updating=false;}}});Ext.reg('gx_scaleslider',GeoExt.ScaleSlider);Ext.namespace("GeoExt.tree");GeoExt.tree.LayerContainer=Ext.extend(Ext.tree.TreeNode,{layerStore:null,defaults:null,constructor:function(config){this.layerStore=config.layerStore;this.defaults=config.defaults;GeoExt.tree.LayerContainer.superclass.constructor.apply(this,arguments);},render:function(bulkRender){if(!this.rendered){if(!this.layerStore){this.layerStore=GeoExt.MapPanel.guess().layers;}
-this.layerStore.each(function(record){this.addLayerNode(record);},this);this.layerStore.on({"add":this.onStoreAdd,"remove":this.onStoreRemove,scope:this});}
-GeoExt.tree.LayerContainer.superclass.render.call(this,bulkRender);},onStoreAdd:function(store,records,index){if(!this._reordering){var nodeIndex=this.recordIndexToNodeIndex(index);for(var i=0;i<records.length;++i){this.addLayerNode(records[i],nodeIndex);}}},onStoreRemove:function(store,record,index){if(!this._reordering){this.removeLayerNode(record);}},onDestroy:function(){if(this.layerStore){this.layerStore.un("add",this.onStoreAdd,this);this.layerStore.un("remove",this.onStoreRemove,this);}
-GeoExt.tree.LayerContainer.superclass.onDestroy.apply(this,arguments);},recordIndexToNodeIndex:function(index){var store=this.layerStore;var count=store.getCount();var nodeIndex=-1;for(var i=count-1;i>=0;--i){if(store.getAt(i).get("layer").displayInLayerSwitcher){++nodeIndex;if(index===i){break;}}};return nodeIndex;},nodeIndexToRecordIndex:function(index){var store=this.layerStore;var count=store.getCount();var nodeIndex=-1;for(var i=count-1;i>=0;--i){if(store.getAt(i).get("layer").displayInLayerSwitcher){++nodeIndex;if(index===nodeIndex){break;}}}
-return i;},addLayerNode:function(layerRecord,index){index=index||0;var layer=layerRecord.get("layer");if(layer.displayInLayerSwitcher===true){var node=new GeoExt.tree.LayerNode(Ext.applyIf({iconCls:layer.isBayeLayer?'baselayer-icon':'layer-icon',layer:layer,layerStore:this.layerStore},this.defaults));var sibling=this.item(index);if(sibling){this.insertBefore(node,sibling);}else{this.appendChild(node);}
-node.on("move",this.onChildMove,this);}},removeLayerNode:function(layerRecord){var layer=layerRecord.get("layer");if(layer.displayInLayerSwitcher==true){var node=this.findChildBy(function(node){return node.layer==layer;});if(node){node.un("move",this.onChildMove,this);node.remove();}}},onChildMove:function(tree,node,oldParent,newParent,index){if(oldParent===newParent){var newRecordIndex=this.nodeIndexToRecordIndex(index);var oldRecordIndex=this.layerStore.findBy(function(record){return record.get("layer")===node.layer;});var record=this.layerStore.getAt(oldRecordIndex);this._reordering=true;this.layerStore.remove(record);this.layerStore.insert(newRecordIndex,[record]);delete this._reordering;}}});Ext.tree.TreePanel.nodeTypes.gx_layercontainer=GeoExt.tree.LayerContainer;Ext.namespace("GeoExt");GeoExt.ScaleSliderTip=Ext.extend(GeoExt.SliderTip,{template:'<div>Zoom Level: {zoom}</div>'+'<div>Resolution: {resolution}</div>'+'<div>Scale: 1 : {scale}</div>',compiledTemplate:null,init:function(slider){this.compiledTemplate=new Ext.Template(this.template);GeoExt.ScaleSliderTip.superclass.init.call(this,slider);},getText:function(slider){var data={zoom:slider.getZoom(),resolution:slider.getResolution(),scale:Math.round(slider.getScale())};return this.compiledTemplate.apply(data);}});Ext.namespace("GeoExt","GeoExt.data");GeoExt.data.LayerReader=function(meta,recordType){meta=meta||{};if(!(recordType instanceof Function)){recordType=GeoExt.data.LayerRecord.create(recordType||meta.fields||{});}
+if(this.initialConfig.maxValue===undefined){this.maxValue=layer.maxZoomLevel||layer.numZoomLevels-1;}},getZoom:function(){return this.getValue();},getScale:function(){return OpenLayers.Util.getScaleFromResolution(this.map.getResolutionForZoom(this.getValue()),this.map.getUnits());},getResolution:function(){return this.map.getResolutionForZoom(this.getValue());},changeHandler:function(){if(this.map&&!this.updating){this.map.zoomTo(this.getValue());}},update:function(){if(this.rendered&&this.map){this.updating=true;this.setValue(this.map.getZoom());this.updating=false;}}});Ext.reg('gx_scaleslider',GeoExt.ScaleSlider);Ext.namespace("GeoExt");GeoExt.ScaleSliderTip=Ext.extend(GeoExt.SliderTip,{template:'<div>Zoom Level: {zoom}</div>'+'<div>Resolution: {resolution}</div>'+'<div>Scale: 1 : {scale}</div>',compiledTemplate:null,init:function(slider){this.compiledTemplate=new Ext.Template(this.template);GeoExt.ScaleSliderTip.superclass.init.call(this,slider);},getText:function(slider){var data={zoom:slider.getZoom(),resolution:slider.getResolution(),scale:Math.round(slider.getScale())};return this.compiledTemplate.apply(data);}});Ext.namespace("GeoExt","GeoExt.data");GeoExt.data.LayerReader=function(meta,recordType){meta=meta||{};if(!(recordType instanceof Function)){recordType=GeoExt.data.LayerRecord.create(recordType||meta.fields||{});}
GeoExt.data.LayerReader.superclass.constructor.call(this,meta,recordType);};Ext.extend(GeoExt.data.LayerReader,Ext.data.DataReader,{totalRecords:null,readRecords:function(layers){var records=[];if(layers){var recordType=this.recordType,fields=recordType.prototype.fields;var i,lenI,j,lenJ,layer,values,field,v;for(i=0,lenI=layers.length;i<lenI;i++){layer=layers[i];values={};for(j=0,lenJ=fields.length;j<lenJ;j++){field=fields.items[j];v=layer[field.mapping||field.name]||field.defaultValue;v=field.convert(v);values[field.name]=v;}
values.layer=layer;records[records.length]=new recordType(values,layer.id);}}
-return{records:records,totalRecords:this.totalRecords!=null?this.totalRecords:records.length};}});var Viewer=Ext.extend(Ext.util.Observable,{constructor:function(config){var query=Ext.urlDecode(document.location.search.substr(1));var queryConfig=Ext.util.JSON.decode(query.q);this.initialConfig=Ext.apply({},queryConfig,config);Ext.apply(this,config);this.addEvents("ready");if(this.proxy){OpenLayers.ProxyHost=this.proxy;}
+return{records:records,totalRecords:this.totalRecords!=null?this.totalRecords:records.length};}});Ext.namespace("GeoExt.tree");GeoExt.tree.OverlayLayerContainer=Ext.extend(GeoExt.tree.LayerContainer,{constructor:function(config){config.text=config.text||"Overlays";GeoExt.tree.OverlayLayerContainer.superclass.constructor.apply(this,arguments);},addLayerNode:function(layerRecord){var layer=layerRecord.get("layer");if(layer.isBaseLayer==false){GeoExt.tree.OverlayLayerContainer.superclass.addLayerNode.call(this,layerRecord);}},removeLayerNode:function(layerRecord){var layer=layerRecord.get("layer");if(layer.isBaseLayer==false){GeoExt.tree.OverlayLayerContainer.superclass.removeLayerNode.call(this,layerRecord);}}});Ext.tree.TreePanel.nodeTypes.gx_overlaylayercontainer=GeoExt.tree.OverlayLayerContainer;var Viewer=Ext.extend(Ext.util.Observable,{constructor:function(config){var query=Ext.urlDecode(document.location.search.substr(1));var queryConfig=Ext.util.JSON.decode(query.q);this.initialConfig=Ext.apply({},queryConfig,config);Ext.apply(this,config);this.addEvents("ready");if(this.proxy){OpenLayers.ProxyHost=this.proxy;}
this.load();},load:Ext.emptyFn,dispatch:function(functions,complete,scope){complete=complete||Ext.emptyFn;scope=scope||this;var requests=functions.length;var responses=0;var storage={};function respond(){++responses;if(responses===requests){complete.call(scope,storage);}}
function trigger(index){window.setTimeout(function(){functions[index].apply(scope,[respond,storage]);});}
for(var i=0;i<requests;++i){trigger(i);}}});Ext.grid.RowExpander=function(config){Ext.apply(this,config);this.addEvents({beforeexpand:true,expand:true,beforecollapse:true,collapse:true});Ext.grid.RowExpander.superclass.constructor.call(this);if(this.tpl){if(typeof this.tpl=='string'){this.tpl=new Ext.Template(this.tpl);}
@@ -1144,30 +1144,35 @@
this[Ext.fly(row).hasClass('x-grid3-row-collapsed')?'expandRow':'collapseRow'](row);},expandRow:function(row){if(typeof row=='number'){row=this.grid.view.getRow(row);}
var record=this.grid.store.getAt(row.rowIndex);var body=Ext.DomQuery.selectNode('tr:nth(2) div.x-grid3-row-body',row);if(this.beforeExpand(record,body,row.rowIndex)){this.state[record.id]=true;Ext.fly(row).replaceClass('x-grid3-row-collapsed','x-grid3-row-expanded');this.fireEvent('expand',this,record,body,row.rowIndex);}},collapseRow:function(row){if(typeof row=='number'){row=this.grid.view.getRow(row);}
var record=this.grid.store.getAt(row.rowIndex);var body=Ext.fly(row).child('tr:nth(1) div.x-grid3-row-body',true);if(this.fireEvent('beforecollapse',this,record,body,row.rowIndex)!==false){this.state[record.id]=false;Ext.fly(row).replaceClass('x-grid3-row-expanded','x-grid3-row-collapsed');this.fireEvent('collapse',this,record,body,row.rowIndex);}}});var CapabilitiesGrid=Ext.extend(Ext.grid.GridPanel,{store:null,cm:null,mapPanel:null,url:null,autoExpandColumn:"title",initComponent:function(){if(!this.store){this.store=new GeoExt.data.WMSCapabilitiesStore({url:this.url+"?service=wms&request=GetCapabilities"});this.store.load();}
-var expander=new Ext.grid.RowExpander({tpl:new Ext.Template('<p><b>Abstract:</b> {abstract}</p>')});this.plugins=expander;this.cm=new Ext.grid.ColumnModel([expander,{header:"Name",dataIndex:"name",width:180,sortable:true},{id:"title",header:"Title",dataIndex:"title",sortable:true},{header:"Queryable",dataIndex:"queryable"}]);CapabilitiesGrid.superclass.initComponent.call(this);},addLayers:function(){var sm=this.getSelectionModel();var records=sm.getSelections();var record,layer;for(var i=0;i<records.length;i++){record=records[i].copy(++Ext.data.Record.AUTO_ID);layer=record.get("layer");layer.restrictedExtent=OpenLayers.Bounds.fromArray(record.get("llbbox"));if(this.alignToGrid){layer.maxExtent=new OpenLayers.Bounds(-180,-90,180,90);}else{layer.maxExtent=layer.restrictedExtent;}
-this.mapPanel.layers.add(record);}}});var MapToolMenu=function(options){options.items=options.items||[];var disableTools=function(){for(var i=0,len=options.tools.length;i<len;i++){var t=options.tools[i].tool||options.tools[i];t.deactivate();}};for(var i=0,len=options.tools.length;i<len;i++){var conf=options.tools[i];var t=conf.tool||conf;options.items.push(Ext.applyIf(conf,{text:t.CLASS_NAME,iconCls:t.CLASS_NAME,handler:(function(tool){return function(){disableTools();tool.activate();};})(t),scope:this}));}
+var expander=new Ext.grid.RowExpander({tpl:new Ext.Template('<p><b>Abstract:</b> {abstract}</p>')});this.plugins=expander;this.cm=new Ext.grid.ColumnModel([expander,{header:"Name",dataIndex:"name",width:180,sortable:true},{id:"title",header:"Title",dataIndex:"title",sortable:true},{header:"Queryable",dataIndex:"queryable"}]);CapabilitiesGrid.superclass.initComponent.call(this);},addLayers:function(base){var sm=this.getSelectionModel();var records=sm.getSelections();var record,layer;for(var i=0;i<records.length;i++){Ext.data.Record.AUTO_ID++;record=records[i].copy(Ext.data.Record.AUTO_ID);layer=record.get("layer").clone();record.set("layer",null);record.set("layer",layer);layer.restrictedExtent=OpenLayers.Bounds.fromArray(record.get("llbbox"));if(this.alignToGrid){layer.maxExtent=new OpenLayers.Bounds(-180,-90,180,90);}else{layer.maxExtent=layer.restrictedExtent;}
+layer.setIsBaseLayer(!!base);this.mapPanel.layers.add(record);if(base){this.mapPanel.map.setBaseLayer(layer);layer.events.triggerEvent("visibilitychanged");}}}});var MapToolMenu=function(options){options.items=options.items||[];var disableTools=function(){for(var i=0,len=options.tools.length;i<len;i++){var t=options.tools[i].tool||options.tools[i];t.deactivate();}};for(var i=0,len=options.tools.length;i<len;i++){var conf=options.tools[i];var t=conf.tool||conf;options.items.push(Ext.applyIf(conf,{text:t.CLASS_NAME,iconCls:t.CLASS_NAME,handler:(function(tool){return function(){disableTools();tool.activate();};})(t),scope:this}));}
MapToolMenu.superclass.constructor.call(this,options);};Ext.extend(MapToolMenu,Ext.menu.Menu);var MapToolSplitToggle=function(options){this.lastActiveTool=options.defaultTool||options.tools[0];this.tools=options.tools;Ext.applyIf(options,{enableToggle:true,iconCls:this.findIconCls(),toggleHandler:this.handleEvent,handler:this.handleEvent,scope:this,menu:new MapToolMenu({tools:options.tools})});options.menu.on("itemclick",this.handleMenu,this);MapToolSplitToggle.superclass.constructor.call(this,options);if(options.toggleGroup){this.on("render",function(){Ext.ButtonToggleMgr.register(this);},this);}};Ext.extend(MapToolSplitToggle,Ext.SplitButton,{lastActiveTool:null,tools:null,onClick:function(e){e.preventDefault();if(!this.disabled){if(e.getTarget(".x-btn-menu-arrow-wrap")){if(this.menu&&!this.menu.isVisible()&&!this.ignoreNextClick){this.showMenu();}
this.fireEvent("arrowclick",this,e);if(this.arrowHandler){this.arrowHandler.call(this.scope||this,this,e);}}else{if(this.enableToggle&&(this.allowDepress!==false||!this.pressed)){this.toggle();}
-this.fireEvent("click",this,e);if(this.handler){this.handler.call(this.scope||this,this,e);}}}},handleEvent:function(item){if(item.pressed){this.lastActiveTool.activate();}else{this.lastActiveTool.deactivate();}},handleMenu:function(item,evt){for(var i=0,len=this.tools.length;i<len;i++){var t=this.tools[i].tool||this.tools[i];if(t.active){this.lastActiveTool=t;if(item.iconCls)this.setIconClass(item.iconCls);this.toggle(true);}}},findIconCls:function(){return this.lastActiveTool.CLASS_NAME;}});var GeoExplorer=Ext.extend(Viewer,{map:null,layers:null,capabilities:null,mapPanel:null,alignToGrid:false,capGrid:null,popupCache:{},load:function(){this.dispatch([function(done){Ext.onReady(function(){this.createLayout();done();},this);},function(done){this.initCapabilities();this.capabilities.load({callback:done});}],this.activate);},initCapabilities:function(){var url;var args={SERVICE:"WMS",REQUEST:"GetCapabilities"};var argIndex=this.ows.indexOf("?");if(argIndex>-1){var search=this.ows.substring(this.ows.indexOf("?")+1);var url=this.ows.replace(search,Ext.urlEncode(Ext.apply(Ext.urlDecode(search),args)));}else{url=this.ows+"?"+Ext.urlEncode(args);}
-if(this.proxy){url=this.proxy+encodeURIComponent(url);}
-this.capabilities=new GeoExt.data.WMSCapabilitiesStore({url:url});},createLayout:function(){this.map=new OpenLayers.Map({allOverlays:true,controls:[new OpenLayers.Control.PanPanel(),new OpenLayers.Control.ZoomPanel()]});var onDoubleClick=function(ctrl,evt){OpenLayers.Event.stop(evt?evt:window.event);};var controls=this.map.controls[0].controls;for(var i=0;i<controls.length;i++){OpenLayers.Event.observe(controls[i].panel_div,"dblclick",OpenLayers.Function.bind(onDoubleClick,this.map.controls[0],controls[i]));}
-this.map.events.on({"preaddlayer":function(evt){if(evt.layer.mergeNewParams){var maxExtent=evt.layer.maxExtent;evt.layer.mergeNewParams({transparent:true,format:"image/png",tiled:true,tilesorigin:[maxExtent.left,maxExtent.bottom]});}},scope:this});var mapConfig=this.initialConfig.map||{};this.mapPanel=new GeoExt.MapPanel({layout:"anchor",border:true,region:"center",map:this.map,center:mapConfig.center&&new OpenLayers.LonLat(mapConfig.center[0],mapConfig.center[1]),zoom:mapConfig.zoom,items:[{xtype:"gx_scaleslider",vertical:true,height:100,plugins:new GeoExt.ScaleSliderTip({template:"<div>Zoom Level: {zoom}</div>"})},this.createMapOverlay()]});this.layers=this.mapPanel.layers;var addLayerButton=new Ext.Button({tooltip:"Add Layers",disabled:true,iconCls:"icon-addlayers",handler:this.showCapabilitiesGrid,scope:this});this.on("ready",function(){addLayerButton.enable();});var removeLayerAction=new Ext.Action({text:"Remove Layer",iconCls:"icon-removelayers",disabled:true,tooltip:"Remove Layer",handler:function(){var node=layerTree.getSelectionModel().getSelectedNode();if(node&&node.layer){var layer=node.layer;var store=node.layerStore;store.removeAt(store.findBy(function(record){return record.get("layer")===layer;}));removeLayerAction.disable();}}});var layerTree=new Ext.tree.TreePanel({border:false,rootVisible:false,root:new GeoExt.tree.LayerContainer({text:'Map Layers',layerStore:this.layers}),enableDD:true,selModel:new Ext.tree.DefaultSelectionModel({listeners:{beforeselect:function(){removeLayerAction.enable();}}}),listeners:{contextmenu:function(node,e){node.select();var c=node.getOwnerTree().contextMenu;c.contextNode=node;c.showAt(e.getXY());},scope:this},contextMenu:new Ext.menu.Menu({items:[{text:"Zoom to Layer Extent",iconCls:"icon-zoom-visible",handler:function(){var node=layerTree.getSelectionModel().getSelectedNode();if(node&&node.layer){this.map.zoomToExtent(node.layer.restrictedExtent);}},scope:this},removeLayerAction]})});var layersContainer=new Ext.Panel({autoScroll:true,border:false,region:'center',title:"Layers",items:[layerTree],tbar:[addLayerButton,Ext.apply(new Ext.Button(removeLayerAction),{text:""})]});var legendContainer=new GeoExt.LegendPanel({title:"Legend",border:false,region:'south',height:200,collapsible:true,split:true,autoScroll:true,ascending:false,map:this.map,childDefaults:{border:false,cls:'legend-title'}});var westPanel=new Ext.Panel({border:true,layout:"border",region:"west",width:250,split:true,collapsible:true,collapseMode:"mini",items:[layersContainer,legendContainer]});var toolbar=new Ext.Toolbar({xtype:"toolbar",region:"north",disabled:true,items:this.createTools()});this.on("ready",function(){toolbar.enable();});var viewport=new Ext.Viewport({layout:"fit",hideBorders:true,items:{layout:"border",deferredRender:false,items:[toolbar,this.mapPanel,westPanel]}});},activate:function(){this.addLayers();Ext.QuickTips.init();this.fireEvent("ready");},addLayers:function(){var mapConfig=this.initialConfig.map;if(mapConfig&&mapConfig.layers){var conf,id,record,layer,records=[];for(var i=0;i<mapConfig.layers.length;++i){conf=mapConfig.layers[i];id=this.capabilities.find("name",conf.name);if(id>=0){record=this.capabilities.getAt(id).copy();layer=record.get("layer");layer.restrictedExtent=OpenLayers.Bounds.fromArray(record.get("llbbox"));if(this.alignToGrid){layer.maxExtent=new OpenLayers.Bounds(-180,-90,180,90);}else{layer.maxExtent=layer.restrictedExtent;}
+this.fireEvent("click",this,e);if(this.handler){this.handler.call(this.scope||this,this,e);}}}},handleEvent:function(item){if(item.pressed){this.lastActiveTool.activate();}else{this.lastActiveTool.deactivate();}},handleMenu:function(item,evt){for(var i=0,len=this.tools.length;i<len;i++){var t=this.tools[i].tool||this.tools[i];if(t.active){this.lastActiveTool=t;if(item.iconCls)this.setIconClass(item.iconCls);this.toggle(true);}}},findIconCls:function(){return this.lastActiveTool.CLASS_NAME;}});var GeoExplorer=Ext.extend(Viewer,{map:null,layers:null,capabilities:null,mapPanel:null,alignToGrid:false,capGrid:null,popupCache:{},layerSources:null,load:function(){this.layerSources=new Ext.data.SimpleStore({fields:["identifier","name","store","url"],data:[]});var dispatchQueue=[function(done){Ext.onReady(function(){this.createLayout();done();},this);}];for(var id in this.ows){dispatchQueue.push((function(id){return function(done){this.addSource(this.ows[id],id,done,done);};})(id));}
+this.dispatch(dispatchQueue,this.activate);},addSource:function(url,id,success,fail,scope){scope=scope||this;success=OpenLayers.Function.bind(success,scope);fail=OpenLayers.Function.bind(fail,scope);id=id||OpenLayers.Util.createUniqueID("source");var capsURL=this.createWMSCapabilitiesURL(url);OpenLayers.Request.GET({proxy:this.proxy,url:capsURL,success:function(request){var store=new GeoExt.data.WMSCapabilitiesStore();var data=request.responseXML||request.responseText;try{var format=new OpenLayers.Format.WMSCapabilities();var extractedData=format.read(data);store.loadData(data);}catch(err){OpenLayers.Console.error("Could not load source: "+url);fail();return;}
+var record=new this.layerSources.recordType({url:url,store:store,identifier:id,name:extractedData.service.title||id});this.layerSources.add(record);success(record);},failure:function(){OpenLayers.Console.error("Couldn't get capabilities document for ows '"+id+"'.");fail();},scope:this});},createWMSCapabilitiesURL:function(url){var args={SERVICE:"WMS",REQUEST:"GetCapabilities"};var argIndex=url.indexOf("?");if(argIndex>-1){var search=url.substring(url.indexOf("?")+1);url=url.replace(search,Ext.urlEncode(Ext.apply(Ext.urlDecode(search),args)));}else{url=url+"?"+Ext.urlEncode(args);}
+return url;},createLayout:function(){this.map=new OpenLayers.Map({allOverlays:true,controls:[new OpenLayers.Control.PanPanel(),new OpenLayers.Control.ZoomPanel()]});var onDoubleClick=function(ctrl,evt){OpenLayers.Event.stop(evt?evt:window.event);};var controls=this.map.controls[0].controls;for(var i=0;i<controls.length;i++){OpenLayers.Event.observe(controls[i].panel_div,"dblclick",OpenLayers.Function.bind(onDoubleClick,this.map.controls[0],controls[i]));}
+this.map.events.on({"preaddlayer":function(evt){if(evt.layer.mergeNewParams){var maxExtent=evt.layer.maxExtent;evt.layer.mergeNewParams({transparent:true,format:"image/png",tiled:true,tilesorigin:[maxExtent.left,maxExtent.bottom]});}},scope:this});var mapConfig=this.initialConfig.map||{};this.mapPanel=new GeoExt.MapPanel({layout:"anchor",border:true,region:"center",map:this.map,center:mapConfig.center&&new OpenLayers.LonLat(mapConfig.center[0],mapConfig.center[1]),zoom:mapConfig.zoom,items:[{xtype:"gx_scaleslider",vertical:true,height:100,plugins:new GeoExt.ScaleSliderTip({template:"<div>Zoom Level: {zoom}</div>"})},this.createMapOverlay()]});this.layers=this.mapPanel.layers;var addLayerButton=new Ext.Button({tooltip:"Add Layers",disabled:true,iconCls:"icon-addlayers",handler:this.showCapabilitiesGrid,scope:this});this.on("ready",function(){addLayerButton.enable();});var selectionModel=new Ext.tree.DefaultSelectionModel({listeners:{beforeselect:function(){removeLayerAction.enable();}}});var removeLayerAction=new Ext.Action({text:"Remove Layer",iconCls:"icon-removelayers",disabled:true,tooltip:"Remove Layer",handler:function(){var node=selectionModel.getSelectedNode();if(node&&node.layer){var layer=node.layer;var store=node.layerStore;store.remove(store.getAt(store.findBy(function(record){return record.get("layer")===layer;})));removeLayerAction.disable();}}});var layerTreeConfig={border:true,rootVisible:false,enableDD:true,selModel:selectionModel,listeners:{contextmenu:function(node,e){node.select();var c=node.getOwnerTree().contextMenu;c.contextNode=node;c.showAt(e.getXY());},scope:this},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},removeLayerAction]})};var overlayLayerTree=new Ext.tree.TreePanel(Ext.apply({root:new GeoExt.tree.OverlayLayerContainer({layerStore:this.layerStore}),ddGroup:"OverlayLayerDD"},layerTreeConfig));var baseLayerTree=new Ext.tree.TreePanel(Ext.apply({root:new GeoExt.tree.BaseLayerContainer({layerStore:this.layerStore}),ddGroup:"BaseLayerDD"},layerTreeConfig));var layersContainer=new Ext.Panel({autoScroll:true,border:false,region:'center',title:"Layers",items:[overlayLayerTree,baseLayerTree],tbar:[addLayerButton,Ext.apply(new Ext.Button(removeLayerAction),{text:""})]});var legendContainer=new GeoExt.LegendPanel({title:"Legend",border:false,region:'south',height:200,collapsible:true,split:true,autoScroll:true,ascending:false,map:this.map,childDefaults:{border:false,cls:'legend-title'}});var westPanel=new Ext.Panel({border:true,layout:"border",region:"west",width:250,split:true,collapsible:true,collapseMode:"mini",items:[layersContainer,legendContainer]});var toolbar=new Ext.Toolbar({xtype:"toolbar",region:"north",disabled:true,items:this.createTools()});this.on("ready",function(){toolbar.enable();});var viewport=new Ext.Viewport({layout:"fit",hideBorders:true,items:{layout:"border",deferredRender:false,items:[toolbar,this.mapPanel,westPanel]}});},activate:function(){this.addLayers();Ext.QuickTips.init();this.fireEvent("ready");},addLayers:function(){var mapConfig=this.initialConfig.map;if(mapConfig&&mapConfig.layers){var records=[];for(var i=0;i<mapConfig.layers.length;++i){var conf=mapConfig.layers[i];var index=this.layerSources.find("identifier",conf.ows);if(index==-1){continue;}
+var record=this.layerSources.getAt(index);var store=record.data.store;var id=store.find("name",conf.name);if(id>=0){record=store.getAt(id).copy();var layer=record.get("layer");layer.restrictedExtent=OpenLayers.Bounds.fromArray(record.get("llbbox"));if(this.alignToGrid){layer.maxExtent=new OpenLayers.Bounds(-180,-90,180,90);}else{layer.maxExtent=layer.restrictedExtent;}
layer.visibility=("visibility"in conf)?conf.visibility:true;if(conf.title){layer.name=conf.title;}
-records.push(record);}}
-this.layers.add(records);if(this.mapPanel.center){this.map.setCenter(this.mapPanel.center,this.mapPanel.zoom);}else if(this.mapPanel.extent){this.map.zoomToExtent(this.mapPanel.extent);}else{this.map.zoomToMaxExtent();}}},initCapGrid:function(){var capGridPanel=new CapabilitiesGrid({store:this.capabilities,mapPanel:this.mapPanel,layout:'fit',region:'center',autoScroll:true,alignToGrid:this.alignToGrid,listeners:{rowdblclick:function(panel,index,evt){panel.addLayers();}}});this.capGrid=new Ext.Window({title:"Available Layers",closeAction:'hide',layout:'border',height:300,width:600,items:[capGridPanel],bbar:["->",new Ext.Button({text:"Add Layers",iconCls:"icon-addlayers",handler:function(){capGridPanel.addLayers();},scope:this}),new Ext.Button({text:"Done",handler:function(){this.capGrid.hide();},scope:this})],listeners:{hide:function(win){capGridPanel.getSelectionModel().clearSelections();}}});},showCapabilitiesGrid:function(){if(!this.capGrid){this.initCapGrid();}
-this.capGrid.show();},createMapOverlay:function(){var scaleLinePanel=new Ext.Panel({cls:'olControlScaleLine overlay-element overlay-scaleline',border:false});scaleLinePanel.on('render',function(){var scaleLine=new OpenLayers.Control.ScaleLine({div:scaleLinePanel.body.dom});this.map.addControl(scaleLine);scaleLine.activate();},this);var zoomStore=new GeoExt.data.ScaleStore({map:this.map});var zoomSelector=new Ext.form.ComboBox({emptyText:'Zoom level',tpl:'<tpl for="."><div class="x-combo-list-item">1 : {[parseInt(values.scale)]}</div></tpl>',editable:false,triggerAction:'all',mode:'local',store:zoomStore,width:110});zoomSelector.on('click',function(evt){evt.stopEvent();});zoomSelector.on('mousedown',function(evt){evt.stopEvent();});zoomSelector.on('select',function(combo,record,index){this.map.zoomTo(record.data.level);},this);var zoomSelectorWrapper=new Ext.Panel({items:[zoomSelector],cls:'overlay-element overlay-scalechooser',border:false});this.map.events.register('zoomend',this,function(){var scale=zoomStore.queryBy(function(record){return this.map.getZoom()==record.data.level;});if(scale.length>0){scale=scale.items[0];zoomSelector.setValue("1 : "+parseInt(scale.data.scale,10));}else{if(!zoomSelector.rendered)return;zoomSelector.clearValue();}});var mapOverlay=new Ext.Panel({cls:'map-overlay',items:[scaleLinePanel,zoomSelectorWrapper]});mapOverlay.on("afterlayout",function(){scaleLinePanel.body.dom.style.position='relative';scaleLinePanel.body.dom.style.display='inline';mapOverlay.getEl().on("click",function(x){x.stopEvent();});mapOverlay.getEl().on("mousedown",function(x){x.stopEvent();});},this);return mapOverlay;},createTools:function(){var navControl=new OpenLayers.Control.Navigation();this.map.addControl(navControl);var historyControl=new OpenLayers.Control.NavigationHistory();var navPreviousButton=new Ext.Button({tooltip:"Zoom to Previous Extent",iconCls:"icon-zoom-previous",disabled:true,handler:function(){historyControl.previous.trigger();}});historyControl.previous.events.on({activate:function(){navPreviousButton.enable();},deactivate:function(){navPreviousButton.disable();}});var navNextButton=new Ext.Button({tooltip:"Zoom to Next Extent",iconCls:"icon-zoom-next",disabled:true,handler:function(){historyControl.next.trigger();}});historyControl.next.events.on({activate:function(){navNextButton.enable();},deactivate:function(){navNextButton.disable();}});this.map.addControl(historyControl);var toolGroup="toolGroup";var info={controls:[]};var infoButton=new Ext.Button({tooltip:"Get Feature Info",iconCls:"icon-getfeatureinfo",toggleGroup:toolGroup,enableToggle:true,allowDepress:false,toggleHandler:function(button,pressed){for(var i=0,len=info.controls.length;i<len;i++){if(pressed){info.controls[i].activate();}else{info.controls[i].deactivate();}}}})
-var updateInfo=function(){var queryableLayers=this.mapPanel.layers.queryBy(function(x){return x.get("queryable");});var map=this.mapPanel.map;var gx=this;for(var i=0,len=info.controls.length;i<len;i++){map.removeControl(info.controls[i]);}
+layer.setIsBaseLayer("isBaseLayer"in conf?conf.isBaseLayer:false);records.push(record);}}
+this.layers.add(records);if(this.mapPanel.center){this.map.setCenter(this.mapPanel.center,this.mapPanel.zoom);}else if(this.mapPanel.extent){this.map.zoomToExtent(this.mapPanel.extent);}else{this.map.zoomToMaxExtent();}}},initCapGrid:function(){var firstSource=this.layerSources.getAt(0);var capGridPanel=new CapabilitiesGrid({store:firstSource.data.store,mapPanel:this.mapPanel,layout:'fit',region:'center',autoScroll:true,alignToGrid:this.alignToGrid,listeners:{rowdblclick:function(panel,index,evt){panel.addLayers();}}});var sourceComboBox=new Ext.form.ComboBox({store:this.layerSources,valueField:"identifier",displayField:"name",triggerAction:"all",editable:false,allowBlank:false,forceSelection:true,mode:"local",value:firstSource.data.identifier});sourceComboBox.on("select",function(combo,record,index){capGridPanel.reconfigure(record.data.store,capGridPanel.getColumnModel());},this);var newSourceWindow=new GeoExplorer.NewSourceWindow();newSourceWindow.on("server-added",function(url){newSourceWindow.setLoading();var success=function(record){var index=this.layerSources.find("identifier",record.data.identifier)
+sourceComboBox.fireEvent("select",sourceComboBox,record,index);newSourceWindow.hide();};var failure=function(){newSourceWindow.setError("Error contacting server.\nPlease check the url and try again.");};this.addSource(url,null,success,failure,this);},this);this.capGrid=new Ext.Window({title:"Available Layers",closeAction:'hide',layout:'border',height:300,width:600,items:[capGridPanel],tbar:[new Ext.Toolbar.TextItem({text:"View available data from:"}),sourceComboBox,new Ext.Button({text:"or add a new server.",handler:function(){newSourceWindow.show();},scope:this})],bbar:["->",new Ext.Button({text:"Add Layers",iconCls:"icon-addlayers",handler:function(){capGridPanel.addLayers();},scope:this}),new Ext.Button({text:"Done",handler:function(){this.capGrid.hide();},scope:this})],listeners:{hide:function(win){capGridPanel.getSelectionModel().clearSelections();}}});},showCapabilitiesGrid:function(){if(!this.capGrid){this.initCapGrid();}
+this.capGrid.show();},createMapOverlay:function(){var scaleLinePanel=new Ext.Panel({cls:'olControlScaleLine overlay-element overlay-scaleline',border:false});scaleLinePanel.on('render',function(){var scaleLine=new OpenLayers.Control.ScaleLine({div:scaleLinePanel.body.dom});this.map.addControl(scaleLine);scaleLine.activate();},this);var zoomStore=new GeoExt.data.ScaleStore({map:this.map});var zoomSelector=new Ext.form.ComboBox({emptyText:'Zoom level',tpl:'<tpl for="."><div class="x-combo-list-item">1 : {[parseInt(values.scale)]}</div></tpl>',editable:false,triggerAction:'all',mode:'local',store:zoomStore,width:110});zoomSelector.on('click',function(evt){evt.stopEvent();});zoomSelector.on('mousedown',function(evt){evt.stopEvent();});zoomSelector.on('select',function(combo,record,index){this.map.zoomTo(record.data.level);},this);var zoomSelectorWrapper=new Ext.Panel({items:[zoomSelector],cls:'overlay-element overlay-scalechooser',border:false});this.map.events.register('zoomend',this,function(){var scale=zoomStore.queryBy(function(record){return this.map.getZoom()==record.data.level;});if(scale.length>0){scale=scale.items[0];zoomSelector.setValue("1 : "+parseInt(scale.data.scale,10));}else{if(!zoomSelector.rendered)return;zoomSelector.clearValue();}});var mapOverlay=new Ext.Panel({cls:'map-overlay',items:[scaleLinePanel,zoomSelectorWrapper]});mapOverlay.on("afterlayout",function(){scaleLinePanel.body.dom.style.position='relative';scaleLinePanel.body.dom.style.display='inline';mapOverlay.getEl().on("click",function(x){x.stopEvent();});mapOverlay.getEl().on("mousedown",function(x){x.stopEvent();});},this);return mapOverlay;},createTools:function(){var navControl=new OpenLayers.Control.Navigation();this.map.addControl(navControl);var historyControl=new OpenLayers.Control.NavigationHistory();var navPreviousButton=new Ext.Button({tooltip:"Zoom to Previous Extent",iconCls:"icon-zoom-previous",disabled:true,handler:function(){historyControl.previous.trigger();}});historyControl.previous.events.on({activate:function(){navPreviousButton.enable();},deactivate:function(){navPreviousButton.disable();}});var navNextButton=new Ext.Button({tooltip:"Zoom to Next Extent",iconCls:"icon-zoom-next",disabled:true,handler:function(){historyControl.next.trigger();}});historyControl.next.events.on({activate:function(){navNextButton.enable();},deactivate:function(){navNextButton.disable();}});this.map.addControl(historyControl);var toolGroup="toolGroup";var info={controls:[]};var infoButton=new Ext.Button({tooltip:"Get Feature Info",iconCls:"icon-getfeatureinfo",toggleGroup:toolGroup,enableToggle:true,allowDepress:false,toggleHandler:function(button,pressed){for(var i=0,len=info.controls.length;i<len;i++){if(pressed){info.controls[i].activate();}else{info.controls[i].deactivate();}}}});var updateInfo=function(){var queryableLayers=this.mapPanel.layers.queryBy(function(x){return x.get("queryable");});var map=this.mapPanel.map;var gx=this;for(var i=0,len=info.controls.length;i<len;i++){map.removeControl(info.controls[i]);}
info.controls=[];queryableLayers.each(function(x){var control=new OpenLayers.Control.WMSGetFeatureInfo({url:x.get("layer").url,queryVisible:true,layers:[x.get("layer")],eventListeners:{getfeatureinfo:function(evt){gx.displayPopup(evt,x.get("title"));},scope:gx}});map.addControl(control);info.controls.push(control);});};this.mapPanel.layers.on("update",updateInfo,this);this.mapPanel.layers.on("add",updateInfo,this);this.mapPanel.layers.on("remove",updateInfo,this);var measureLength=this.createMeasureTool(OpenLayers.Handler.Path,'Length');this.map.addControl(measureLength);var measureArea=this.createMeasureTool(OpenLayers.Handler.Polygon,'Area');this.map.addControl(measureArea);var tools=[new Ext.Button({tooltip:"Pan Map",iconCls:"icon-pan",enableToggle:true,pressed:true,allowDepress:false,toggleGroup:toolGroup,toggleHandler:function(b,pressed){if(pressed){navControl.activate();}else{navControl.deactivate();}},scope:this}),infoButton,new MapToolSplitToggle({tooltip:"Measure",iconCls:"icon-measure-length",defaultTool:measureLength,allowDepress:false,tools:[{text:'Length',tool:measureLength,iconCls:'icon-measure-length'},{text:'Area',tool:measureArea,iconCls:'icon-measure-area'}],enableToggle:true,toggleGroup:toolGroup}),"-",new Ext.Button({handler:function(){this.map.zoomIn();},tooltip:"Zoom In",iconCls:"icon-zoom-in",scope:this}),new Ext.Button({tooltip:"Zoom Out",handler:function(){this.map.zoomOut();},iconCls:"icon-zoom-out",scope:this}),navPreviousButton,navNextButton,new Ext.Button({tooltip:"Zoom to Visible Extent",iconCls:"icon-zoom-visible",handler:function(){var extent,layer;for(var i=0,len=this.map.layers.length;i<len;++i){layer=this.map.layers[i];if(layer.getVisibility()){if(extent){extent.extend(layer.maxExtent);}else{extent=layer.maxExtent.clone();}}}
if(extent){this.map.zoomToExtent(extent);}},scope:this})];return tools;},createMeasureTool:function(handlerType,title){var styleMap=new OpenLayers.StyleMap({"default":new OpenLayers.Style(null,{rules:[new OpenLayers.Rule({symbolizer:{"Point":{pointRadius:4,graphicName:"square",fillColor:"white",fillOpacity:1,strokeWidth:1,strokeOpacity:1,strokeColor:"#333333"},"Line":{strokeWidth:3,strokeOpacity:1,strokeColor:"#666666",strokeDashstyle:"dash"},"Polygon":{strokeWidth:2,strokeOpacity:1,strokeColor:"#666666",fillColor:"white",fillOpacity:0.3}}})]})});var cleanup=function(){if(measureToolTip){measureToolTip.destroy();}};var makeString=function(metricData){var metric=metricData.measure;var metricUnit=metricData.units;measureControl.displaySystem="english";var englishData=metricData.geometry.CLASS_NAME.indexOf("LineString")>-1?measureControl.getBestLength(metricData.geometry):measureControl.getBestArea(metricData.geometry);var english=englishData[0];var englishUnit=englishData[1];measureControl.displaySystem="metric";var dim=metricData.order==2?'<sup>2</sup>':'';return metric.toFixed(2)+" "+metricUnit+dim+"<br>"+
english.toFixed(2)+" "+englishUnit+dim;};var measureToolTip;var measureControl=new OpenLayers.Control.Measure(handlerType,{persist:true,handlerOptions:{layerOptions:{styleMap:styleMap}},eventListeners:{measurepartial:function(event){cleanup();measureToolTip=new Ext.ToolTip({target:Ext.getBody(),html:makeString(event),title:title,autoHide:false,closable:true,draggable:false,mouseOffset:[0,0],showDelay:1,listeners:{hide:cleanup}});if(event.measure>0){var px=measureControl.handler.lastUp;var p0=this.mapPanel.getPosition();measureToolTip.targetXY=[p0[0]+px.x,p0[1]+px.y];measureToolTip.show();}},measure:function(event){cleanup();measureToolTip=new Ext.ToolTip({target:Ext.getBody(),html:makeString(event),title:title,autoHide:false,closable:true,draggable:false,mouseOffset:[0,0],showDelay:1,listeners:{hide:function(){measureControl.cancel();cleanup();}}});},deactivate:cleanup,scope:this}});return measureControl;},displayPopup:function(evt,title){var popup;var popupKey=evt.xy.x+"."+evt.xy.y;if(!(popupKey in this.popupCache)){var lonlat=this.map.getLonLatFromPixel(evt.xy);popup=new GeoExt.Popup({title:"Feature Info",lonlat:lonlat,width:250,height:300,autoScroll:true,listeners:{close:(function(key){return function(panel){delete this.popupCache[key];};})(popupKey),scope:this}});popup.addToMapPanel(this.mapPanel);popup.show();this.popupCache[popupKey]=popup;}else{popup=this.popupCache[popupKey];}
-var html=evt.text;if(!(html==''||html.match(/<body>\s*<\/body>/))){popup.add({title:title,html:html,autoScroll:true,collapsible:true});}
+var html=evt.text;if(!(html===''||html.match(/<body>\s*<\/body>/))){popup.add({title:title,html:html,autoScroll:true,collapsible:true});}
popup.doLayout();},bookmark:function(){var config=this.extractConfiguration();var query=Ext.urlEncode({q:Ext.util.JSON.encode(config)});var url=document.location.protocol+"//"+
document.location.hostname+
-document.location.pathname+"?"+query;var win=new Ext.Window({title:"Bookmark URL",layout:'form',items:[{xtype:'textfield',fieldLabel:'Permalink',readOnly:true,value:url}],width:300});win.show();return url;},extractConfiguration:function(){var config={};var center=this.map.getCenter();config.map={center:[center.lon,center.lat],zoom:this.map.zoom};config.map.layers=[];this.layers.each(function(layerRecord){var c={title:layerRecord.get("title"),name:(layerRecord.get("layer").params&&layerRecord.get("layer").params.LAYERS)||layerRecord.get("name"),visibility:layerRecord.get("layer").getVisibility()};config.map.layers.push(c);});return config;},displayAppInfo:function(){var win=new Ext.Window({title:"About GeoExplorer",html:"<iframe style=\"border: none; height: 100%; width: 100%\" src=\"about.html\"><a target=\"_blank\" href=\"about.html\">About GeoExplorer</a> </iframe>",modal:true,width:300,height:350});win.show();}});GeoExplorer.Full=Ext.extend(GeoExplorer,{createTools:function(){var tools=GeoExplorer.Full.superclass.createTools.apply(this,arguments);var aboutButton=new Ext.Button({text:"GeoExplorer",iconCls:"icon-geoexplorer",handler:this.displayAppInfo});tools.unshift("-");tools.unshift(new Ext.Button({tooltip:"Bookmark",handler:this.bookmark,scope:this,iconCls:"icon-save"}));tools.unshift(new Ext.Button({tooltip:"Export as blog widget",text:'Export',handler:this.showEmbedWizard,scope:this,iconCls:'icon-save'}));tools.unshift("-");tools.unshift(aboutButton);return tools;},showEmbedWizard:function(){var config=this.extractConfiguration();var finalize=this.makeFinalWizardPane(config);var wizard=new GeoExplorer.Wizard({height:300,width:400,resizable:false,modal:true,title:"Export Map",pages:[{title:'Finish',panel:finalize}]});wizard.show();},makeFinalWizardPane:function(config){var description=new Ext.Panel({html:'<p> Your map is ready to be published to the web! </p>'+'<p> Simply copy the following HTML to embed the map in your website: </p>',border:false});var snippetArea=new Ext.form.TextArea({editable:false,height:'100'});var heightField=new Ext.form.NumberField({width:50,value:400});var widthField=new Ext.form.NumberField({width:50,value:600});var updateSnippet=function(){var query=Ext.urlEncode({q:Ext.util.JSON.encode(config)});var pathname=document.location.pathname.replace(/\/[^/]*$/,'/embed.html');var url=document.location.protocol+"//"+
+document.location.pathname+"?"+query;var win=new Ext.Window({title:"Bookmark URL",layout:'form',items:[{xtype:'textfield',fieldLabel:'Permalink',readOnly:true,value:url}],width:300});win.show();return url;},extractConfiguration:function(){var config={};var center=this.map.getCenter();config.map={center:[center.lon,center.lat],zoom:this.map.zoom};config.map.layers=[];this.layers.each(function(layerRecord){var c={title:layerRecord.get("title"),name:(layerRecord.get("layer").params&&layerRecord.get("layer").params.LAYERS)||layerRecord.get("name"),visibility:layerRecord.get("layer").getVisibility()};config.map.layers.push(c);});return config;},displayAppInfo:function(){var win=new Ext.Window({title:"About GeoExplorer",html:"<iframe style=\"border: none; height: 100%; width: 100%\" src=\"about.html\"><a target=\"_blank\" href=\"about.html\">About GeoExplorer</a> </iframe>",modal:true,width:300,height:350});win.show();}});GeoExplorer.Full=Ext.extend(GeoExplorer,{createTools:function(){var tools=GeoExplorer.Full.superclass.createTools.apply(this,arguments);var aboutButton=new Ext.Button({text:"GeoExplorer",iconCls:"icon-geoexplorer",handler:this.displayAppInfo});tools.unshift("-");tools.unshift(new Ext.Button({tooltip:"Bookmark",handler:this.bookmark,scope:this,iconCls:"icon-save"}));tools.unshift(new Ext.Button({tooltip:"Export as blog widget",text:'Export',handler:this.showEmbedWizard,scope:this,iconCls:'icon-save'}));tools.unshift("-");tools.unshift(aboutButton);return tools;},showEmbedWizard:function(){var config=this.extractConfiguration();var layerSelection=this.makeLayerWizardPane(config);var finalize=this.makeFinalWizardPane(config);var wizard=new GeoExplorer.Wizard({height:300,width:400,resizable:false,modal:true,title:"Export Map",pages:[{title:'Choose Layers',panel:layerSelection},{title:'Finish',panel:finalize}]});wizard.show();},makeFinalWizardPane:function(config){var description=new Ext.Panel({cls:'gx-wizard-description',html:'<p> Your map is ready to be published to the web! </p>'+'<p> Simply copy the following HTML to embed the map in your website: </p>',border:false});var snippetArea=new Ext.form.TextArea({height:'100',selectOnFocus:true,enableKeyEvents:true,listeners:{keypress:function(area,evt){evt.stopEvent();}}});var heightField=new Ext.form.NumberField({width:50,value:400});var widthField=new Ext.form.NumberField({width:50,value:600});var updateSnippet=function(){var query=Ext.urlEncode({q:Ext.util.JSON.encode(config)});var pathname=document.location.pathname.replace(/\/[^\/]*$/,'/embed.html');var url=document.location.protocol+"//"+
document.location.hostname+
-pathname+"?"+query;snippetArea.setValue('<iframe height="'+heightField.getValue()+' " width="'+widthField.getValue()+'" src="'+url+'"> </iframe>');};heightField.on("change",updateSnippet);widthField.on("change",updateSnippet);updateSnippet();var snippet=new Ext.Panel({border:false,layout:'fit',items:[snippetArea]});var adjustments=new Ext.Panel({layout:"column",items:[new Ext.Panel({border:false,width:90,items:[new Ext.form.ComboBox({editable:false,width:70,store:new Ext.data.SimpleStore({fields:["name","height","width"],data:[["Mini",100,100],["Small",200,300],["Large",400,600],["Premium",600,800]]}),triggerAction:'all',displayField:'name',value:"Large",mode:'local',listeners:{'select':function(combo,record,index){widthField.setValue(record.get("width"));heightField.setValue(record.get("height"));updateSnippet();}}})]}),{html:"Height",border:false},heightField,{html:"Width",border:false},widthField],border:false});return new Ext.Panel({items:[description,snippet,{html:"Map Size",border:false},adjustments]});}});Ext.namespace("GeoExplorer");GeoExplorer.Embed=Ext.extend(GeoExplorer,{createLayout:function(){this.map=new OpenLayers.Map({allOverlays:true,controls:[new OpenLayers.Control.PanPanel(),new OpenLayers.Control.ZoomPanel()]});var onDoubleClick=function(ctrl,evt){OpenLayers.Event.stop(evt?evt:window.event);};var controls=this.map.controls[0].controls;for(var i=0;i<controls.length;i++){OpenLayers.Event.observe(controls[i].panel_div,"dblclick",OpenLayers.Function.bind(onDoubleClick,this.map.controls[0],controls[i]));}
-this.map.events.on({"preaddlayer":function(evt){if(evt.layer.mergeNewParams){var maxExtent=evt.layer.maxExtent;evt.layer.mergeNewParams({transparent:true,format:"image/png",tiled:true,tilesorigin:[maxExtent.left,maxExtent.bottom]});}},scope:this});var mapConfig=this.initialConfig.map||{};this.mapPanel=new GeoExt.MapPanel({layout:"anchor",border:true,region:"center",map:this.map,center:mapConfig.center&&new OpenLayers.LonLat(mapConfig.center[0],mapConfig.center[1]),zoom:mapConfig.zoom,items:[{xtype:"gx_scaleslider",vertical:true,height:100,plugins:new GeoExt.ScaleSliderTip({template:"<div>Zoom Level: {zoom}</div>"})},this.createMapOverlay()]});this.layers=this.mapPanel.layers;var addLayerButton=new Ext.Button({tooltip:"Add Layers",disabled:true,iconCls:"icon-addlayers",handler:this.showCapabilitiesGrid,scope:this});this.on("ready",function(){addLayerButton.enable();});var toolbar=new Ext.Toolbar({xtype:"toolbar",region:"north",disabled:true,items:this.createTools()});this.on("ready",function(){toolbar.enable();});var viewport=new Ext.Viewport({layout:"fit",hideBorders:true,items:{layout:"border",deferredRender:false,items:[toolbar,this.mapPanel]}});},createTools:function(){var tools=GeoExplorer.Embed.superclass.createTools.apply(this,arguments);var menu=new Ext.menu.Menu();var updateLayerSwitcher=function(){menu.removeAll();menu.getEl().addClass("gx-layer-menu");menu.getEl().applyStyles({width:'',height:''});menu.addItem(new Ext.menu.TextItem({text:'Layers'}));this.mapPanel.layers.each(function(x){if(x.get("layer").displayInLayerSwitcher){menu.addItem(new GeoExplorer.LayerMenuItem({layerRecord:x}));}});}
-this.mapPanel.layers.on("update",updateLayerSwitcher,this);this.mapPanel.layers.on("remove",updateLayerSwitcher,this);this.mapPanel.layers.on("add",updateLayerSwitcher,this);var layerChooser=new Ext.Button({tooltip:'Layer Switcher',iconCls:'icon-layer-switcher',menu:menu});tools.unshift("-");tools.unshift(layerChooser);var aboutButton=new Ext.Button({tooltip:"About this map",iconCls:"icon-about",handler:this.displayAppInfo});tools.push("->");tools.push(new Ext.Button({tooltip:"Bookmark",handler:this.bookmark,scope:this,iconCls:"icon-save"}));tools.push(aboutButton);return tools;}});GeoExplorer.LayerMenuItem=function(config){config.layout=config.layout||'column';this.panel=new Ext.Panel(config);var layerRecord=config.layerRecord;var queryRadio=null;if(layerRecord.get("queryable")){queryRadio=new Ext.form.Radio({checked:false,name:'query'});}else{queryRadio=new Ext.Panel();}
+pathname+"?"+query;snippetArea.setValue('<iframe height="'+heightField.getValue()+' " width="'+widthField.getValue()+'" src="'+url+'"> </iframe>');};heightField.on("change",updateSnippet);widthField.on("change",updateSnippet);var snippet=new Ext.Panel({border:false,layout:'fit',cls:'gx-snippet-area',items:[snippetArea]});var adjustments=new Ext.Panel({layout:"column",items:[new Ext.Panel({border:false,width:90,items:[new Ext.form.ComboBox({editable:false,width:70,store:new Ext.data.SimpleStore({fields:["name","height","width"],data:[["Mini",100,100],["Small",200,300],["Large",400,600],["Premium",600,800]]}),triggerAction:'all',displayField:'name',value:"Large",mode:'local',listeners:{'select':function(combo,record,index){widthField.setValue(record.get("width"));heightField.setValue(record.get("height"));updateSnippet();}}})]}),{cls:'gx-field-label',html:"Height",border:false},heightField,{cls:'gx-field-label',html:"Width",border:false},widthField],border:false});return new Ext.Panel({cls:'gx-wizard-pane',border:false,items:[description,snippet,{cls:'gx-field-label',html:"Map Size",border:false},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");}}}});}});Ext.namespace("GeoExplorer");GeoExplorer.Embed=Ext.extend(GeoExplorer,{createLayout:function(){this.map=new OpenLayers.Map({allOverlays:true,controls:[new OpenLayers.Control.PanPanel(),new OpenLayers.Control.ZoomPanel()]});var onDoubleClick=function(ctrl,evt){OpenLayers.Event.stop(evt?evt:window.event);};var controls=this.map.controls[0].controls;for(var i=0;i<controls.length;i++){OpenLayers.Event.observe(controls[i].panel_div,"dblclick",OpenLayers.Function.bind(onDoubleClick,this.map.controls[0],controls[i]));}
+this.map.events.on({"preaddlayer":function(evt){if(evt.layer.mergeNewParams){var maxExtent=evt.layer.maxExtent;evt.layer.mergeNewParams({transparent:true,format:"image/png",tiled:true,tilesorigin:[maxExtent.left,maxExtent.bottom]});}},scope:this});var mapConfig=this.initialConfig.map||{};this.mapPanel=new GeoExt.MapPanel({layout:"anchor",border:true,region:"center",map:this.map,center:mapConfig.center&&new OpenLayers.LonLat(mapConfig.center[0],mapConfig.center[1]),zoom:mapConfig.zoom,items:[{xtype:"gx_scaleslider",vertical:true,height:100,plugins:new GeoExt.ScaleSliderTip({template:"<div>Zoom Level: {zoom}</div>"})},this.createMapOverlay()]});this.layers=this.mapPanel.layers;var addLayerButton=new Ext.Button({tooltip:"Add Layers",disabled:true,iconCls:"icon-addlayers",handler:this.showCapabilitiesGrid,scope:this});this.on("ready",function(){addLayerButton.enable();});var toolbar=new Ext.Toolbar({xtype:"toolbar",region:"north",disabled:true,items:this.createTools()});this.on("ready",function(){toolbar.enable();});var viewport=new Ext.Viewport({layout:"fit",hideBorders:true,items:{layout:"border",deferredRender:false,items:[toolbar,this.mapPanel]}});},createTools:function(){var tools=GeoExplorer.Embed.superclass.createTools.apply(this,arguments);var menu=new Ext.menu.Menu();var updateLayerSwitcher=function(){menu.removeAll();menu.getEl().addClass("gx-layer-menu");menu.getEl().applyStyles({width:'',height:''});menu.addItem(new Ext.menu.TextItem({text:'Layers'}));this.mapPanel.layers.each(function(x){if(x.get("layer").displayInLayerSwitcher){menu.addItem(new GeoExplorer.LayerMenuItem({layerRecord:x}));}});};this.mapPanel.layers.on("update",updateLayerSwitcher,this);this.mapPanel.layers.on("remove",updateLayerSwitcher,this);this.mapPanel.layers.on("add",updateLayerSwitcher,this);var layerChooser=new Ext.Button({tooltip:'Layer Switcher',iconCls:'icon-layer-switcher',menu:menu});tools.unshift("-");tools.unshift(layerChooser);var aboutButton=new Ext.Button({tooltip:"About this map",iconCls:"icon-about",handler:this.displayAppInfo});tools.push("->");tools.push(new Ext.Button({tooltip:"Bookmark",handler:this.bookmark,scope:this,iconCls:"icon-save"}));tools.push(aboutButton);return tools;}});GeoExplorer.LayerMenuItem=function(config){config.layout=config.layout||'column';this.panel=new Ext.Panel(config);var layerRecord=config.layerRecord;var queryRadio=null;if(layerRecord.get("queryable")){queryRadio=new Ext.form.Radio({checked:false,name:'query'});}else{queryRadio=new Ext.Panel();}
var visibilityField=null;if(layerRecord.get("layer").isBaseLayer){visibilityField=new Ext.form.Radio({checked:layerRecord.get("layer").getVisibility(),handler:function(radio,checked){layerRecord.get('layer').setVisibility(checked);}});}else{visibilityField=new Ext.form.Checkbox({checked:layerRecord.get("layer").getVisibility(),handler:function(checkbox,checked){layerRecord.get("layer").setVisibility(checked);}});}
this.panel.add(visibilityField);this.panel.add(queryRadio);this.panel.add({html:layerRecord.get("title"),border:false});this.panel.addClass("gx-layer-menu-item");this.panel.on("render",function(panel){panel.getEl().swallowEvent("click");});GeoExplorer.LayerMenuItem.superclass.constructor.call(this,this.panel,config);};Ext.extend(GeoExplorer.LayerMenuItem,Ext.menu.Adapter);Ext.namespace("GeoExplorer");GeoExplorer.Wizard=function(config){Ext.applyIf(config,{layout:'card',activeItem:0,tbar:[],items:[]});for(var i=0,len=config.pages.length;i<len;i++){if(i!==0)config.tbar.push({text:'→',disabled:true});config.tbar.push({text:config.pages[i].title,handler:function(x){return function(){this.layout.setActiveItem(x);this.doLayout();};}(config.items.length),scope:this});config.items.push(config.pages[i].panel);}
-GeoExplorer.Wizard.superclass.constructor.call(this,config);};Ext.extend(GeoExplorer.Wizard,Ext.Window);
\ No newline at end of file
+GeoExplorer.Wizard.superclass.constructor.call(this,config);};Ext.extend(GeoExplorer.Wizard,Ext.Window);Ext.namespace("GeoExplorer");GeoExplorer.NewSourceWindow=Ext.extend(Ext.Window,{title:"Add New Server...",bodyStyle:"padding: 0px",width:300,closeAction:'hide',error:null,initComponent:function(){this.addEvents("server-added");this.urlTextField=new Ext.form.TextField({fieldLabel:"URL",width:240,msgTarget:"under",validator:OpenLayers.Function.bind(function(){return(this.error==null)?true:this.error;},this)});this.form=new Ext.form.FormPanel({items:[this.urlTextField],border:false,labelWidth:30,bodyStyle:"padding: 5px",autoWidth:true,autoHeight:true});this.bbar=[new Ext.Button({text:"Cancel",handler:function(){this.hide();},scope:this}),new Ext.Toolbar.Fill(),new Ext.Button({text:"Add Server",iconCls:"icon-addlayers",handler:function(){this.error=null;this.urlTextField.validate();this.fireEvent("server-added",this.urlTextField.getValue());},scope:this})];this.items=this.form;GeoExplorer.NewSourceWindow.superclass.initComponent.call(this);this.form.on("render",function(){this.loadMask=new Ext.LoadMask(this.form.getEl(),{msg:"Contacting Server..."});},this);this.on("hide",function(){this.error=null;this.urlTextField.validate();this.urlTextField.setValue("");this.loadMask.hide();},this);},setLoading:function(){this.loadMask.show();},setError:function(error){this.loadMask.hide();this.error=error;this.urlTextField.validate();}});var MapToolToggle=function(options){this.mapTool=options.tool;Ext.applyIf(options,{text:this.findLabel(),enableToggle:true,iconCls:this.findIconCls(),handler:this.handleEvent,scope:this});MapToolToggle.superclass.constructor.call(this,options);};Ext.extend(MapToolToggle,Ext.Button,{mapTool:null,handleEvent:function(item){if(item.pressed){this.mapTool.activate();}else{this.mapTool.deactivate();}},findIconCls:function(){return this.mapTool.CLASS_NAME;},findLabel:function(){return this.mapTool.CLASS_NAME;}});
\ No newline at end of file
More information about the Commits
mailing list