/*
Copyright (c) 2002-2011 geOps.
All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are
permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL geOps OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
The views and conclusions contained in the software and documentation are those of the authors and should not be
interpreted as representing official policies, either expressed or implied, of geOps.
*/
Array.prototype.forEach||(Array.prototype.forEach=function(a,b){var c,d;if(null==this)throw new TypeError("this is null or not defined");var e=Object(this),f=e.length>>>0;if("[object Function]"!=={}.toString.call(a))throw new TypeError(a+" is not a function");b&&(c=b);for(d=0;d=this.minArea){var b=a.getVertices(),c,d=0,e=this.layer.features.length;a:for(;d=this.minArea&&(b.state=OpenLayers.State.INSERT,this.layer.addFeatures([b]),this.featureAdded(b),this.events.triggerEvent("featureadded",{feature:b}))},CLASS_NAME:"OpenLayers.Editor.Control.DrawPolygon"});/*
2011 geOps
@license https://github.com/geops/ole/blob/master/license.txt
@link https://github.com/geops/ole
*/
OpenLayers.Editor.Control.DrawPath=OpenLayers.Class(OpenLayers.Control.DrawFeature,{minLength:0,title:OpenLayers.i18n("oleDrawPath"),initialize:function(a,b){this.callbacks=OpenLayers.Util.extend(this.callbacks,{point:function(a){this.layer.events.triggerEvent("pointadded",{point:a})}});OpenLayers.Control.DrawFeature.prototype.initialize.apply(this,[a,OpenLayers.Handler.Path,b]);this.title=OpenLayers.i18n("oleDrawPath")},drawFeature:function(a){var b=new OpenLayers.Feature.Vector(a);!1!==this.layer.events.triggerEvent("sketchcomplete",
{feature:b})&&a.getLength()>=this.minLength&&(b.state=OpenLayers.State.INSERT,this.layer.addFeatures([b]),this.featureAdded(b),this.events.triggerEvent("featureadded",{feature:b}))},CLASS_NAME:"OpenLayers.Editor.Control.DrawPath"});/*
2011 geOps
@license https://github.com/geops/ole/blob/master/license.txt
@link https://github.com/geops/ole
*/
OpenLayers.Editor.Control.DrawPoint=OpenLayers.Class(OpenLayers.Control.DrawFeature,{title:OpenLayers.i18n("oleDrawPoint"),featureType:"point",initialize:function(a,b){this.callbacks=OpenLayers.Util.extend(this.callbacks,{point:function(a){this.layer.events.triggerEvent("pointadded",{point:a})}});OpenLayers.Control.DrawFeature.prototype.initialize.apply(this,[a,OpenLayers.Handler.Point,b]);this.title=OpenLayers.i18n("oleDrawPoint")},drawFeature:function(a){a=new OpenLayers.Feature.Vector(a);var b=
this.layer.events.triggerEvent("sketchcomplete",{feature:a});a.featureType=this.featureType;!1!==b&&(this.events.triggerEvent("beforefeatureadded",{feature:a}),a.state=OpenLayers.State.INSERT,this.layer.addFeatures([a]),this.featureAdded(a),this.events.triggerEvent("featureadded",{feature:a}))},CLASS_NAME:"OpenLayers.Editor.Control.DrawPoint"});/*
2011 geOps
@license https://github.com/geops/ole/blob/master/license.txt
@link https://github.com/geops/ole
*/
OpenLayers.Editor.Control.DrawRegular=OpenLayers.Class(OpenLayers.Control.DrawFeature,{minArea:0,title:OpenLayers.i18n("oleDrawRegular"),sides:[3,4,5,6,40],initialize:function(a,b){this.callbacks=OpenLayers.Util.extend(this.callbacks,{point:function(a){this.layer.events.triggerEvent("pointadded",{point:a})}});OpenLayers.Control.DrawFeature.prototype.initialize.apply(this,[a,OpenLayers.Handler.RegularPolygon,b]);this.title=OpenLayers.i18n("oleDrawRegular")},activate:function(){var a=OpenLayers.Control.Button.prototype.activate.call(this),
b,c;b=document.createElement("div");c=document.createElement("div");OpenLayers.Element.addClass(c,"oleDrawRegularIrregular");var d=document.createElement("input");d.type="checkbox";d.id="oleCADToolsDialogIrregular";d.checked=!0;d.defaultChecked=!0;OpenLayers.Event.observe(d,"change",OpenLayers.Function.bind(function(a){this.handler.setOptions({irregular:d.checked})},this));this.handler.setOptions({irregular:d.checked});c.appendChild(d);var e=document.createElement("label");e.htmlFor="oleCADToolsDialogIrregular";
e.appendChild(document.createTextNode(OpenLayers.i18n("oleDrawRegularIrregular")));c.appendChild(e);b.appendChild(c);c=document.createElement("div");var f=document.createElement("select");f.id="oleCADToolsDialogSides";for(e=0;ethis.sides[e]?OpenLayers.i18n("oleDrawRegularSides"+this.sides[e]):OpenLayers.i18n("oleDrawRegularCircle");f.options.add(new Option(g,this.sides[e]))}OpenLayers.Event.observe(f,"change",OpenLayers.Function.bind(function(a){this.handler.setOptions({sides:parseInt(f.options[f.selectedIndex].value)})},
this));this.handler.setOptions({sides:parseInt(f.options[0].value)});c.appendChild(f);e=document.createElement("label");e.htmlFor="oleCADToolsDialogSides";e.appendChild(document.createTextNode(OpenLayers.i18n("oleDrawRegularShape")));c.appendChild(e);b.appendChild(c);this.map.editor.dialog.show({content:b,toolbox:!0});return a},deactivate:function(){var a=OpenLayers.Control.Button.prototype.deactivate.call(this);a&&"function"==typeof this.map.editor.dialog.hide&&this.map.editor.dialog.hide();return a},
drawFeature:function(a){var b=new OpenLayers.Feature.Vector(a);!1!==this.layer.events.triggerEvent("sketchcomplete",{feature:b})&&a.getArea()>=this.minArea&&(b.state=OpenLayers.State.INSERT,this.layer.addFeatures([b]),this.featureAdded(b),this.events.triggerEvent("featureadded",{feature:b}))},CLASS_NAME:"OpenLayers.Editor.Control.DrawRegular"});/*
2011 geOps
@author Just van den Broecke
@license https://github.com/geops/ole/blob/master/license.txt
@link https://github.com/geops/ole
*/
OpenLayers.Editor.Control.DeleteAllFeatures=OpenLayers.Class(OpenLayers.Control.Button,{layer:null,title:OpenLayers.i18n("oleDeleteAllFeatures"),initialize:function(a,b){this.layer=a;this.title=OpenLayers.i18n("oleDeleteAllFeatures");OpenLayers.Control.Button.prototype.initialize.apply(this,[b]);this.trigger=this.deleteAllFeatures;this.displayClass="oleControlEnabled "+this.displayClass},deleteAllFeatures:function(){0=this.layer.features.length)this.showMessage(OpenLayers.i18n("oleDownloadFeatureEmpty")),this.deactivate();else{var a=document.createElement("div"),
b=document.createElement("p");b.innerHTML=OpenLayers.i18n("oleDownloadFeatureFileFormat");a.appendChild(b);b=document.createElement("form");b.setAttribute("id","download_form");b.setAttribute("method","POST");b.setAttribute("action",this.url);var c=document.createElement("select");c.setAttribute("name","format_select");c.setAttribute("id","format_select");for(var d,e=0;e
'+OpenLayers.i18n("oleDrawTextEdit")+"
",null,!0,this.onPopupClose);b.popup=a;b.editControl=this;a.feature=b;this.layer.map.addPopup(a,!0);this.deactivate();
var c=document.getElementById("olLabelInput"),d=this;c.onkeypress=function(a){if(13==(window.event?window.event.keyCode:a.keyCode))d.setLabelText(b,c.value),d.removePopup(b)};c.focus();this.popup=a},CLASS_NAME:"OpenLayers.Editor.Control.DrawText"});/*
2011 geOps
@author Just van den Broecke
@license https://github.com/geops/ole/blob/master/license.txt
@link https://github.com/geops/ole
*/
OpenLayers.Editor.Control.UploadFeature=OpenLayers.Class(OpenLayers.Control,{EVENT_TYPES:["featureuploaded"],layer:null,title:OpenLayers.i18n("oleUploadFeature"),url:"",params:{action:"upload",mime:"text/html",encoding:"escape"},formats:[{name:"GeoJSON",fileExt:".json",mimeType:"text/plain",formatter:"OpenLayers.Format.GeoJSON"}],fileProjection:null,visibleOnUpload:!0,formatters:{},replaceFeatures:!1,initialize:function(a,b){this.layer=a;this.title=OpenLayers.i18n("oleUploadFeature");OpenLayers.Control.Button.prototype.initialize.apply(this,
[b])},activate:function(){var a=OpenLayers.Control.prototype.activate.call(this);a&&this.openDialog();return a},deactivate:function(){var a=OpenLayers.Control.prototype.deactivate.call(this);a&&this.cleanUp(this);return a},cleanUp:function(a){this.getDialog().hide();a.iframe&&a.removeIFrame()},delayedOpenDialog:function(){var a=this;setTimeout(function(){a.openDialog()},200)},getDialog:function(){if(this.map&&this.map.editor&&this.map.editor.dialog)return this.map.editor.dialog;this.dialog||(this.dialog=
new OpenLayers.Editor.Control.Dialog,this.map.addControl(this.dialog));return this.dialog},openDialog:function(){var a=document.createElement("div");a.appendChild(document.createElement("p"));var b=document.createElement("form");b.setAttribute("id","upload_form");b.setAttribute("method","POST");b.setAttribute("action",this.url);b.setAttribute("target","upload_iframe");b.setAttribute("enctype","multipart/form-data");b.setAttribute("encoding","multipart/form-data");var b=this.createInputElm("oleFile",
"file","file",null,b),c=document.createElement("select");c.setAttribute("name","format_select");c.setAttribute("id","format_select");for(var d,e=0;ea.length)return null;var c;a.constructor!=Array&&(a=[a]);for(b=0;b").replace(/</g,"<").replace(/&/g,"&"));a=b.parseFeatures(a);b.replaceFeatures&&b.layer.destroyFeatures();a?(b.layer.addFeatures(a),b.layer.map.zoomToExtent(b.bounds),
b.visibleOnUpload&&b.layer.setVisibility(!0),setTimeout(function(){b.deactivate()},250)):(b.deactivate(),b.showMessage(OpenLayers.i18n("oleUploadFeatureNone")))};c.addEventListener&&c.addEventListener("load",d,!0);c.attachEvent&&c.attachEvent("onload",d);var a=document.getElementById("upload_form"),e=document.getElementById("format_select"),e=e.options[e.selectedIndex],f;for(f in e.params)a=this.createInputElm(null,f,"hidden",e.params[f],a);a.submit()}else this.cleanUp(this),this.showMessage(OpenLayers.i18n("oleUploadFeatureNoFile"),
OpenLayers.Function.bind(this.delayedOpenDialog,this))},createInputElm:function(a,b,c,d,e){var f=document.createElement("input");f.setAttribute("type",c);f.id=a;f.name=b;f.value=d?d:null;e&&e.appendChild(f);return e},fileInputValue:function(a){return a.files?1==a.files.length?a.files[0].name:null:a.value},setReplaceFeatures:function(a){this.replaceFeatures=a},CLASS_NAME:"OpenLayers.Editor.Control.UploadFeature"});/*
2011 geOps
@license https://github.com/geops/ole/blob/master/license.txt
@link https://github.com/geops/ole
*/
OpenLayers.Editor.Control.EditorPanel=OpenLayers.Class(OpenLayers.Control.Panel,{autoActivate:!1,initialize:function(a,b){OpenLayers.Control.Panel.prototype.initialize.apply(this,[b])},draw:function(){OpenLayers.Control.Panel.prototype.draw.apply(this,arguments);this.active||(this.div.style.display="none");return this.div},redraw:function(){this.active||(this.div.style.display="none");OpenLayers.Control.Panel.prototype.redraw.apply(this,arguments);this.active&&(this.div.style.display="")},CLASS_NAME:"OpenLayers.Editor.Control.EditorPanel"});/*
2011 geOps
@license https://github.com/geops/ole/blob/master/license.txt
@link https://github.com/geops/ole
*/
OpenLayers.Editor.Control.ImportFeature=OpenLayers.Class(OpenLayers.Control.Button,{layer:null,title:OpenLayers.i18n("oleImportFeature"),initialize:function(a,b){this.layer=a;OpenLayers.Control.Button.prototype.initialize.apply(this,[b]);this.trigger=this.importFeature;this.title=OpenLayers.i18n("oleImportFeature");this.displayClass="oleControlDisabled "+this.displayClass},importFeature:function(){var a=[];if(0this.layer.selectedFeatures.length)this.map.editor.showStatus("error",OpenLayers.i18n("oleMergeFeatureSelectFeature"));
else{var a=(new OpenLayers.Format.WKT).write(this.layer.selectedFeatures);this.map.editor.startWaiting(this.panel_div);OpenLayers.Request.POST({url:this.map.editor.oleUrl+"process/merge",data:OpenLayers.Util.getParameterString({geo:a}),headers:{"Content-Type":"application/x-www-form-urlencoded"},callback:this.map.editor.requestComplete,proxy:this.proxy,scope:this.map.editor})}},CLASS_NAME:"OpenLayers.Editor.Control.MergeFeature"});OpenLayers.Editor.Control.TransformFeature=OpenLayers.Class(OpenLayers.Control.TransformFeature,{CLASS_NAME:"OpenLayers.Editor.Control.TransformFeature",editLayer:null,strategiesOnHold:null,drawOriginalsFeature:null,drawOriginalsRenderIntent:null,initialize:function(a){this.strategiesOnHold=[];OpenLayers.Control.TransformFeature.prototype.initialize.call(this,a,{renderIntent:"transform",rotationHandleSymbolizer:"rotate"});this.editLayer=a;this.addStyles();this.events.on({transformcomplete:function(a){a.feature.state=
OpenLayers.State.UPDATE;this.editLayer.events.triggerEvent("afterfeaturemodified",{feature:a.feature})},scope:this});this.title=OpenLayers.i18n("oleTransformFeature")},addStyles:function(){var a=this;this.editLayer.styleMap.styles.transform=new OpenLayers.Style({display:"${getDisplay}",cursor:"${role}",pointRadius:5,fillColor:"#07f",strokeOpacity:"${getStrokeOpacity}",fillOpacity:1,strokeColor:"${getStrokeColor}",strokeWidth:"${getStrokeWidth}",strokeDashstyle:"${getStrokeDashstyle}"},{context:{getDisplay:function(b){return null===
a.feature||a.feature.geometry instanceof OpenLayers.Geometry.Point?"none":"se-resize"===b.attributes.role?"none":""},getStrokeColor:function(a){return a.geometry instanceof OpenLayers.Geometry.Point?"#037":"#ff00ff"},getStrokeOpacity:function(a){return a.geometry instanceof OpenLayers.Geometry.Point?0.8:0.5},getStrokeWidth:function(a){return a.geometry instanceof OpenLayers.Geometry.Point?2:1},getStrokeDashstyle:function(a){return a.geometry instanceof OpenLayers.Geometry.Point?"solid":"longdash"}}});
this.editLayer.styleMap.styles.rotate=new OpenLayers.Style({display:"${getDisplay}",pointRadius:10,fillColor:"#ddd",fillOpacity:1,strokeColor:"black",externalGraphic:"msie"===OpenLayers.Util.getBrowserName()?void 0:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABcAAAAWCAYAAAArdgcFAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAAOnAAADnUBiCgbeAAAAAd0SU1FB9wIAgsPAyGVVyoAAAQFSURBVDjLjZVfTJNnFMZ//aQ0UVMgIi11Kngx1KUGBo0XU+bmmFnmErzRkBK2RBMUyfaV4cQ4t5GNm8UMTJTMbDSj4YI5GFmcMxvyZ4yIJJUbY5GNJv7ZQtGJNBoTL+yzC+NnugJykpO8Oe85z/u85z3vOUhiPj13tsfcX71PGzesV0ZGhgA5nU5tWF+gfXvf0089Z8yF4uc0XvjtnOkrKRbwXC1+uUjnzvaYiwL/4vNPtWTJEgHKyclRTU2Nurq6FA6HFY1GdfnyZXV3d+vgwYPKyckRIMMw9MnHR7Qg+Id1HwiQzWZTdXW1rly5omg0Oq9evXpVtbW1MgxDgGpr9mtO8OC3X5s2m01paWk6derUgqD/19OnT8tutwtQ68kTVopskgDIzl6hu3dnaGxspLKykvnk4cOHRCKRJJvD4eDatWs0NDSQkeFkdjZuA54wP1QfEKDNmzc/l6Xf70951DVr1igajaq0tFSA3q+tkSQMgO/PdAFgmmYSo4mJiRTm9+/ft9Z1dXWEQiGOHz8OQCAQAOCHrh8BMEaGB8ybN2/hcrnw+XxWYDgcZufOnfT29qYckJmZSV5eHu3t7Xi9XoqLiwHYtGkTq1evZioWY7D/V9P486/JZoDCwkJsNpsF0NLSgsfjobS0NAV86dKltLa2MjMzQygUStorKSkBYHx8otmYmooBkJubazk8evSI0dFRdu3ahcPhmPNhCwoKKCoqYmhoKMm+cuVKAGKxGGlP2SYSCcshHo+TSCRwu90poKZp8uDBAwBcLhfj4+NJ+0+rzzAM0jyeJ4ynpqYsh6ysLNLT07l+/XoK+Nq1a631jRs3Ugjcvn0bALfbhVFQ8GIAYGxsjMePHwNgt9vZtm0b3d3d3Lt3b860XLx4kUgkQllZWRLrS5cuAfDSxg0BJJGfnydA7e3tVj2fP39eDodDXq9Xg4ODSbXe0dGhrKws5efnKxKJWPbOzk4BWrXKI+v7HzvaIECFhYWanJy0nNva2rRs2TLZ7XZt3bpV5eXl8nq9ArRu3ToNDAwkHerz+QToUH1ASd8/1+1WbHqa+vp6Dhw4YF11enqaYDDIyMgI8Xgct9vNjh078Pv9SZUUDAZpamoiO3sFd+78awOegZ/p7DAr/O82AzQ1NbF7924WKz09PRw+fJhEIkHou2+orNr7rLc81cbPjln9Ys+ePVYPn0/D4bCqqqqsmKNHPtKCw6L15Ak5HOkCtHz5clVUVKitrU19fX0aGxtTf3+/gsGg/H6/nE6nANntdrV89aUWNeZGR4bMN8u2L2rMbX/9NQ3/fmHOMWflfC4ZGR4wz/78S/PQH8Pc+vsfZmfjZGZm8MIqD1u2vMI7b78V2PLqGy3zxf8Hbd5G4wGXKsEAAAAASUVORK5CYII=",
graphicWidth:23,graphicHeight:22},{context:{getDisplay:function(b){return null===a.feature||a.feature.geometry instanceof OpenLayers.Geometry.Point?"none":"se-rotate"===b.attributes.role?"":"none"}}})},activate:function(){for(var a=0;OpenLayers.Util.isArray(this.layer.strategies)&&aMath.abs(n)?1:m/n,h=(1E-5>Math.abs(l)?1:k/l)/m):(l=Math.sqrt(l*
l+n*n),m=Math.sqrt(k*k+m*m)/l);a._moving=!0;a.box.geometry.rotate(-a.rotation,f);delete a._moving;a.box.geometry.resize(m,f,h);a.box.geometry.rotate(a.rotation,f);a.transformFeature({scale:m,ratio:h});a.irregular&&!a._setfeature&&(k=f.clone(),k.x+=1E-5>Math.abs(d-f.x)?0:this.x-d,k.y+=1E-5>Math.abs(e-f.y)?0:this.y-e,a.box.geometry.move(this.x-d,this.y-e),a.transformFeature({center:k}))}},f=function(b,c){var d=this.x,e=this.y;OpenLayers.Geometry.Point.prototype.move.call(this,b,c);if(!a._moving){var f=
a.dragControl.handlers.drag.evt,f=f&&f.shiftKey?45:1,g=a.center,h=this.x-g.x,k=this.y-g.y;this.x=d;this.y=e;d=Math.atan2(k-c,h-b);d=Math.atan2(k,h)-d;d*=180/Math.PI;a._angle=(a._angle+d)%360;d=a.rotation%f;if(Math.abs(a._angle)>=f||0!==d)d=Math.round(a._angle/f)*f-d,a._angle=0,a.box.geometry.rotate(d,g),a.transformFeature({rotation:d})}},g=Array(8),h=Array(4),k,n,p,q="sw s se e ne n nw w".split(" "),l=0;8>l;++l)k=this.box.geometry.components[l],n=new OpenLayers.Feature.Vector(k.clone(),{role:q[l]+
"-resize"},"string"==typeof this.renderIntent?null:this.renderIntent),0==l%2&&(p=new OpenLayers.Feature.Vector(k.clone(),{role:q[l]+"-rotate"},"string"==typeof this.rotationHandleSymbolizer?null:this.rotationHandleSymbolizer),p.geometry.move=f,k._rotationHandle=p,h[l/2]=p),k.move=b,k.resize=c,k.rotate=d,n.geometry.move=e,k._handle=n,g[l]=n;this.rotationHandles=h;this.handles=g}});OpenLayers.Editor.Control.FixedAngleDrawing=OpenLayers.Class(OpenLayers.Control,{CLASS_NAME:"OpenLayers.Editor.Control.FixedAngleDrawing",active:!1,sketchVerticesAmount:null,guides:null,initialize:function(a){this.guides=[];OpenLayers.Control.prototype.initialize.call(this);this.layer=a},activate:function(){var a=OpenLayers.Control.prototype.activate.call(this);if(a)this.layer.events.on({sketchstarted:this.onSketchStarted,sketchmodified:this.onSketchModified,sketchcomplete:this.onSketchComplete,scope:this});
return a},deactivate:function(){var a=OpenLayers.Control.prototype.deactivate.call(this);a&&this.layer.events.un({sketchstarted:this.onSketchStarted,sketchmodified:this.onSketchModified,sketchcomplete:this.onSketchComplete,scope:this});return a},onSketchModified:function(a){a=a.feature.geometry.getVertices();if(2d.top?(d.top-c)/a:e=a.left&&(b<=a.right&&c>=a.bottom&&c<=a.top)&&this.intersectionPoints.push(new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Point(b,c)))}},this)},this)},this)},this);this.addFeatures(this.intersectionPoints)},removeFeatures:function(a,b){OpenLayers.Layer.Vector.prototype.removeFeatures.apply(this,arguments);a!==this.intersectionPoints&&this.rebuildIntersectionPoints()},
drawFeature:function(a,b){var c=OpenLayers.Layer.Vector.prototype.drawFeature.apply(this,arguments);if(this.unrenderedFeatures[a.id]===a){var d=this.map.getExtent();if(a.geometry.intersects(d.toGeometry()))if(a.geometry instanceof OpenLayers.Geometry.LineString&&2===a.geometry.components.length){var e=a.geometry.getSortedSegments()[0],f=this.getLine(e);Infinity===f.m?(c=new OpenLayers.Geometry.Point(f.x,d.top),f=new OpenLayers.Geometry.Point(f.x,d.bottom)):(c=this.createWorldBoundaryPoint(f.m,d.left,
f.b,d),f=this.createWorldBoundaryPoint(f.m,d.right,f.b,d));d=a.geometry.components[0];d.x=c.x;d.y=c.y;var g=a.geometry.components[1];g.x=f.x;g.y=f.y;c=OpenLayers.Layer.Vector.prototype.drawFeature.apply(this,arguments);d.x=e.x1;d.y=e.y1;g.x=e.x2;g.y=e.y2}else console.warn("Failed to render a feature",a)}return c},moveTo:function(a,b,c){OpenLayers.Layer.Vector.prototype.moveTo.apply(this,arguments);this.features.forEach(function(a){this.drawFeature(a)},this)}});/*
2011 geOps
@license https://github.com/geops/ole/blob/master/license.txt
@link https://github.com/geops/ole
*/
OpenLayers.Editor.Control.SnappingSettings=OpenLayers.Class(OpenLayers.Control.Button,{title:OpenLayers.i18n("oleSnappingSettings"),layer:null,snapping:new OpenLayers.Control.Snapping,tolerance:10,snappingLayers:null,snappingGuideLayer:null,layerListDiv:null,toleranceInput:null,initialize:function(a,b){this.snappingLayers=[];this.layer=a;OpenLayers.Control.Button.prototype.initialize.apply(this,[b]);this.trigger=OpenLayers.Function.bind(this.openSnappingDialog,this);this.events.register("deactivate",
this,this.onDeactivate);this.title=OpenLayers.i18n("oleSnappingSettings")},deactivate:function(){OpenLayers.Control.Button.prototype.deactivate.call(this);this.map&&(this.map.editor&&this.map.editor.dialog)&&this.map.editor.dialog.hide()},onDeactivate:function(){this.snapping.active&&this.activate()},openSnappingDialog:function(){var a,b;this.activate();this.layerListDiv=document.createElement("div");a=document.createElement("div");b=document.createElement("h4");b.innerHTML=OpenLayers.i18n("oleSnappingSettingsTolerance");
a.appendChild(b);this.toleranceInput=document.createElement("input");this.toleranceInput.type="text";this.toleranceInput.size=4;this.toleranceInput.value=this.tolerance;a.appendChild(this.toleranceInput);a.appendChild(document.createTextNode(OpenLayers.i18n("olePixelUnit")));b=document.createElement("h4");b.innerHTML=OpenLayers.i18n("oleSnappingSettingsLayer");a.appendChild(b);a.appendChild(this.layerListDiv);this.map.editor.dialog.show({content:a,title:OpenLayers.i18n("oleSnappingSettings"),close:OpenLayers.Function.bind(this.changeSnapping,
this)});this.redraw()},redraw:function(){var a,b,c;this.layerListDiv.innerHTML="";for(var d=0;dthis.layer.selectedFeatures.length&&this.deactivate()},drawFeature:function(a){a=
new OpenLayers.Feature.Vector(a);var b=new OpenLayers.Format.WKT,c=this.layer.events.triggerEvent("sketchcomplete",{feature:a});this.deactivate();!1!==c&&0dann mit Enter oder Schließen des Popups bestätigen",oleDrawRegular:"Gleichseitige Form erstellen",oleDrawRegularShape:"Form",
oleDrawRegularIrregular:"nicht gleichseitig",oleDrawRegularSides3:"Dreieck",oleDrawRegularSides4:"Viereck",oleDrawRegularSides5:"Fünfeck",oleDrawRegularSides6:"Sechseck",oleDrawRegularCircle:"Kreis",oleImportFeature:"Selektierte Geometrien importieren",oleImportFeatureSourceLayer:"Keine Ebenen für den Import gefunden",oleImportFeatureSourceFeature:"Keine selektierten Geometrien für den Import gefunden.",oleLayerSettingsImportHeader:"Import",oleLayerSettingsImportLabel:"Layer als Quelle für Import verwenden",
oleLayerSettingsLegendHeader:"Legende",oleLayerSettingsOpacityHeader:"Opazität in %",oleMergeFeature:"Selektierte Geometrien verschmelzen",oleMergeFeatureSelectFeature:"Bitte mindestens 2 Flächen auswählen.",oleModifyFeature:"Geometrien bearbeiten",oleNavigation:"Navigation",olePixelUnit:"px",oleSelectFeature:"Geometrien selektieren",oleSnappingSettings:"Snapping Einstellungen",oleSnappingSettingsLayer:"Snapping Layer",oleSnappingSettingsTolerance:"Snapping Toleranz in px",oleSplitFeature:"Selektierte Geometrien teilen",
oleTransformFeature:"Geometrie skalieren, drehen und verschieben",oleCADTools:"CAD Funktionen",oleCADToolsDialogParallelDrawing:"Paralleles Zeichnen aktivieren",oleCADToolsDialogGuidedDrawing:"Geführtes Zeichnen aktivieren",oleCADToolsDialogShowLayer:"Hilfslinien anzeigen",oleCADToolsDialogTolerance:"px Toleranz",oleDialogCancelButton:"Abbrechen",oleDialogSaveButton:"Speichern",oleDialogOkButton:"Okay"});OpenLayers.Lang.en=OpenLayers.Util.extend(OpenLayers.Lang.en,{oleCleanFeature:"Clean selected geometry",oleDeleteFeature:"Delete selected geometry",oleDeleteAllFeatures:"Delete all geometries",oleDownloadFeature:"Download geometries",oleDownloadFeatureEmpty:"No geometries to download",oleDownloadFeatureFileFormat:"Select a file format",oleUploadFeature:"Upload geometries from local file",oleUploadFeatureNoFile:"No file specified. Please choose a file and try again.",oleUploadFeatureNone:"No or unreadable geometries found in file",
oleUploadFeatureReplace:"Replace current geometries in layer",oleDragFeature:"Drag geometry",oleDrawHole:"Draw hole",oleDrawPolygon:"Draw polygon",oleDrawPath:"Draw path",oleDrawPoint:"Draw point",oleDrawText:"Draw text label",oleDrawTextEdit:"Add label text in box, then press enter or close popup",oleDrawRegular:"Draw regular polygon",oleDrawRegularShape:"Shape",oleDrawRegularIrregular:"Irregular",oleDrawRegularSides3:"triangle",oleDrawRegularSides4:"square",oleDrawRegularSides5:"pentagon",oleDrawRegularSides6:"hexagon",
oleDrawRegularCircle:"circle",oleImportFeature:"Import selected geometry",oleImportFeatureSourceLayer:"Found no source layer.",oleImportFeatureSourceFeature:"Please select a geometry first.",oleLayerSettingsImportHeader:"Import",oleLayerSettingsImportLabel:"Use as source layer",oleLayerSettingsLegendHeader:"Legend",oleLayerSettingsOpacityHeader:"Opacity (%)",oleMergeFeature:"Merge selected geometry",oleMergeFeatureSelectFeature:"Please select at least 2 geometries.",oleModifyFeature:"Modify geometry",
oleNavigation:"Navigation",olePixelUnit:"px",oleSelectFeature:"Select geometry",oleSnappingSettings:"Snapping settings",oleSnappingSettingsLayer:"Snapping layer",oleSnappingSettingsTolerance:"Snapping tolerance",oleSplitFeature:"Split selected geometry",oleTransformFeature:"Scale, rotate and move geometry",oleCADTools:"CAD Tools",oleCADToolsDialogParallelDrawing:"Parallel Drawing",oleCADToolsDialogGuidedDrawing:"Guided Drawing",oleCADToolsDialogShowLayer:"Show Guide Lines",oleCADToolsDialogTolerance:"px tolerance",
oleDialogCancelButton:"Cancel",oleDialogSaveButton:"Save",oleDialogOkButton:"Okay"});OpenLayers.Lang.hr=OpenLayers.Util.extend(OpenLayers.Lang.hr,{oleCleanFeature:"Očisti označene objekte",oleDeleteFeature:"Izbriši označene objekte",oleDeleteAllFeatures:"Izbriši sve objekte",oleDownloadFeature:"Preuzmi objekte",oleDownloadFeatureEmpty:"Nema objekata za preuzimanje",oleDownloadFeatureFileFormat:"Odaberi format za preuzimanje",oleUploadFeature:"Postavi objekte iz lokalne datoteke",oleUploadFeatureNoFile:"Nije određena datoteka. Molimo, odaberite datoteku i pokušaj ponovno.",oleUploadFeatureNone:"Nema ili nisu čitljivi objekti u datoteci",
oleUploadFeatureReplace:"Zamjeni trenutne objekte iz sloja",oleDragFeature:"Pomakni objekt",oleDrawHole:"Nacrtaj šupljinu",oleDrawPolygon:"Nacrtaj poligon",oleDrawPath:"Nacrtaj liniju",oleDrawPoint:"Nacrtaj točku",oleDrawText:"Nacrtaj okvir s tekstom",oleDrawTextEdit:"Upiši željeni tekst u okvir, a zatim stisni enter ili zatvori",oleDrawRegular:"Nartaj geometrijski lik",oleDrawRegularShape:"Oblik",oleDrawRegularIrregular:"Bez rotacije",oleDrawRegularSides3:"trokut",oleDrawRegularSides4:"pravokutnik",
oleDrawRegularSides5:"peterokut",oleDrawRegularSides6:"šesterokut",oleDrawRegularCircle:"kružnica",oleImportFeature:"Uvezi označen objekt",oleImportFeatureSourceLayer:"Nije pronađen izvorišni sloj",oleImportFeatureSourceFeature:"Prvo označi objekt.",oleLayerSettingsImportHeader:"Uvezi",oleLayerSettingsImportLabel:"Koristi kao izvorišni sloj",oleLayerSettingsLegendHeader:"Legenda",oleLayerSettingsOpacityHeader:"Prozirnost (%)",oleMergeFeature:"Spoji označene objekte",oleMergeFeatureSelectFeature:"Označi najmanje dva objekta.",
oleModifyFeature:"Promijeni objekt",oleNavigation:"Navigacija",olePixelUnit:"px",oleSelectFeature:"Odaberi objekt",oleSnappingSettings:"Opcije lijepljenja",oleSnappingSettingsLayer:"Sloj",oleSnappingSettingsTolerance:"Tolerancija lijepljenja",oleSplitFeature:"Presijeci označeni objekt",oleTransformFeature:"Izmijeni veličinu, rotiraj i pomakni objekt",oleCADTools:"CAD Alati",oleCADToolsDialogParallelDrawing:"Paralelno crtanje",oleCADToolsDialogGuidedDrawing:"Vođeno crtanje",oleCADToolsDialogShowLayer:"Prikaži direktive",
oleCADToolsDialogTolerance:"Tolerancija - px",oleDialogCancelButton:"Odustani",oleDialogSaveButton:"Spremi",oleDialogOkButton:"U redu"});OpenLayers.Lang.es=OpenLayers.Util.extend(OpenLayers.Lang.es,{oleCleanFeature:"Borrar la entidad seleccionada",oleDeleteFeature:"Borrar la entidad seleccionada",oleDeleteAllFeatures:"Borrar todas las entidades",oleDownloadFeature:"Descargar las entidades",oleDownloadFeatureEmpty:"No hay entidades para descargar",oleDownloadFeatureFileFormat:"Seleccionar un formato de archivo",oleUploadFeature:"Subir entidades desde el disco local",oleUploadFeatureNoFile:"No se ha especificado un archivo. Por favor seleccione un archivo y reinténtelo.",
oleUploadFeatureNone:"No existen o no se pueden leer las geometrías del archivo",oleUploadFeatureReplace:"Sustituye las entidades actuales en la capa",oleDragFeature:"Arrastrar entidad",oleDrawHole:"Dibujar un agujero",oleDrawPolygon:"Dibujar un polígono",oleDrawPath:"Dibujar una línea",oleDrawPoint:"Dibujar un punto",oleDrawText:"Dibujar una etiqueta",oleDrawTextEdit:"Agregue la etiqueta en el recuadro, luego presione enter o cierre esta ventana emergente",oleDrawRegular:"Dibujar un polígono regular",
oleDrawRegularShape:"Forma",oleDrawRegularIrregular:"Irregular",oleDrawRegularSides3:"triangulo",oleDrawRegularSides4:"cuadrado",oleDrawRegularSides5:"pentágono",oleDrawRegularSides6:"hexágono",oleDrawRegularCircle:"circulo",oleImportFeature:"Importar la entidad seleccionada",oleImportFeatureSourceLayer:"No se encontró el origen de la capa.",oleImportFeatureSourceFeature:"Por favor seleccione primero una entidad.",oleLayerSettingsImportHeader:"Importar",oleLayerSettingsImportLabel:"Usar como origen de la capa",
oleLayerSettingsLegendHeader:"Leyenda",oleLayerSettingsOpacityHeader:"Opacidad (%)",oleMergeFeature:"Fusionar entidades seleccionadas",oleMergeFeatureSelectFeature:"Por favor seleccione al menos 2 entidades.",oleModifyFeature:"Modificar entidad",oleNavigation:"Navegación",olePixelUnit:"px",oleSelectFeature:"Seleccionar entidad",oleSnappingSettings:"Configuración del snapping",oleSnappingSettingsLayer:"Capa snapping",oleSnappingSettingsTolerance:"Tolerancia del snapping",oleSplitFeature:"Separar las entidades seleccionadas",
oleTransformFeature:"Escalar, rotar y mover entidad",oleCADTools:"Herramientas CAD",oleCADToolsDialogParallelDrawing:"Dibujo paralelo",oleCADToolsDialogGuidedDrawing:"Dibujo guiado",oleCADToolsDialogShowLayer:"Mostrar Líneas Guías",oleCADToolsDialogTolerance:"px tolerancia",oleDialogCancelButton:"Cancelar",oleDialogSaveButton:"Guardar",oleDialogOkButton:"Aceptar"});OpenLayers.Lang.hu=OpenLayers.Util.extend(OpenLayers.Lang.hu,{oleCleanFeature:"Kijelölt geometria javítása",oleDeleteFeature:"Kijelölt geometria törlése",oleDeleteAllFeatures:"Az összes geometria törlése",oleDownloadFeature:"Geometriák letöltése",oleDownloadFeatureEmpty:"Nincs letölthető geometria",oleDownloadFeatureFileFormat:"Fájl formátum kiválasztása",oleUploadFeature:"Geometriák feltöltése fájlból",oleUploadFeatureNoFile:"Nincs meghatározott fájl. Kérem válasszon újra egy fájlt.",oleUploadFeatureNone:"Nincsenek vagy csak olvashatatlan geometriák találhatóak a fájlban",
oleUploadFeatureReplace:"A jelenlegi geometriák cseréje a rétegen",oleDragFeature:"Geometria mozgatása",oleDrawHole:"Lyuk rajzolása",oleDrawPolygon:"Poligon rajzolása",oleDrawPath:"Vonal rajzolása",oleDrawPoint:"Pont rajzolása",oleDrawText:"Szöveges felirat rajzolása",oleDrawTextEdit:"Szöveges felirat hozzáadása a dobozhoz, azután Enter-rel zárja be az ablakot",oleDrawRegular:"Szabályos poligon rajzolása",oleDrawRegularShape:"Alakzat",oleDrawRegularIrregular:"Szabálytalan",oleDrawRegularSides3:"háromszög",
oleDrawRegularSides4:"négyzet",oleDrawRegularSides5:"ötszög",oleDrawRegularSides6:"hatszög",oleDrawRegularCircle:"kör",oleImportFeature:"Kijelölt geometriák importálása",oleImportFeatureSourceLayer:"Nem található forrásréteg.",oleImportFeatureSourceFeature:"Kérem, előbb válasszon ki egy geometriát!",oleLayerSettingsImportHeader:"Importálás",oleLayerSettingsImportLabel:"Használat forrásrétegként",oleLayerSettingsLegendHeader:"Jelmagyarázat",oleLayerSettingsOpacityHeader:"Átlátszóság (%)",oleMergeFeature:"Kijelölt geometriák összevonása",
oleMergeFeatureSelectFeature:"Kérem, válasszon ki legalább két geometriát!",oleModifyFeature:"Geometria módosítása",oleNavigation:"Navigáció",olePixelUnit:"px",oleSelectFeature:"Geometria kiválasztása",oleSnappingSettings:"Illesztés beállításai",oleSnappingSettingsLayer:"Illesztő réteg",oleSnappingSettingsTolerance:"Illesztés toleranciája",oleSplitFeature:"Kijelölt geometria szétvágása",oleTransformFeature:"Geometria átméretezése, forgatása és mozgatása",oleCADTools:"CAD Eszközök",oleCADToolsDialogParallelDrawing:"Párhuzamos rajzolás",
oleCADToolsDialogGuidedDrawing:"Segédvonalas rajzolás",oleCADToolsDialogShowLayer:"Segédvonalak megjelenítése",oleCADToolsDialogTolerance:"px tolerancia",oleDialogCancelButton:"Mégse",oleDialogSaveButton:"Mentés",oleDialogOkButton:"Ok"});OpenLayers.Lang.nl=OpenLayers.Util.extend(OpenLayers.Lang.nl,{oleCleanFeature:"Geselecteerde geometrie opschonen",oleDeleteFeature:"Geselecteerde geometrie verwijderen",oleDeleteAllFeatures:"Alle geometrieën verwijderen",oleDownloadFeature:"Download geometrieën",oleDownloadFeatureEmpty:"Geen geometrieën om te downloaden",oleDownloadFeatureFileFormat:"Selecteer een file formaat",oleUploadFeature:"Upload geometrieën vanuit lokaal bestand",oleUploadFeatureNoFile:"Geen bestand geselecteerd. Probeer opnieuw en kies een bestand.",
oleUploadFeatureNone:"Geen of onleesbare geometrieën in bestand",oleUploadFeatureReplace:"Vervang huidige geometrieën in laag",oleDragFeature:"Geometrie verschuiven",oleDrawHole:"Gat knippen in geometrie",oleDrawPolygon:"Teken vlak",oleDrawPath:"Teken lijn",oleDrawPoint:"Teken punt",oleDrawText:"Teken tekst label",oleDrawTextEdit:"Voer tekst hierboven in, doe dan return of sluit dit venster",oleDrawRegular:"Teken regelmatig polygoon",oleDrawRegularShape:"Vorm",oleDrawRegularIrregular:"Niet gelijkzijdig",
oleDrawRegularSides3:"driehoek",oleDrawRegularSides4:"vierkant",oleDrawRegularSides5:"vijfhoek",oleDrawRegularSides6:"zeshoek",oleDrawRegularCircle:"cirkel",oleImportFeature:"Importeer geselecteerde geometrie",oleImportFeatureSourceLayer:"Geen bron-laag.",oleImportFeatureSourceFeature:"Selecteer eerst een geometrie.",oleLayerSettingsImportHeader:"Importeer",oleLayerSettingsImportLabel:"Gebruik als bron-laag",olelayerSettingsLegendHeader:"Legenda",olelayerSettingsOpacityHeader:"Ondoorzichtigheid (%)",
oleMergeFeature:"Combineer geselecteerde geometrie",oleMergeFeatureSelectFeature:"Selecteer tenminste 2 geometrieën.",oleModifyFeature:"Geometrie wijzigen",oleNavigation:"Navigatie",olePixelUnit:"px",oleSelectFeature:"Selecteer geometrie",oleSnappingSettings:"Uitlijn-instellingen",oleSnappingSettingsLayer:"Uitlijnen laag",oleSnappingSettingsTolerance:"Uitlijn-tolerantie",oleSplitFeature:"Splits geselecteerde geometrie",oleTransformFeature:"Geometrie schalen, roteren en verschuiven",oleCADTools:"CAD Functies",
oleCADToolsDialogParallelDrawing:"Parallel tekenen aktiveren",oleCADToolsDialogGuidedDrawing:"Geleid tekenen aktiveren",oleCADToolsDialogShowLayer:"Toon hulplijnen",oleCADToolsDialogTolerance:"px tolerantie",oleDialogCancelButton:"Annuleren",oleDialogSaveButton:"Bewaren",oleDialogOkButton:"Oke"});
/*
gxp.js - High level widgets for web mapping applications.
Copyright (c) 2008-2011, The Open Planning Project
All rights reserved.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
Ext.namespace("gxp.form");
gxp.form.ColorField=Ext.extend(Ext.form.TextField,{cssColors:{aqua:"#00FFFF",black:"#000000",blue:"#0000FF",fuchsia:"#FF00FF",gray:"#808080",green:"#008000",lime:"#00FF00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#FF0000",silver:"#C0C0C0",teal:"#008080",white:"#FFFFFF",yellow:"#FFFF00"},defaultBackground:"#ffffff",initComponent:function(){if(this.value)this.value=this.hexToColor(this.value);gxp.form.ColorField.superclass.initComponent.call(this);this.on({render:this.colorField,
valid:this.colorField,scope:this})},isDark:function(a){var b=!1;if(a)var b=parseInt(a.substring(1,3),16)/255,c=parseInt(a.substring(3,5),16)/255,a=parseInt(a.substring(5,7),16)/255,b=0.5>0.299*b+0.587*c+0.144*a;return b},colorField:function(){var a=this.colorToHex(this.getValue())||this.defaultBackground;this.getEl().setStyle({background:a,color:this.isDark(a)?"#ffffff":"#000000"})},expand3DigitHex:function(a){a&&4==a.length&&0==a.indexOf("#")&&(a="#"+a.charAt(1)+a.charAt(1)+a.charAt(2)+a.charAt(2)+
a.charAt(3)+a.charAt(3));return a},getHexValue:function(){return this.colorToHex(gxp.form.ColorField.superclass.getValue.apply(this,arguments))},getValue:function(){var a=this.getHexValue(),b=this.initialConfig.value;a===this.hexToColor(b)&&(a=b);return a},setValue:function(a){gxp.form.ColorField.superclass.setValue.apply(this,[this.hexToColor(a)])},colorToHex:function(a){if(!a)return a;a=this.expand3DigitHex(a);return a.match(/^#[0-9a-f]{6}$/i)?a:this.cssColors[a.toLowerCase()]||null},hexToColor:function(a){if(!a)return a;
var a=this.expand3DigitHex(a),b;for(b in this.cssColors)if(this.cssColors[b]==a.toUpperCase()){a=b;break}return a}});Ext.reg("gxp_colorfield",gxp.form.ColorField);Ext.namespace("gxp");gxp.ColorManager=function(a){Ext.apply(this,a)};
Ext.apply(gxp.ColorManager.prototype,{field:null,init:function(a){this.register(a)},destroy:function(){this.field&&this.unregister(this.field)},register:function(a){this.field&&this.unregister(this.field);this.field=a;a.on({focus:this.fieldFocus,destroy:this.destroy,scope:this})},unregister:function(a){a.un("focus",this.fieldFocus,this);a.un("destroy",this.destroy,this);gxp.ColorManager.picker&&a==this.field&&gxp.ColorManager.picker.un("pickcolor",this.setFieldValue,this);this.field=null},fieldFocus:function(){gxp.ColorManager.pickerWin?
gxp.ColorManager.picker.purgeListeners():(gxp.ColorManager.picker=new Ext.ColorPalette,gxp.ColorManager.pickerWin=new Ext.Window({title:"Color Picker",closeAction:"hide",autoWidth:!0,autoHeight:!0}));var a={select:this.setFieldValue,scope:this},b=this.getPickerValue();if(b){var c=[].concat(gxp.ColorManager.picker.colors);if(!~c.indexOf(b)){if(gxp.ColorManager.picker.ownerCt)gxp.ColorManager.pickerWin.remove(gxp.ColorManager.picker),gxp.ColorManager.picker=new Ext.ColorPalette;c.push(b);gxp.ColorManager.picker.colors=
c}gxp.ColorManager.pickerWin.add(gxp.ColorManager.picker);gxp.ColorManager.pickerWin.doLayout();gxp.ColorManager.picker.rendered?gxp.ColorManager.picker.select(b):a.afterrender=function(){gxp.ColorManager.picker.select(b)}}gxp.ColorManager.picker.on(a);gxp.ColorManager.pickerWin.show()},setFieldValue:function(a,b){this.field.isVisible()&&this.field.setValue("#"+b)},getPickerValue:function(){var a=this.field;if(a=a.getHexValue?a.getHexValue()||a.defaultBackground:a.getValue())return a.substr(1)}});
(function(){Ext.util.Observable.observeClass(gxp.form.ColorField);gxp.form.ColorField.on({render:function(a){(new gxp.ColorManager).register(a)}})})();gxp.ColorManager.picker=null;gxp.ColorManager.pickerWin=null;Ext.ns("gxp.data");
gxp.data.AutoCompleteProxy=Ext.extend(GeoExt.data.ProtocolProxy,{doRequest:function(a,b,c,d,e,f,g){if(c.query)c.filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LIKE,matchCase:!1,property:this.protocol.propertyNames[0],value:"*"+c.query+"*"}),delete c.query;gxp.data.AutoCompleteProxy.superclass.doRequest.apply(this,arguments)}});Ext.ns("gxp.data");
gxp.data.AutoCompleteReader=Ext.extend(GeoExt.data.FeatureReader,{read:function(a){var b=this.meta.uniqueField;this.features=[];for(var c=0,d=a.features.length;cc&&(c+=1);1c?b:c<2/3?a+6*(b-a)*(2/3-c):a}var b={},c={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",
crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",
forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",
lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",
moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",
seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"};rgb=b.rgb=function(a){var a=a.toLowerCase(),b;"#"===a[0]?b=a:a in c?b=c[a]:a.match(/^[0-9a-f]{6}$/)&&(b="#"+a);var a=b,f;a&&(f=[parseInt(a.substr(1,
2),16),parseInt(a.substr(3,2),16),parseInt(a.substr(5,2),16)]);return f};hex=b.hex=function(a){return["#",Number(a[0]).toString(16),Number(a[1]).toString(16),Number(a[2]).toString(16)].join("")};b.rgb2hsl=function(a){var b=a[0]/255,c=a[1]/255,a=a[2]/255,g=Math.max(b,c,a),h=Math.min(b,c,a),j,k=(g+h)/2;if(g==h)j=h=0;else{var l=g-h,h=0.5b?b*(1+c):b+c-b*c,h=2*b-g;c=a(h,g,f+1/3);b=a(h,g,f);f=a(h,g,f-1/3)}return[Math.round(255*c),Math.round(255*b),Math.round(255*f)]};return b}();Ext.ns("gxp.util");
gxp.util.style=function(){function a(a,b,l){var n=Ext.apply({},a);Ext.iterate(a,function(m){if(g.test(m)){var o=d(e(a[m])),q=d(e(b[m]));if(o&&q){for(var r=[],s=o.length-1;0<=s;--s)r[s]=o[s]+l*(q[s]-o[s]);n[m]=f(c(r))}}else h.test(m)&&(o=null,m in a&&m in b&&(q=a[m],r=b[m],q.literal&&r.literal&&(q=parseFloat(q.text),r=parseFloat(r.text),o=q+l*(r-q))),null!==o&&(n[m]=o))});return n}var b={},c=gxp.util.color.hsl2rgb,d=gxp.util.color.rgb2hsl,e=gxp.util.color.rgb,f=gxp.util.color.hex,g=/Color$/,h=/(Width|Height|[rR]otation|Opacity|Size)$/;
b.interpolateSymbolizers=function(b,c,d){for(var e,f,g=[],h=0,r=b.length;hc.status?this.fireEvent("exception",this,"remote",b.action,b,a.error,b.records):this.fireEvent("exception",this,"response",b.action,b,c),b.callback.call(b.scope,[],c,!1)}});Ext.namespace("gxp.data");
gxp.data.WFSFeatureStore=Ext.extend(GeoExt.data.FeatureStore,{setOgcFilter:function(a){this.proxy.setFilter(a)},constructor:function(a){if(!(a.proxy&&a.proxy instanceof GeoExt.data.ProtocolProxy))a.proxy=new gxp.data.WFSProtocolProxy(Ext.apply({srsName:a.srsName,url:a.url,featureType:a.featureType,featureNS:a.featureNS,geometryName:a.geometryName,schema:a.schema,filter:a.ogcFilter,maxFeatures:a.maxFeatures,multi:a.multi},a.proxy));if(!a.writer)a.writer=new Ext.data.DataWriter({write:Ext.emptyFn});
gxp.data.WFSFeatureStore.superclass.constructor.apply(this,arguments);this.reader.extractValues=function(a){return this.readRecords([a.feature]).records[0].data}.createDelegate(this.reader);this.reader.meta.idProperty="id";this.reader.getId=function(a){return a.id}}});
GeoExt.Lang.add("ca",{"gxp.menu.LayerMenu.prototype":{layerText:"Capa"},"gxp.plugins.AddLayers.prototype":{addActionMenuText:"Afegeix Capes",addActionTip:"Afegeix Capes",addServerText:"Afegeix servidor",addButtonText:"Afegeix Capes",untitledText:"Sense T\u00edtol",addLayerSourceErrorText:"Error obtenint les capabilities del WMS ({msg}).\nSi us plau, comproveu la URL i torneu-ho a intentar.",availableLayersText:"Capes disponibles",expanderTemplateText:"
',
d=new Ext.XTemplate(d);d.compile();return new Ext.grid.ColumnModel([{id:"title",dataIndex:"title",sortable:!0,renderer:function(e,f,g,h){e=g.data;e.id=g.id;f=c.target.layerSources[g.store.sourceId].getPreviewImageURL(g,a,b);e.previewImage=f?'
',attributesTitle:"Attributes",historyTitle:"History",hour:"hour",hours:"hours",day:"day",days:"days",ago:"ago",border:!1,activeTab:0,editor:null,attributeEditor:null,ptype:"gxp_versionededitor",initComponent:function(){gxp.plugins.VersionedEditor.superclass.initComponent.call(this);
var a=Ext.apply({xtype:this.initialConfig.editor||"gxp_editorgrid",title:this.attributesTitle},{feature:this.initialConfig.feature,schema:this.initialConfig.schema,fields:this.initialConfig.fields,excludeFields:this.initialConfig.excludeFields,propertyNames:this.initialConfig.propertyNames,readOnly:this.initialConfig.readOnly});this.attributeEditor=Ext.ComponentMgr.create(a);this.add(this.attributeEditor);this.add({xtype:"panel",border:!1,plain:!0,layout:"fit",autoScroll:!0,items:[this.createDataView()],
title:this.historyTitle})},createDataView:function(){var a=this.schema.reader.raw.featureTypes[0].typeName.split(":").pop()+"/"+this.feature.fid;"/"!==this.url.charAt(this.url.length-1)&&(this.url+="/");var b=this.url+"log",b=Ext.urlAppend(b,"path="+a+"&output_format=json"),a=new Ext.data.JsonStore({url:b,root:"response.commit",fields:["message","author","email","commit",{name:"date",type:"date",convert:function(a){return new Date(a)}}],autoLoad:!0}),c=this,b=new Ext.XTemplate(this.historyTpl,{formatDate:function(a){var b=
new Date,f="";if(a>b.add(Date.DAY,-1))return a=Math.round((b-a)/36E5),f+=a+" ",f+=1b.add(Date.MONTH,-1))return a=Math.round((b-a)/864E5),f+=a+" ",f+=1>4,b=(b&15)<<2|c>>6,c=c&63;return"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(a>>2)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(g)+
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(b)+"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(c)}if(-1==this.owsPreviewStrategies.indexOf("randomcolor"))return null;var c="#"+("00000"+(16777216*Math.random()|0).toString(16)).slice(-6);a.data.colour=c;return"data:image/gif;base64,R0lGODlhAQABAPAA"+function(a){var c="0x"+a.charAt(1)+a.charAt(2),f="0x"+a.charAt(3)+a.charAt(4),a="0x"+a.charAt(5)+a.charAt(6);return b(0,c,f)+b(a,255,255)}(c)+"/yH5BAAAAAAALAAAAAABAAEAAAICRAEAOw=="},
onAuthorizationChange:function(){if(this.store&&"/"===this.url.charAt(0)){var a=this.store.lastOptions||{params:{}};Ext.apply(a.params,{_dc:Math.random()});this.store.reload(a)}},destroy:function(){this.target.un("authorizationchange",this.onAuthorizationChange,this);gxp.plugins.WFSSource.superclass.destroy.apply(this,arguments)},isLazy:function(){var a=!0,b=this.target.initialConfig.map;if(b&&b.layers)for(var c,d=0,e=b.layers.length;df?gxp.util.getOGCExceptionText(g&&g.arg&&g.arg.exceptionReport):"Status: "+f):(c="Trouble creating layer store from response.",a="Unable to handle response.");this.fireEvent("failure",this,c,a);delete this.format.data},scope:this}})},trimUrl:function(a,b){var c=OpenLayers.Util.getParameters(a),b=OpenLayers.Util.upperCaseObject(b),
d=0,e;for(e in c)++d,e.toUpperCase()in b&&(--d,delete c[e]);return a.split("?").shift()+(d?"?"+OpenLayers.Util.getParameterString(c):"")},createLayerRecord:function(a){var b,c,d=this.store.findExact("name",a.name);-1]*>([\s\S]*)<\/body>/);d&&!d[1].match(/^\s*$/)&&this.displayPopup(a,c,d[1])}else"text/plain"==q?this.displayPopup(a,c,"
"+a.text+"
"):a.features&&0
\u00bb
','','{text}',
"");gxp.CrumbPanel.superclass.onRender.apply(this,arguments);this.getEl().down("div").addClass("gxp-crumbpanel-header")},onCmpHide:function(a){var b=this.items.getCount()-1;this.items.indexOf(a)===b&&this.setActiveTab(this.get(--b))},setActiveTab:function(a){var b;Ext.isNumber(a)?(b=a,a=this.get(b)):b=this.items.indexOf(a);if(~b){var c,d;for(d=this.items.getCount()-1;d>b;--d)c=this.get(d),this.remove(c,"hide"!==c.closeAction)}c=a.initialConfig.minWidth||a.initialConfig.width;d=this.getWidth();
c>d&&(this.widths[this.get(b-1).id]=d,this.setWidth(c),this.ownerCt&&this.ownerCt.syncSize());gxp.CrumbPanel.superclass.setActiveTab.apply(this,arguments)}});Ext.reg("gxp_crumbpanel",gxp.CrumbPanel);Ext.namespace("gxp");
gxp.EmbedMapDialog=Ext.extend(Ext.Container,{url:null,url:null,publishMessage:"Your map is ready to be published to the web! Simply copy the following HTML to embed the map in your website:",heightLabel:"Height",widthLabel:"Width",mapSizeLabel:"Map Size",miniSizeLabel:"Mini",smallSizeLabel:"Small",premiumSizeLabel:"Premium",largeSizeLabel:"Large",snippetArea:null,heightField:null,widthField:null,initComponent:function(){Ext.apply(this,this.getConfig());gxp.EmbedMapDialog.superclass.initComponent.call(this)},
getIframeHTML:function(){return this.snippetArea.getValue()},updateSnippet:function(){this.snippetArea.setValue('');!0===this.snippetArea.isVisible()&&this.snippetArea.focus(!0,100)},getConfig:function(){this.snippetArea=new Ext.form.TextArea({height:70,selectOnFocus:!0,readOnly:!0});var a={change:this.updateSnippet,specialkey:function(a,
c){c.getKey()==c.ENTER&&this.updateSnippet()},scope:this};this.heightField=new Ext.form.NumberField({width:50,value:400,listeners:a});this.widthField=new Ext.form.NumberField({width:50,value:600,listeners:a});return{border:!1,defaults:{border:!1,cls:"gxp-export-section",xtype:"container",layout:"fit"},items:[{items:[new Ext.Container({layout:"column",defaults:{border:!1,xtype:"box"},items:[{autoEl:{cls:"gxp-field-label",html:this.mapSizeLabel}},new Ext.form.ComboBox({editable:!1,width:75,store:new Ext.data.SimpleStore({fields:["name",
"height","width"],data:[[this.miniSizeLabel,100,100],[this.smallSizeLabel,200,300],[this.largeSizeLabel,400,600],[this.premiumSizeLabel,600,800]]}),triggerAction:"all",displayField:"name",value:this.largeSizeLabel,mode:"local",listeners:{select:function(a,c){this.widthField.setValue(c.get("width"));this.heightField.setValue(c.get("height"));this.updateSnippet()},scope:this}}),{autoEl:{cls:"gxp-field-label",html:this.heightLabel}},this.heightField,{autoEl:{cls:"gxp-field-label",html:this.widthLabel}},
this.widthField]})]},{xtype:"box",autoEl:{tag:"p",html:this.publishMessage}},{items:[this.snippetArea]}],listeners:{afterrender:this.updateSnippet,scope:this}}}});Ext.reg("gxp_embedmapdialog",gxp.EmbedMapDialog);Ext.namespace("gxp");
gxp.FillSymbolizer=Ext.extend(Ext.FormPanel,{symbolizer:null,colorProperty:"fillColor",opacityProperty:"fillOpacity",colorManager:null,checkboxToggle:!0,defaultColor:null,border:!1,fillText:"Fill",colorText:"Color",opacityText:"Opacity",initComponent:function(){if(!this.symbolizer)this.symbolizer={};var a;this.colorManager&&(a=[new this.colorManager]);var b=100;this.opacityProperty in this.symbolizer?b=100*this.symbolizer[this.opacityProperty]:OpenLayers.Renderer.defaultSymbolizerGXP[this.opacityProperty]&&
(b=100*OpenLayers.Renderer.defaultSymbolizerGXP[this.opacityProperty]);this.items=[{xtype:"fieldset",title:this.fillText,autoHeight:!0,checkboxToggle:this.checkboxToggle,collapsed:!0===this.checkboxToggle&&!1===this.symbolizer.fill,hideMode:"offsets",defaults:{width:100},items:[{xtype:"gxp_colorfield",fieldLabel:this.colorText,name:"color",emptyText:OpenLayers.Renderer.defaultSymbolizerGXP[this.colorProperty],value:this.symbolizer[this.colorProperty],defaultBackground:this.defaultColor||OpenLayers.Renderer.defaultSymbolizerGXP[this.colorProperty],
plugins:a,listeners:{valid:function(a){var a=a.getValue(),b=this.symbolizer[this.colorProperty]!=a;this.symbolizer[this.colorProperty]=a;b&&this.fireEvent("change",this.symbolizer)},scope:this}},{xtype:"slider",fieldLabel:this.opacityText,name:"opacity",values:[b],isFormField:!0,listeners:{changecomplete:function(a,b){this.symbolizer[this.opacityProperty]=b/100;this.fireEvent("change",this.symbolizer)},scope:this},plugins:[new GeoExt.SliderTip({getText:function(a){return a.value+"%"}})]}],listeners:{collapse:function(){if(!1!==
this.symbolizer.fill)this.symbolizer.fill=!1,this.fireEvent("change",this.symbolizer)},expand:function(){this.symbolizer.fill=!0;this.fireEvent("change",this.symbolizer)},scope:this}}];this.addEvents("change");gxp.FillSymbolizer.superclass.initComponent.call(this)}});Ext.reg("gxp_fillsymbolizer",gxp.FillSymbolizer);Ext.namespace("gxp");
gxp.FilterBuilder=Ext.extend(Ext.Container,{builderTypeNames:["any","all","none","not all"],allowedBuilderTypes:null,allowBlank:!1,caseInsensitiveMatch:!1,preComboText:"Match",postComboText:"of the following:",cls:"gxp-filterbuilder",builderType:null,childFilterContainer:null,customizeFilterOnInit:!0,addConditionText:"add condition",addGroupText:"add group",removeConditionText:"remove condition",allowGroups:!0,initComponent:function(){Ext.applyIf(this,{defaultBuilderType:gxp.FilterBuilder.ANY_OF});
if(this.customizeFilterOnInit)this.filter=this.customizeFilter(this.filter);this.builderType=this.getBuilderType();this.items=[{xtype:"container",layout:"form",ref:"form",defaults:{anchor:"100%"},hideLabels:!0,items:[{xtype:"compositefield",style:"padding-left: 2px",items:[{xtype:"label",style:"padding-top: 0.3em",text:this.preComboText},this.createBuilderTypeCombo(),{xtype:"label",style:"padding-top: 0.3em",text:this.postComboText}]},this.createChildFiltersPanel(),{xtype:"toolbar",items:this.createToolBar()}]}];
this.addEvents("change");gxp.FilterBuilder.superclass.initComponent.call(this)},createToolBar:function(){var a=[{text:this.addConditionText,iconCls:"add",handler:function(){this.addCondition()},scope:this}];this.allowGroups&&a.push({text:this.addGroupText,iconCls:"add",handler:function(){this.addCondition(!0)},scope:this});return a},getFilter:function(){var a;this.filter&&(a=this.filter.clone(),a instanceof OpenLayers.Filter.Logical&&(a=this.cleanFilter(a)));return a},cleanFilter:function(a){if(a instanceof
OpenLayers.Filter.Logical)if(a.type!==OpenLayers.Filter.Logical.NOT&&1===a.filters.length)a=this.cleanFilter(a.filters[0]);else for(var b,c=0,d=a.filters.length;c
',
editable:!1,triggerAction:"all",mode:"local",store:this.zoomStore,width:110});this.zoomSelector.on({click:this.stopMouseEvents,mousedown:this.stopMouseEvents,select:function(a,b){this.map.zoomTo(b.data.level)},scope:this});this.map.events.register("zoomend",this,this.handleZoomEnd);this.add(new Ext.Panel({items:[this.zoomSelector],cls:"overlay-element overlay-scalechooser",border:!1}))},bind:function(a){this.map=a;this.addScaleLine();this.addScaleCombo();this.doLayout()},unbind:function(){this.map&&
this.map.events&&this.map.events.unregister("zoomend",this,this.handleZoomEnd);this.zoomSelector=this.zoomStore=null}});Ext.reg("gxp_scaleoverlay",gxp.ScaleOverlay);Ext.namespace("gxp.slider");
gxp.slider.ClassBreakSlider=Ext.extend(Ext.slider.MultiSlider,{store:null,initComponent:function(){this.store=Ext.StoreMgr.lookup(this.store);if(!("constrainThumbs"in this.initialConfig))this.constrainThumbs=this.store.reader.raw instanceof OpenLayers.Style;this.values=this.storeToValues();this.on("changecomplete",this.valuesToStore);this.store.on("update",this.storeToValues,this);gxp.slider.ClassBreakSlider.superclass.initComponent.call(this)},storeToValues:function(){var a=[];this.store.each(function(b){var d=
b.get("filter");d instanceof OpenLayers.Filter?d.type===OpenLayers.Filter.Comparison.BETWEEN?(0===this.store.indexOf(b)&&a.push(d.lowerBoundary),a.push(d.upperBoundary)):d.type===OpenLayers.Filter.Comparison.LESS_THAN&&a.push(d.value):a.push(d)},this);if(this.thumbs)for(var b=a.length-1;0<=b;--b)this.setValue(b,a[b]);return a},valuesToStore:function(){var a=this.getValues(),b=this.store;b.un("update",this.storeToValues,this);b.each(function(b){var d=b.get("filter"),e=a.shift();if(d instanceof OpenLayers.Filter){d=
d.clone();if(d.type===OpenLayers.Filter.Comparison.BETWEEN)d.upperBoundary=e;else if(d.type===OpenLayers.Filter.Comparison.LESS_THAN)d.value=e;b.get("filter").toString()!==d.toString()&&b.set("filter",d)}else d!=e&&b.set("filter",e)},this);b.on("update",this.storeToValues,this)}});Ext.reg("gxp_classbreakslider",gxp.slider.ClassBreakSlider);Ext.namespace("gxp");
gxp.StrokeSymbolizer=Ext.extend(Ext.FormPanel,{solidStrokeName:"Solid",dashStrokeName:"Dash",dotStrokeName:"Dot",titleText:"Stroke",styleText:"Style",colorText:"Color",widthText:"Width (pixels)",opacityText:"Opacity",symbolizer:null,colorManager:null,checkboxToggle:!0,defaultColor:null,dashStyles:null,border:!1,initComponent:function(){this.dashStyles=this.dashStyles||[["solid",this.solidStrokeName],["4 4",this.dashStrokeName],["2 4",this.dotStrokeName]];if(!this.symbolizer)this.symbolizer={};var a;
this.colorManager&&(a=[new this.colorManager]);this.items=[{xtype:"fieldset",title:this.titleText,autoHeight:!0,checkboxToggle:this.checkboxToggle,collapsed:!0===this.checkboxToggle&&!1===this.symbolizer.stroke,hideMode:"offsets",defaults:{width:100},items:[{xtype:"combo",name:"style",fieldLabel:this.styleText,store:new Ext.data.SimpleStore({data:this.dashStyles,fields:["value","display"]}),displayField:"display",valueField:"value",value:this.getDashArray(this.symbolizer.strokeDashstyle)||OpenLayers.Renderer.defaultSymbolizerGXP.strokeDashstyle,
mode:"local",allowBlank:!0,triggerAction:"all",editable:!1,listeners:{select:function(a,c){this.symbolizer.strokeDashstyle=c.get("value");this.fireEvent("change",this.symbolizer)},scope:this}},{xtype:"gxp_colorfield",name:"color",fieldLabel:this.colorText,emptyText:OpenLayers.Renderer.defaultSymbolizerGXP.strokeColor,value:this.symbolizer.strokeColor,defaultBackground:this.defaultColor||OpenLayers.Renderer.defaultSymbolizerGXP.strokeColor,plugins:a,listeners:{valid:function(a){var a=a.getValue(),
c=this.symbolizer.strokeColor!=a;this.symbolizer.strokeColor=a;c&&this.fireEvent("change",this.symbolizer)},scope:this}},{xtype:"numberfield",name:"width",fieldLabel:this.widthText,allowNegative:!1,emptyText:OpenLayers.Renderer.defaultSymbolizerGXP.strokeWidth,value:this.symbolizer.strokeWidth,listeners:{change:function(a,c){c=parseFloat(c);isNaN(c)?delete this.symbolizer.strokeWidth:this.symbolizer.strokeWidth=c;this.fireEvent("change",this.symbolizer)},scope:this}},{xtype:"slider",name:"opacity",
fieldLabel:this.opacityText,values:[100*("strokeOpacity"in this.symbolizer?this.symbolizer.strokeOpacity:OpenLayers.Renderer.defaultSymbolizerGXP.strokeOpacity)],isFormField:!0,listeners:{changecomplete:function(a,c){this.symbolizer.strokeOpacity=c/100;this.fireEvent("change",this.symbolizer)},scope:this},plugins:[new GeoExt.SliderTip({getText:function(a){return a.value+"%"}})]}],listeners:{collapse:function(){if(!1!==this.symbolizer.stroke)this.symbolizer.stroke=!1,this.fireEvent("change",this.symbolizer)},
expand:function(){this.symbolizer.stroke=!0;this.fireEvent("change",this.symbolizer)},scope:this}}];this.addEvents("change");gxp.StrokeSymbolizer.superclass.initComponent.call(this)},getDashArray:function(a){var b;a&&(a=a.split(/\s+/),a=a[0]/a[1],isNaN(a)||(b=1<=a?"4 4":"2 4"));return b}});Ext.reg("gxp_strokesymbolizer",gxp.StrokeSymbolizer);Ext.namespace("gxp");
gxp.TextSymbolizer=Ext.extend(Ext.Panel,{fonts:void 0,symbolizer:null,defaultSymbolizer:null,attributes:null,colorManager:null,haloCache:null,border:!1,layout:"form",labelValuesText:"Label values",haloText:"Halo",sizeText:"Size",priorityText:"Priority",labelOptionsText:"Label options",autoWrapText:"Auto wrap",followLineText:"Follow line",maxDisplacementText:"Maximum displacement",repeatText:"Repeat",forceLeftToRightText:"Force left to right",groupText:"Grouping",spaceAroundText:"Space around",labelAllGroupText:"Label all segments in line group",
maxAngleDeltaText:"Maximum angle delta",conflictResolutionText:"Conflict resolution",goodnessOfFitText:"Goodness of fit",polygonAlignText:"Polygon alignment",graphicResizeText:"Graphic resize",graphicMarginText:"Graphic margin",graphicTitle:"Graphic",fontColorTitle:"Font color and opacity",positioningText:"Label positioning",anchorPointText:"Anchor point",displacementXText:"Displacement (X-direction)",displacementYText:"Displacement (Y-direction)",perpendicularOffsetText:"Perpendicular offset",priorityHelp:"The higher the value of the specified field, the sooner the label will be drawn (which makes it win in the conflict resolution game)",
autoWrapHelp:"Wrap labels that exceed a certain length in pixels",followLineHelp:"Should the label follow the geometry of the line?",maxDisplacementHelp:"Maximum displacement in pixels if label position is busy",repeatHelp:"Repeat labels after a certain number of pixels",forceLeftToRightHelp:"Labels are usually flipped to make them readable. If the character happens to be a directional arrow then this is not desirable",groupHelp:"Grouping works by collecting all features with the same label text, then choosing a representative geometry for the group. Road data is a classic example to show why grouping is useful. It is usually desirable to display only a single label for all of 'Main Street', not a label for every block of 'Main Street.'",
spaceAroundHelp:"Overlapping and Separating Labels. By default GeoServer will not render labels 'on top of each other'. By using the spaceAround option you can either allow labels to overlap, or add extra space around labels. The value supplied for the option is a positive or negative size in pixels. Using the default value of 0, the bounding box of a label cannot overlap the bounding box of another label.",labelAllGroupHelp:"The labelAllGroup option makes sure that all of the segments in a line group are labeled instead of just the longest one.",
conflictResolutionHelp:"By default labels are subjected to conflict resolution, meaning the renderer will not allow any label to overlap with a label that has been drawn already. Setting this parameter to false pull the label out of the conflict resolution game, meaning the label will be drawn even if it overlaps with other labels, and other labels drawn after it won\u2019t mind overlapping with it.",goodnessOfFitHelp:"Geoserver will remove labels if they are a particularly bad fit for the geometry they are labeling. For Polygons: the label is sampled approximately at every letter. The distance from these points to the polygon is determined and each sample votes based on how close it is to the polygon. The default value is 0.5.",
graphic_resizeHelp:"Specifies a mode for resizing label graphics (such as highway shields) to fit the text of the label. The default mode, \u2018none\u2019, never modifies the label graphic. In stretch mode, GeoServer will resize the graphic to exactly surround the label text, possibly modifying the image\u2019s aspect ratio. In proportional mode, GeoServer will expand the image to be large enough to surround the text while preserving its original aspect ratio.",maxAngleDeltaHelp:"Designed to use used in conjuection with followLine, the maxAngleDelta option sets the maximum angle, in degrees, between two subsequent characters in a curved label. Large angles create either visually disconnected words or overlapping characters. It is advised not to use angles larger than 30.",
polygonAlignHelp:"GeoServer normally tries to place horizontal labels within a polygon, and give up in case the label position is busy or if the label does not fit enough in the polygon. This options allows GeoServer to try alternate rotations for the labels. Possible options: the default value, only the rotation manually specified in the tag will be used (manual), If the label does not fit horizontally and the polygon is taller than wider the vertical alignement will also be tried (ortho), If the label does not fit horizontally the minimum bounding rectangle will be computed and a label aligned to it will be tried out as well (mbr).",
graphic_marginHelp:"Similar to the margin shorthand property in CSS for HTML, its interpretation varies depending on how many margin values are provided: 1 = use that margin length on all sides of the label 2 = use the first for top & bottom margins and the second for left & right margins. 3 = use the first for the top margin, second for left & right margins, third for the bottom margin. 4 = use the first for the top margin, second for the right margin, third for the bottom margin, and fourth for the left margin.",
initComponent:function(){if(!this.symbolizer)this.symbolizer={};Ext.applyIf(this.symbolizer,this.defaultSymbolizer);if(!this.symbolizer.vendorOptions)this.symbolizer.vendorOptions={};this.haloCache={};this.attributes.on("load",this.showHideGeometryOptions,this);this.attributes.load();var a={xtype:"combo",fieldLabel:this.labelValuesText,store:this.attributes,mode:"local",lastQuery:"",editable:!1,triggerAction:"all",allowBlank:!1,displayField:"name",valueField:"name",value:this.symbolizer.label&&this.symbolizer.label.replace(/^\${(.*)}$/,
"$1"),listeners:{select:function(a,c){this.symbolizer.label="${"+c.get("name")+"}";this.fireEvent("change",this.symbolizer)},scope:this},width:120};this.attributesComboConfig=this.attributesComboConfig||{};Ext.applyIf(this.attributesComboConfig,a);this.labelWidth=80;this.items=[this.attributesComboConfig,{cls:"x-html-editor-tb",style:"background: transparent; border: none; padding: 0 0em 0.5em;",xtype:"toolbar",items:[{xtype:"gxp_fontcombo",fonts:this.fonts||void 0,width:110,value:this.symbolizer.fontFamily,
listeners:{select:function(a,c){this.symbolizer.fontFamily=c.get("field1");this.fireEvent("change",this.symbolizer)},scope:this}},{xtype:"tbtext",text:this.sizeText+": "},{xtype:"numberfield",allowNegative:!1,emptyText:OpenLayers.Renderer.defaultSymbolizerGXP.fontSize,value:this.symbolizer.fontSize,width:30,listeners:{change:function(a,c){c=parseFloat(c);isNaN(c)?delete this.symbolizer.fontSize:this.symbolizer.fontSize=c;this.fireEvent("change",this.symbolizer)},scope:this}},{enableToggle:!0,cls:"x-btn-icon",
iconCls:"x-edit-bold",pressed:"bold"===this.symbolizer.fontWeight,listeners:{toggle:function(a,c){this.symbolizer.fontWeight=c?"bold":"normal";this.fireEvent("change",this.symbolizer)},scope:this}},{enableToggle:!0,cls:"x-btn-icon",iconCls:"x-edit-italic",pressed:"italic"===this.symbolizer.fontStyle,listeners:{toggle:function(a,c){this.symbolizer.fontStyle=c?"italic":"normal";this.fireEvent("change",this.symbolizer)},scope:this}}]},{xtype:"gxp_fillsymbolizer",fillText:this.fontColorTitle,symbolizer:this.symbolizer,
colorProperty:"fontColor",opacityProperty:"fontOpacity",checkboxToggle:!1,autoHeight:!0,width:213,labelWidth:70,plugins:this.colorManager&&[new this.colorManager],listeners:{change:function(){this.fireEvent("change",this.symbolizer)},scope:this}},{xtype:"fieldset",title:this.graphicTitle,checkboxToggle:!0,hideMode:"offsets",collapsed:!(this.symbolizer.fillColor||this.symbolizer.fillOpacity||this.symbolizer.vendorOptions["graphic-resize"]||this.symbolizer.vendorOptions["graphic-margin"]),labelWidth:70,
items:[{xtype:"gxp_pointsymbolizer",symbolizer:this.symbolizer,listeners:{change:function(a){a.graphic=!!a.graphicName||!!a.externalGraphic;this.fireEvent("change",this.symbolizer)},scope:this},border:!1,labelWidth:70},this.createVendorSpecificField({name:"graphic-resize",xtype:"combo",store:["none","stretch","proportional"],mode:"local",listeners:{select:function(a){"none"===a.getValue()?this.graphicMargin.hide():(Ext.isEmpty(this.graphicMargin.getValue())&&(this.graphicMargin.setValue(0),this.symbolizer.vendorOptions["graphic-margin"]=
0),this.graphicMargin.show())},scope:this},width:100,triggerAction:"all",fieldLabel:this.graphicResizeText}),this.createVendorSpecificField({name:"graphic-margin",ref:"../graphicMargin",hidden:"stretch"!==this.symbolizer.vendorOptions["graphic-resize"]&&"proportional"!==this.symbolizer.vendorOptions["graphic-resize"],width:100,fieldLabel:this.graphicMarginText,xtype:"textfield"})],listeners:{collapse:function(){this.graphicCache={externalGraphic:this.symbolizer.externalGraphic,fillColor:this.symbolizer.fillColor,
fillOpacity:this.symbolizer.fillOpacity,graphicName:this.symbolizer.graphicName,pointRadius:this.symbolizer.pointRadius,rotation:this.symbolizer.rotation,strokeColor:this.symbolizer.strokeColor,strokeWidth:this.symbolizer.strokeWidth,strokeDashStyle:this.symbolizer.strokeDashStyle};delete this.symbolizer.externalGraphic;delete this.symbolizer.fillColor;delete this.symbolizer.fillOpacity;delete this.symbolizer.graphicName;delete this.symbolizer.pointRadius;delete this.symbolizer.rotation;delete this.symbolizer.strokeColor;
delete this.symbolizer.strokeWidth;delete this.symbolizer.strokeDashStyle;this.fireEvent("change",this.symbolizer)},expand:function(){Ext.apply(this.symbolizer,this.graphicCache);this.doLayout();this.fireEvent("change",this.symbolizer)},scope:this}},{xtype:"fieldset",title:this.haloText,checkboxToggle:!0,collapsed:!(this.symbolizer.haloRadius||this.symbolizer.haloColor||this.symbolizer.haloOpacity),autoHeight:!0,labelWidth:50,items:[{xtype:"numberfield",fieldLabel:this.sizeText,anchor:"89%",allowNegative:!1,
emptyText:OpenLayers.Renderer.defaultSymbolizerGXP.haloRadius,value:this.symbolizer.haloRadius,listeners:{change:function(a,c){c=parseFloat(c);isNaN(c)?delete this.symbolizer.haloRadius:this.symbolizer.haloRadius=c;this.fireEvent("change",this.symbolizer)},scope:this}},{xtype:"gxp_fillsymbolizer",symbolizer:{fillColor:"haloColor"in this.symbolizer?this.symbolizer.haloColor:OpenLayers.Renderer.defaultSymbolizerGXP.haloColor,fillOpacity:"haloOpacity"in this.symbolizer?this.symbolizer.haloOpacity:100*
OpenLayers.Renderer.defaultSymbolizerGXP.haloOpacity},defaultColor:OpenLayers.Renderer.defaultSymbolizerGXP.haloColor,checkboxToggle:!1,width:190,labelWidth:60,plugins:this.colorManager&&[new this.colorManager],listeners:{change:function(a){this.symbolizer.haloColor=a.fillColor;this.symbolizer.haloOpacity=a.fillOpacity;this.fireEvent("change",this.symbolizer)},scope:this}}],listeners:{collapse:function(){this.haloCache={haloRadius:this.symbolizer.haloRadius,haloColor:this.symbolizer.haloColor,haloOpacity:this.symbolizer.haloOpacity};
delete this.symbolizer.haloRadius;delete this.symbolizer.haloColor;delete this.symbolizer.haloOpacity;this.fireEvent("change",this.symbolizer)},expand:function(){Ext.apply(this.symbolizer,this.haloCache);this.doLayout();this.fireEvent("change",this.symbolizer)},scope:this}},{xtype:"fieldset",collapsed:!(this.symbolizer.labelAlign||this.symbolizer.vendorOptions.polygonAlign||this.symbolizer.labelXOffset||this.symbolizer.labelYOffset||this.symbolizer.labelPerpendicularOffset),title:this.positioningText,
checkboxToggle:!0,autoHeight:!0,labelWidth:75,defaults:{width:100},items:[this.createField(Ext.applyIf({fieldLabel:this.anchorPointText,geometryTypes:["POINT"],value:this.symbolizer.labelAlign||"lb",store:[["lt","Left-top"],["ct","Center-top"],["rt","Right-top"],["lm","Left-center"],["cm","Center"],["rm","Right-center"],["lb","Left-bottom"],["cb","Center-bottom"],["rb","Right-bottom"]],listeners:{select:function(a){this.symbolizer.labelAlign=a.getValue();delete this.symbolizer.labelAnchorPointX;delete this.symbolizer.labelAnchorPointY;
this.fireEvent("change",this.symbolizer)},scope:this}},this.attributesComboConfig)),this.createField({xtype:"numberfield",geometryTypes:["POINT"],fieldLabel:this.displacementXText,value:this.symbolizer.labelXOffset,listeners:{change:function(a,c){this.symbolizer.labelXOffset=c;this.fireEvent("change",this.symbolizer)},scope:this}}),this.createField({xtype:"numberfield",geometryTypes:["POINT"],fieldLabel:this.displacementYText,value:this.symbolizer.labelYOffset,listeners:{change:function(a,c){this.symbolizer.labelYOffset=
c;this.fireEvent("change",this.symbolizer)},scope:this}}),this.createField({xtype:"numberfield",geometryTypes:["LINE"],fieldLabel:this.perpendicularOffsetText,value:this.symbolizer.labelPerpendicularOffset,listeners:{change:function(a,c){Ext.isEmpty(c)?delete this.symbolizer.labelPerpendicularOffset:this.symbolizer.labelPerpendicularOffset=c;this.fireEvent("change",this.symbolizer)},scope:this}}),this.createVendorSpecificField({name:"polygonAlign",geometryTypes:["POLYGON"],xtype:"combo",mode:"local",
value:this.symbolizer.vendorOptions.polygonAlign||"manual",triggerAction:"all",store:["manual","ortho","mbr"],fieldLabel:this.polygonAlignText})]},{xtype:"fieldset",title:this.priorityText,checkboxToggle:!0,collapsed:!this.symbolizer.priority,autoHeight:!0,labelWidth:50,items:[Ext.applyIf({fieldLabel:this.priorityText,value:this.symbolizer.priority&&this.symbolizer.priority.replace(/^\${(.*)}$/,"$1"),allowBlank:!0,name:"priority",plugins:[{ptype:"gxp_formfieldhelp",dismissDelay:2E4,helpText:this.priorityHelp}],
listeners:{select:function(a,c){this.symbolizer[a.name]="${"+c.get("name")+"}";this.fireEvent("change",this.symbolizer)},scope:this}},this.attributesComboConfig)]},{xtype:"fieldset",title:this.labelOptionsText,checkboxToggle:!0,collapsed:!(this.symbolizer.vendorOptions.autoWrap||this.symbolizer.vendorOptions.followLine||this.symbolizer.vendorOptions.maxAngleDelta||this.symbolizer.vendorOptions.maxDisplacement||this.symbolizer.vendorOptions.repeat||this.symbolizer.vendorOptions.forceLeftToRight||this.symbolizer.vendorOptions.group||
this.symbolizer.vendorOptions.spaceAround||this.symbolizer.vendorOptions.labelAllGroup||this.symbolizer.vendorOptions.conflictResolution||this.symbolizer.vendorOptions.goodnessOfFit||this.symbolizer.vendorOptions.polygonAlign),autoHeight:!0,labelWidth:80,defaults:{width:100},items:[this.createVendorSpecificField({name:"autoWrap",allowBlank:!1,fieldLabel:this.autoWrapText}),this.createVendorSpecificField({name:"followLine",geometryTypes:["LINE"],xtype:"checkbox",listeners:{check:function(a,c){c?this.maxAngleDelta.show():
this.maxAngleDelta.hide()},scope:this},fieldLabel:this.followLineText}),this.createVendorSpecificField({name:"maxAngleDelta",ref:"../maxAngleDelta",hidden:null==this.symbolizer.vendorOptions.followLine,geometryTypes:["LINE"],fieldLabel:this.maxAngleDeltaText}),this.createVendorSpecificField({name:"maxDisplacement",fieldLabel:this.maxDisplacementText}),this.createVendorSpecificField({name:"repeat",geometryTypes:["LINE"],fieldLabel:this.repeatText}),this.createVendorSpecificField({name:"forceLeftToRight",
xtype:"checkbox",geometryTypes:["LINE"],fieldLabel:this.forceLeftToRightText}),this.createVendorSpecificField({name:"group",listeners:{check:function(a,c){"LINE"===this.geometryType&&(!1===c?this.labelAllGroup.hide():this.labelAllGroup.show())},scope:this},xtype:"checkbox",yesno:!0,fieldLabel:this.groupText}),this.createVendorSpecificField({name:"labelAllGroup",ref:"../labelAllGroup",geometryTypes:["LINE"],hidden:"yes"!==this.symbolizer.vendorOptions.group,xtype:"checkbox",fieldLabel:this.labelAllGroupText}),
this.createVendorSpecificField({name:"conflictResolution",xtype:"checkbox",listeners:{check:function(a,c){c?this.spaceAround.show():this.spaceAround.hide()},scope:this},fieldLabel:this.conflictResolutionText}),this.createVendorSpecificField({name:"spaceAround",hidden:!0!==this.symbolizer.vendorOptions.conflictResolution,allowNegative:!0,ref:"../spaceAround",fieldLabel:this.spaceAroundText}),this.createVendorSpecificField({name:"goodnessOfFit",geometryTypes:["POLYGON"],fieldLabel:this.goodnessOfFitText})]}];
this.addEvents("change");gxp.TextSymbolizer.superclass.initComponent.call(this)},createField:function(a){var b=Ext.ComponentMgr.create(a);if(a.geometryTypes)this.on("geometrytype",function(c){-1===a.geometryTypes.indexOf(c)&&b.hide()});return b},createVendorSpecificField:function(a){var b=function(b,c){Ext.isEmpty(c)?delete this.symbolizer.vendorOptions[a.name]:this.symbolizer.vendorOptions[a.name]=!0===a.yesno?!0==c?"yes":"no":c;this.fireEvent("change",this.symbolizer)},c=Ext.ComponentMgr.create(Ext.applyIf(a,
{xtype:"numberfield",allowNegative:!1,value:a.value||this.symbolizer.vendorOptions[a.name],checked:!0===a.yesno?"yes"===this.symbolizer.vendorOptions[a.name]:this.symbolizer.vendorOptions[a.name],plugins:[{ptype:"gxp_formfieldhelp",dismissDelay:2E4,helpText:this[a.name.replace(/-/g,"_")+"Help"]}]}));c.on("change",b,this);c.on("check",b,this);if(a.geometryTypes)this.on("geometrytype",function(b){-1===a.geometryTypes.indexOf(b)&&c.hide()});return c},showHideGeometryOptions:function(){var a=/gml:((Multi)?(Point|Line|Polygon|Curve|Surface|Geometry)).*/,
b=/gml:((Multi)?(Polygon|Surface)).*/,c=/gml:((Multi)?(Point)).*/,d=/gml:((Multi)?(Line|Curve|Surface)).*/,e=null;this.attributes.each(function(f){f=f.get("type");a.exec(f)&&(b.exec(f)?e="POLYGON":c.exec(f)?e="POINT":d.exec(f)&&(e="LINE"))},this);if(null!==e)this.geometryType=e,this.fireEvent("geometrytype",e)}});Ext.reg("gxp_textsymbolizer",gxp.TextSymbolizer);Ext.namespace("gxp.slider");
gxp.slider.Tip=Ext.extend(Ext.slider.Tip,{hover:!0,dragging:!1,init:function(a){if(this.hover)a.on("render",this.registerThumbListeners,this);this.slider=a;gxp.slider.Tip.superclass.init.apply(this,arguments)},registerThumbListeners:function(){for(var a=0,b=this.slider.thumbs.length;a1&&items.push(this.paperSizeText,{xtype:"combo",width:100,plugins:new GeoExt.plugins.PrintProviderField({printProvider:this.printProvider}),store:this.printProvider.layouts,displayField:"name",typeAhead:true,mode:"local",forceSelection:true,triggerAction:"all",selectOnFocus:true}," ");this.printProvider.dpis.getCount()>1&&items.push(this.resolutionText,{xtype:"combo",width:65,plugins:new GeoExt.plugins.PrintProviderField({printProvider:this.printProvider}),store:this.printProvider.dpis,displayField:"name",tpl:'
',typeAhead:true,mode:"local",forceSelection:true,triggerAction:"all",selectOnFocus:true,setValue:function(v){Ext.form.ComboBox.prototype.setValue.apply(this,arguments);}},{xtype:'tbspacer',width:12});}
if(this.showRotation){advancedItems.push(this.rotationText+":",{xtype:"numberfield",name:"rotation",value:0,hideLabel:true,width:40,allowBlank:false,allowNegative:false,allowDecimals:false,decimalPrecision:0,minValue:-360,maxValue:360,enableKeyEvents:true,plugins:new GeoExt.plugins.PrintPageField({printPage:this.printRotationPage})},{xtype:'tbspacer',width:12});}
if(this.mapLegend){advancedItems.push('->',new Ext.form.Checkbox({name:"mapLegend",checked:this.showLegendChecked,boxLabel:this.includeLegendText,hideLabel:true,ctCls:"gx-item-nowrap",hidden:!this.showLegend,handler:function(cb,checked){this.showLegendChecked=checked;},scope:this}));}
var formItems=[titleCfg,commentCfg,footerCfg,attributionCfg];advancedItems.length>0&&formItems.push({xtype:"toolbar",cls:"x-form-item",items:advancedItems});return new Ext.form.FormPanel({autoHeight:true,border:false,defaults:{anchor:"100%"},items:formItems});},createMapOverlay:function(){var map=this.printMapPanel.map;var scaleLine=new OpenLayers.Control.ScaleLine({geodesic:!(map.getProjectionObject()||new OpenLayers.Projection(map.projection||"EPSG:4326")).equals("EPSG:4326")});map.addControl(scaleLine);scaleLine.activate();return new Ext.Panel({cls:"gx-map-overlay",layout:"column",width:235,bodyStyle:"padding:5px",items:[{xtype:"box",el:scaleLine.div,width:scaleLine.maxWidth},{xtype:"container",layout:"form",style:"padding: .2em 5px 0 0;",columnWidth:1,cls:"x-small-editor x-form-item",items:{xtype:"combo",name:"scale",anchor:"100%",hideLabel:true,store:this.printMapPanel.previewScales,displayField:"name",typeAhead:true,mode:"local",forceSelection:true,triggerAction:"all",selectOnFocus:true,getListParent:function(){return this.el.up(".x-window")||document.body;},plugins:(!this.showRotation)?new GeoExt.plugins.PrintPageField({printPage:this.printMapPanel.printPage}):new GeoExt.plugins.PrintPageField({printPage:this.printRotationPage})}},{xtype:"box",autoEl:{tag:"div",cls:"gx-northarrow"}}],listeners:{"render":function(){function stop(evt){evt.stopPropagation();}
this.getEl().on({"click":stop,"dblclick":stop,"mousedown":stop});}}});},updateSize:function(){this.suspendEvents();var mapWidth=this.printMapPanel.getWidth();this.form.setWidth(mapWidth);this.form.items.get(0).setWidth(mapWidth);var minWidth=this.initialConfig.minWidth||0;this.items.get(0).setWidth(this.form.ownerCt.el.getPadding("lr")+Math.max(mapWidth,minWidth));var parent=this.ownerCt;if(parent&&parent instanceof Ext.Window){this.ownerCt.syncShadow();}
this.resumeEvents();},beforeDestroy:function(){if(this.busyMask){this.printProvider.un("beforeprint",this.busyMask.show,this.busyMask);this.printProvider.un("print",this.busyMask.hide,this.busyMask);}
this.printMapPanel.un("resize",this.updateSize,this);GeoExt.ux.PrintPreview.superclass.beforeDestroy.apply(this,arguments);}});Ext.reg("gxux_printpreview",GeoExt.ux.PrintPreview);/*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
Ext.namespace("Heron.i18n");function __(string){var dict=Heron.i18n.dict;if(typeof(dict)!='undefined'&&dict[string]){return dict[string];}
return string;}
Ext.namespace("gxp");if(!gxp.QueryPanel){gxp.QueryPanel=function(){};}else{Ext.namespace("gxp.data");gxp.data.WFSProtocolProxy=Ext.extend(GeoExt.data.ProtocolProxy,{setFilter:function(filter){this.protocol.filter=filter;this.protocol.options.filter=filter;},constructor:function(config){Ext.applyIf(config,{version:"1.1.0"});if(!(this.protocol&&this.protocol instanceof OpenLayers.Protocol)){config.protocol=new OpenLayers.Protocol.WFS(Ext.apply({version:config.version,srsName:config.srsName,url:config.url,featureType:config.featureType,featureNS:config.featureNS,geometryName:config.geometryName,schema:config.schema,filter:config.filter,maxFeatures:config.maxFeatures,outputFormat:(config.url.indexOf('nationaalgeoregister')>0||config.url.indexOf('sensors.geonovum.nl')>0)?'GML2':config.outputFormat,multi:config.multi},config.protocol));}
gxp.data.WFSProtocolProxy.superclass.constructor.apply(this,arguments);},doRequest:function(action,records,params,reader,callback,scope,arg){delete params.xaction;if(action===Ext.data.Api.actions.read){this.load(params,reader,callback,scope,arg);}else{if(!(records instanceof Array)){records=[records];}
var features=new Array(records.length),feature;Ext.each(records,function(r,i){features[i]=r.getFeature();feature=features[i];feature.modified=Ext.apply(feature.modified||{},{attributes:Ext.apply((feature.modified&&feature.modified.attributes)||{},r.modified)});},this);var o={action:action,records:records,callback:callback,scope:scope};var options={callback:function(response){this.onProtocolCommit(response,o);},scope:this};Ext.applyIf(options,params);this.protocol.commit(features,options);}},onProtocolCommit:function(response,o){if(response.success()){var features=response.reqFeatures;var state,feature;var destroys=[];var insertIds=response.insertIds||[];var i,len,j=0;for(i=0,len=features.length;i=200&&request.status<300){this.fireEvent("exception",this,"remote",o.action,o,response.error,o.records);}else{this.fireEvent("exception",this,"response",o.action,o,request);}
o.callback.call(o.scope,[],request,false);}}});Ext.namespace("gxp.plugins");Ext.override(gxp.plugins.CSWCatalogueSource,{filter:function(options){var filter=undefined;if(options.queryString!==""){filter=new OpenLayers.Filter.Comparison({type:OpenLayers.Filter.Comparison.LIKE,matchCase:undefined,property:'csw:AnyText',value:'*'+options.queryString+'*'});}
var data={"resultType":"results","maxRecords":options.limit,"outputSchema":this.outputSchema,"Query":{"typeNames":"gmd:MD_Metadata","ElementSetName":{"value":"full"}}};var fullFilter=this.getFullFilter(filter,options.filters);if(fullFilter!==undefined){Ext.apply(data.Query,{"Constraint":{version:"1.1.0",Filter:fullFilter}});}
Ext.apply(this.store.baseParams,data);this.store.load();}});}
if(gxp.ColorManager){Ext.override(gxp.ColorManager,{fieldFocus:function(field){if(!gxp.ColorManager.pickerWin){gxp.ColorManager.picker=new Ext.ColorPalette();gxp.ColorManager.pickerWin=new Ext.Window({title:"Color Picker",closeAction:"hide",autoWidth:Ext.isIE?false:true,autoHeight:Ext.isIE?false:true});}else{gxp.ColorManager.picker.purgeListeners();}
var listenerCfg={select:this.setFieldValue,scope:this};var value=this.getPickerValue();if(value){var colors=[].concat(gxp.ColorManager.picker.colors);if(!~colors.indexOf(value)){if(gxp.ColorManager.picker.ownerCt){gxp.ColorManager.pickerWin.remove(gxp.ColorManager.picker);gxp.ColorManager.picker=new Ext.ColorPalette();}
colors.push(value);gxp.ColorManager.picker.colors=colors;}
gxp.ColorManager.pickerWin.add(gxp.ColorManager.picker);if(Ext.isIE){gxp.ColorManager.pickerWin.setSize(456+10,248+36);}
gxp.ColorManager.pickerWin.doLayout();if(gxp.ColorManager.picker.rendered){gxp.ColorManager.picker.select(value);}else{listenerCfg.afterrender=function(){gxp.ColorManager.picker.select(value);};}}
gxp.ColorManager.picker.on(listenerCfg);gxp.ColorManager.pickerWin.show();}});}
if(!Ext.grid.GridView.prototype.templates){Ext.grid.GridView.prototype.templates={};}
Ext.grid.GridView.prototype.templates.cell=new Ext.Template('
',preventBodyReset:true,style:{marginTop:'32px',marginBottom:'24px'},activateControl:true,listeners:{afterrender:function(htmlPanel){var div=htmlPanel.body.dom.firstChild;if(!div){Ext.Msg.alert(__('Warning'),__('Cannot render draw controls'));return;}
this.addDrawControls(div);if(this.activateControl){this.activateDrawControl();}},scope:this}};config=Ext.apply(defaultConfig,config);return this.drawToolPanel=new Heron.widgets.HTMLPanel(config);},addDrawControls:function(div){this.drawControl=new OpenLayers.Control.EditingToolbar(this.selectionLayer,{div:div});this.drawControl.controls[0].panel_div.title=__('Return to map navigation');this.drawControl.controls[1].panel_div.title=__('Draw point');this.drawControl.controls[2].panel_div.title=__('Draw line');this.drawControl.controls[3].panel_div.title=__('Draw polygon');var drawCircleControl=new OpenLayers.Control.DrawFeature(this.selectionLayer,OpenLayers.Handler.RegularPolygon,{title:__('Draw circle (click and drag)'),displayClass:'olControlDrawCircle',handlerOptions:{citeCompliant:this.drawControl.citeCompliant,sides:30,irregular:false}});this.drawControl.addControls([drawCircleControl]);var drawRectangleControl=new OpenLayers.Control.DrawFeature(this.selectionLayer,OpenLayers.Handler.RegularPolygon,{displayClass:'olControlDrawRectangle',title:__('Draw Rectangle (click and drag)'),handlerOptions:{citeCompliant:this.drawControl.citeCompliant,sides:4,irregular:true}});this.drawControl.addControls([drawRectangleControl]);this.map.addControl(this.drawControl);this.activeControl=drawRectangleControl;this.fireEvent('drawcontroladded');},removeDrawControls:function(){if(this.drawControl){var self=this;Ext.each(this.drawControl.controls,function(control){self.map.removeControl(control);});this.map.removeControl(this.drawControl);this.drawControl=null;}},activateDrawControl:function(){if(!this.drawControl||this.drawControlActive){return;}
var self=this;Ext.each(this.drawControl.controls,function(control){control.events.register('featureadded',self,self.onFeatureDrawn);control.deactivate();if(self.activeControl&&control==self.activeControl){control.activate();}});this.drawControlActive=true;},deactivateDrawControl:function(){if(!this.drawControl){return;}
var self=this;Ext.each(this.drawControl.controls,function(control){control.events.unregister('featureadded',self,self.onFeatureDrawn);if(control.active){self.activeControl=control;}
control.deactivate();});this.updateStatusPanel();this.drawControlActive=false;},onFeatureDrawn:function(){},createTargetLayerCombo:function(config){var defaultConfig={fieldLabel:__('Search in'),sortOrder:this.layerSortOrder,layerFilter:this.layerFilter,selectFirst:true,listeners:{selectlayer:function(layer){this.targetLayer=layer;this.fireEvent('targetlayerselected');},scope:this}};config=Ext.apply(defaultConfig,config);return this.targetLayerCombo=new Heron.widgets.LayerCombo(config);},getFeatureType:function(){return this.lastFeatureType?this.lastFeatureType:(this.targetLayer?this.targetLayer.name:'heron');},updateStatusPanel:function(text){if(!text){text=' ';}
if(this.statusPanel.body){this.statusPanel.body.update(text);}else{this.statusPanel.html=text;}},onBeforeHide:function(){if(this.selectionLayer){this.selectionLayer.setVisibility(false);}},onBeforeShow:function(){if(this.selectionLayer){this.selectionLayer.setVisibility(true);}},onBeforeDestroy:function(){this.deactivateDrawControl();if(this.selectionLayer){this.selectionLayer.removeAllFeatures();this.map.removeLayer(this.selectionLayer);}},onDrawingComplete:function(searchPanel,selectionLayer){},onTargetLayerSelected:function(){},onSelectionLayerUpdate:function(){},onSearchIssued:function(){this.searchState="searchissued";this.response=null;this.features=null;this.updateStatusPanel(__('Searching...'));var self=this;var startTime=new Date().getTime()/1000;this.timer=setInterval(function(){if(self.searchState!='searchissued'){return;}
self.updateStatusPanel(Math.floor(new Date().getTime()/1000-startTime)+' '+__('Seconds')+' - '+
Heron.Utils.randArrayElm(self.progressMessages));},4000);},onSearchCanceled:function(searchPanel){this.searchState='searchcanceled';this.searchAbort();this.updateStatusPanel(__('Search Canceled'));},onSearchComplete:function(searchPanel,result){this.protocol=null;if(this.timer){clearInterval(this.timer);this.timer=null;}
if(this.sketch){this.selectionLayer.removeAllFeatures();this.sketch=false;}
this.fireEvent('selectionlayerupdate');if(this.searchState=='searchcanceled'){this.fireEvent('searchfailed',searchPanel,null);return;}
this.searchState="searchcomplete";var olResponse=result.olResponse;if(!olResponse||!olResponse.success()||olResponse.priv.responseText.indexOf('ExceptionReport')>0){this.fireEvent('searchfailed',searchPanel,olResponse);this.updateStatusPanel(__('Search Failed')+' details: '+olResponse.priv.responseText);return;}
this.onSearchSuccess(searchPanel,result);},onSearchSuccess:function(searchPanel,result){var features=this.features=this.filterFeatures=result.olResponse.features;var featureCount=features?features.length:0;this.updateStatusPanel(__('Search Completed: ')+featureCount+' '+(featureCount!=1?__('Results'):__('Result')));this.fireEvent('searchsuccess',searchPanel,result);},search:function(geometries,options){var targetLayer=options.targetLayer;var wfsOptions=targetLayer.metadata.wfs;if(wfsOptions.protocol=='fromWMSLayer'){this.protocol=OpenLayers.Protocol.WFS.fromWMSLayer(targetLayer,{outputFormat:'GML2'});if(this.protocol.url instanceof Array){this.protocol.url=Heron.Utils.randArrayElm(this.protocol.url);this.protocol.options.url=this.protocol.url;}}else{this.protocol=wfsOptions.protocol;}
this.lastFeatureType=this.protocol.featureType;var geometry=geometries[0];var spatialFilterType=options.spatialFilterType||OpenLayers.Filter.Spatial.INTERSECTS;var filterOptions={type:spatialFilterType,value:geometry};if(spatialFilterType==OpenLayers.Filter.Spatial.DWITHIN){var spatialFilterDistance=options.spatialFilterDistance||0;Ext.apply(filterOptions,{distanceUnits:options.spatialDistanceUnits,distance:spatialFilterDistance});}
var filter=new OpenLayers.Filter.Spatial(filterOptions);if(geometries.length>1){var filters=[];geometry=new OpenLayers.Geometry.Collection();Ext.each(geometries,function(g){geometry.addComponent(g);var options=Ext.applyIf({value:g},filterOptions);filters.push(new OpenLayers.Filter.Spatial(options));});filter=new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.OR,filters:filters});}
if(geometry.CLASS_NAME.indexOf('LineString')>0&&wfsOptions.maxQueryLength){var length=Math.round(geometry.getGeodesicLength(options.projection));if(length>wfsOptions.maxQueryLength){this.selectionLayer.removeAllFeatures();var units=options.units;Ext.Msg.alert(__('Warning - Line Length is ')+length+units,__('You drew a line with length above the layer-maximum of ')+wfsOptions.maxQueryLength+units);return false;}}
if(geometry.CLASS_NAME.indexOf('Polygon')>0&&wfsOptions.maxQueryArea){var area=Math.round(geometry.getGeodesicArea(options.projection));if(area>wfsOptions.maxQueryArea){this.selectionLayer.removeAllFeatures();var areaUnits=options.units+'2';Ext.Msg.alert(__('Warning - Area is ')+area+areaUnits,__('You selected an area for this layer above its maximum of ')+wfsOptions.maxQueryArea+areaUnits);return false;}}
var filterFormat=new OpenLayers.Format.Filter.v1_1_0({srsName:this.protocol.srsName});var filterStr=OpenLayers.Format.XML.prototype.write.apply(filterFormat,[filterFormat.write(filter)]);var maxFeatures=this.single==true?this.maxFeatures:undefined;this.response=this.protocol.read({maxFeatures:maxFeatures,filter:filter,callback:function(olResponse){if(!this.protocol){return;}
var downloadInfo={type:'wfs',url:this.protocol.options.url,downloadFormats:this.downloadFormats?this.downloadFormats:wfsOptions.downloadFormats,params:{typename:this.protocol.featureType,maxFeatures:maxFeatures,"Content-Disposition":"attachment",filename:targetLayer.name,srsName:this.protocol.srsName,service:"WFS",version:"1.1.0",request:"GetFeature",filter:filterStr}};var result={olResponse:olResponse,downloadInfo:downloadInfo,layer:targetLayer};this.fireEvent('searchcomplete',this,result);},scope:this});this.fireEvent('searchissued',this);return true;},searchAbort:function(){if(this.protocol){this.protocol.abort(this.response);}
this.protocol=null;if(this.timer){clearInterval(this.timer);this.timer=null;}}});Ext.reg('hr_spatialsearchpanel',Heron.widgets.search.SpatialSearchPanel);Ext.namespace("Heron.widgets.search");Heron.widgets.search.SearchByDrawPanel=Ext.extend(Heron.widgets.search.SpatialSearchPanel,{name:__('Search by Drawing'),spatialFilterType:OpenLayers.Filter.Spatial.INTERSECTS,initComponent:function(){this.items=[this.createTargetLayerCombo(),this.createDrawToolPanel(),this.createStatusPanel(),this.createActionButtons()];Heron.widgets.search.SearchByDrawPanel.superclass.initComponent.call(this);this.addListener("drawcontroladded",this.activateDrawControl,this);},createActionButtons:function(){return this.cancelButton=new Ext.Button({text:__('Cancel'),tooltip:__('Cancel ongoing search'),disabled:true,handler:function(){this.fireEvent('searchcanceled',this);},scope:this});},onDrawingComplete:function(searchPanel,selectionLayer){this.searchFromSketch();},onFeatureDrawn:function(){this.fireEvent('drawingcomplete',this,this.selectionLayer);},onPanelRendered:function(){this.updateStatusPanel(__('Select a drawing tool and draw to search immediately'));this.targetLayer=this.targetLayerCombo.selectedLayer;if(this.targetLayer){this.fireEvent('targetlayerselected',this.targetLayer);}},onParentShow:function(){this.activateDrawControl();},onParentHide:function(){this.deactivateDrawControl();},onSearchCanceled:function(searchPanel){Heron.widgets.search.SearchByFeaturePanel.superclass.onSearchCanceled.call(this);this.cancelButton.disable();if(this.selectionLayer){this.selectionLayer.removeAllFeatures();}},onSearchComplete:function(searchPanel,result){Heron.widgets.search.SearchByFeaturePanel.superclass.onSearchComplete.call(this,searchPanel,result);this.cancelButton.disable();},searchFromSketch:function(){var selectionLayer=this.selectionLayer;var geometry=selectionLayer.features[0].geometry;if(!this.search([geometry],{projection:selectionLayer.projection,units:selectionLayer.units,spatialFilterType:this.spatialFilterType,targetLayer:this.targetLayer})){}
this.sketch=true;this.cancelButton.enable();}});Ext.reg('hr_searchbydrawpanel',Heron.widgets.search.SearchByDrawPanel);Ext.namespace("Heron.widgets.search");Heron.widgets.search.SearchByFeaturePanel=Ext.extend(Heron.widgets.search.SpatialSearchPanel,{name:__('Search by Feature Selection'),sourceSpatialFilterType:OpenLayers.Filter.Spatial.INTERSECTS,spatialDistanceUnits:'meter',spatialFilterDistance:0,targetLayerFilter:function(map){return map.getLayersBy('metadata',{test:function(metadata){return metadata&&metadata.wfs&&!metadata.isSourceLayer;}})},initComponent:function(){this.resetButton=new Ext.Button({anchor:"20%",text:__('Reset'),tooltip:__('Start a new search'),listeners:{click:function(){this.resetForm();},scope:this}});this.items=[this.createSourceLayerCombo(),this.createDrawFieldSet(),this.createTargetLayerCombo({selectFirst:true}),this.createSearchTypeCombo(),this.createSearchDistField(),this.createActionButtons(),this.createStatusPanel(),this.resetButton];Heron.widgets.search.SearchByFeaturePanel.superclass.initComponent.call(this);},activateSearchByFeature:function(){this.deactivateSearchByFeature();this.sourceLayerCombo.addListener('selectlayer',this.onSourceLayerSelect,this);this.selectionLayer.events.register('featureadded',this,this.onSelectionLayerUpdate);this.selectionLayer.events.register('featuresadded',this,this.onSelectionLayerUpdate);this.selectionLayer.events.register('featureremoved',this,this.onSelectionLayerUpdate);this.selectionLayer.events.register('featuresremoved',this,this.onSelectionLayerUpdate);},deactivateSearchByFeature:function(){this.sourceLayerCombo.removeListener('selectlayer',this.onSourceLayerSelect,this);this.selectionLayer.events.unregister('featureadded',this,this.onSelectionLayerUpdate);this.selectionLayer.events.unregister('featuresadded',this,this.onSelectionLayerUpdate);this.selectionLayer.events.unregister('featureremoved',this,this.onSelectionLayerUpdate);this.selectionLayer.events.unregister('featuresremoved',this,this.onSelectionLayerUpdate);},resetForm:function(){this.selectionLayer.removeAllFeatures();this.searchButton.disable();this.sourceLayerCombo.reset();this.targetLayerCombo.reset();this.spatialFilterType=OpenLayers.Filter.Spatial.INTERSECTS;this.drawFieldSet.hide();this.deactivateDrawControl();this.selectionStatusField.hide();this.targetLayerCombo.hide();this.searchTypeCombo.hide();this.searchDistField.setValue(0);this.spatialFilterDistance=0;this.searchDistField.hide();this.actionButtons.hide();this.updateStatusPanel(__('Select a source Layer and then draw to select objects from that layer. Then select a target Layer to search in using the geometries of the selected objects.'));this.fireEvent('searchreset');},createActionButtons:function(){this.searchButton=new Ext.Button({text:__('Search'),tooltip:__('Search in target layer using the feature-geometries from the selection'),disabled:true,handler:function(){this.searchFromFeatures();},scope:this});this.cancelButton=new Ext.Button({text:__('Cancel'),tooltip:__('Cancel ongoing search'),disabled:true,listeners:{click:function(){this.fireEvent('searchcanceled',this);},scope:this}});return this.actionButtons=new Ext.ButtonGroup({fieldLabel:__('Actions'),anchor:"100%",title:null,border:false,items:[this.cancelButton,this.searchButton]});},createDrawFieldSet:function(){this.selectionStatusField=new Heron.widgets.HTMLPanel({html:__('No objects selected'),preventBodyReset:true,bodyCfg:{style:{padding:'2px',border:'0px'}},style:{marginTop:'2px',marginBottom:'2px',fontFamily:'Verdana, Arial, Helvetica, sans-serif',fontSize:'11px',color:'#0000C0'}});return this.drawFieldSet=new Ext.form.FieldSet({xtype:"fieldset",title:null,anchor:"100%",items:[this.createDrawToolPanel({style:{marginTop:'12px',marginBottom:'12px'},activateControl:false}),this.selectionStatusField]});},createSearchDistField:function(){return this.searchDistField=new Ext.form.NumberField({fieldLabel:__('Distance of Search'),name:'basic',value:0,minValue:0,maxValue:9999,enableKeyEvents:true,listeners:{keyup:function(numberfield,ev){this.spatialFilterDistance=numberfield.getValue();},scope:this}});},createSearchTypeCombo:function(){var store=new Ext.data.ArrayStore({fields:['name','value'],data:[[__('INTERSECTS (default)'),OpenLayers.Filter.Spatial.INTERSECTS],[__('WITHIN'),OpenLayers.Filter.Spatial.WITHIN],[__('WITHIN DISTANCE'),OpenLayers.Filter.Spatial.DWITHIN],[__('CONTAINS'),OpenLayers.Filter.Spatial.CONTAINS]]});return this.searchTypeCombo=new Ext.form.ComboBox({mode:'local',listWidth:160,value:store.getAt(0).get("name"),fieldLabel:__('Type of Search'),store:store,displayField:'name',valueField:'value',forceSelection:true,triggerAction:'all',editable:false,listeners:{select:function(cb,record){this.spatialFilterType=record.data['value'];if(record.data['value']==OpenLayers.Filter.Spatial.DWITHIN){this.searchDistField.show();}else{this.searchDistField.hide();}},scope:this}});},createSourceLayerCombo:function(){return this.sourceLayerCombo=new Heron.widgets.LayerCombo({fieldLabel:__('Choose Layer to select with'),sortOrder:this.layerSortOrder,layerFilter:this.layerFilter});},updateSelectionStatusField:function(text){if(this.selectionStatusField.body){this.selectionStatusField.body.update(text);}else{this.selectionStatusField.html=text;}},onFeatureDrawn:function(evt){var selectionLayer=this.selectionLayer;selectionLayer.removeAllFeatures();selectionLayer.addFeatures(evt.feature);var geometries=[selectionLayer.features[0].geometry];if(!this.search(geometries,{spatialFilterType:this.sourceSpatialFilterType,targetLayer:this.sourceLayer,projection:this.selectionLayer.projection,units:this.selectionLayer.units})){return;}
this.searchSelect=true;this.searchButton.enable();this.cancelButton.disable();},onSourceLayerSelect:function(layer){if(this.sourceLayer&&this.sourceLayer.metadata){this.sourceLayer.metadata.isSourceLayer=false;}
this.sourceLayer=layer;if(this.sourceLayer&&this.sourceLayer.metadata){this.sourceLayer.metadata.isSourceLayer=true;}
this.searchButton.enable();this.cancelButton.disable();this.drawFieldSet.show();this.activateDrawControl();this.selectionStatusField.show();this.updateStatusPanel();this.updateSelectionStatusField(__('Select a draw tool and draw to select objects from')+(this.sourceLayer?' "'+this.sourceLayer.name+'"':''));},onSelectionLayerUpdate:function(){},onTargetLayerSelected:function(){this.searchTypeCombo.show();this.actionButtons.show();this.searchButton.enable();this.cancelButton.disable();this.doLayout();this.updateStatusPanel(__('Select the spatial operator (optional) and use the Search button to start your search.'));},onPanelRendered:function(){if(this.fromLastResult&&this.filterFeatures){this.selectionLayer.addFeatures(this.filterFeatures);}
this.activateSearchByFeature();this.resetForm();},onParentShow:function(){this.activateSearchByFeature();},onParentHide:function(){this.deactivateSearchByFeature();this.resetForm();},onBeforeDestroy:function(){this.deactivateSearchByFeature();if(this.selectionLayer){this.selectionLayer.removeAllFeatures();this.map.removeLayer(this.selectionLayer);}},onSearchCanceled:function(searchPanel){Heron.widgets.search.SearchByFeaturePanel.superclass.onSearchCanceled.call(this);this.resetForm();},onSearchSuccess:function(searchPanel,result){var features=this.features=this.filterFeatures=result.olResponse.features;this.searchButton.enable();this.cancelButton.disable();if(this.searchSelect){this.selectionLayer.removeAllFeatures();this.selectionLayer.addFeatures(features);this.targetLayerCombo.hide();this.updateStatusPanel();if(this.selectionLayer.features.length==0){this.updateSelectionStatusField(__('No objects selected.'));return;}
if(this.selectionLayer.features.length>this.maxFilterGeometries){this.updateSelectionStatusField(__('Too many geometries for spatial filter: ')+this.selectionLayer.features.length+' '+'max: '+this.maxFilterGeometries);return;}
this.searchSelect=false;this.targetLayerCombo.setLayers(this.targetLayerFilter(this.map));this.targetLayerCombo.show();var text=this.selectionLayer.features.length+' '+__('objects selected from "')+(this.sourceLayer?this.sourceLayer.name:'')+'"';this.updateSelectionStatusField(text);this.updateStatusPanel(__('Select a target layer to search using the geometries of the selected objects'));}else{Heron.widgets.search.SearchByFeaturePanel.superclass.onSearchSuccess.call(this,searchPanel,result);}},searchFromFeatures:function(){var geometries=[];var features=this.selectionLayer.features;for(var i=0;iThen select a target Layer to search in using the geometries of the selected objects.'));this.fireEvent('searchreset');},createActionButtons:function(){this.searchButton=new Ext.Button({text:__('Search'),tooltip:__('Search in target layer using the feature-geometries from the selection'),disabled:true,handler:function(){this.searchFromFeatures();},scope:this});this.cancelButton=new Ext.Button({text:'Cancel',tooltip:__('Cancel ongoing search'),disabled:true,listeners:{click:function(){this.fireEvent('searchcanceled',this);},scope:this}});return this.actionButtons=new Ext.ButtonGroup({fieldLabel:__('Actions'),anchor:"100%",title:null,border:false,items:[this.cancelButton,this.searchButton]});},createDrawFieldSet:function(){this.selectionStatusField=new Heron.widgets.HTMLPanel({html:__('No objects selected'),preventBodyReset:true,bodyCfg:{style:{padding:'2px',border:'0px'}},style:{marginTop:'2px',marginBottom:'2px',fontFamily:'Verdana, Arial, Helvetica, sans-serif',fontSize:'11px',color:'#0000C0'}});return this.drawFieldSet=new Ext.form.FieldSet({xtype:"fieldset",title:null,anchor:"100%",items:[this.createDrawToolPanel({style:{marginTop:'12px',marginBottom:'12px'},activateControl:false}),this.selectionStatusField]});},createSearchDistField:function(){this.spatialFilterDistance=1;return this.searchDistField=new Ext.form.NumberField({fieldLabel:__('Distance of Search'),name:'basic',value:1,minValue:-99999,maxValue:99999,enableKeyEvents:true,listeners:{keyup:function(numberfield,ev){this.spatialFilterDistance=numberfield.getValue();},scope:this}});},createVectorLayerCombo:function(){return this.vectorLayerCombo=new Heron.widgets.LayerCombo({fieldLabel:__('Vector Layers'),sortOrder:this.layerSortOrder,layerFilter:this.vectorLayerFilter});},createSourceLayerCombo:function(){return this.sourceLayerCombo=new Heron.widgets.LayerCombo({fieldLabel:__('Choose Layer to select with'),sortOrder:this.layerSortOrder,layerFilter:this.layerFilter});},updateSelectionStatusField:function(text){if(this.selectionStatusField.body){this.selectionStatusField.body.update(text);}else{this.selectionStatusField.html=text;}},onFeatureDrawn:function(evt){var selectionLayer=this.selectionLayer;selectionLayer.removeAllFeatures();selectionLayer.addFeatures(evt.feature);var geometries=[selectionLayer.features[0].geometry];if(!this.search(geometries,{spatialFilterType:this.sourceSpatialFilterType,targetLayer:this.sourceLayer,projection:this.selectionLayer.projection,units:this.selectionLayer.units})){return;}
this.searchSelect=true;this.searchButton.enable();this.cancelButton.disable();},onSourceLayerSelect:function(layer){if(this.sourceLayer&&this.sourceLayer.metadata){this.sourceLayer.metadata.isSourceLayer=false;}
this.sourceLayer=layer;if(this.sourceLayer&&this.sourceLayer.metadata){this.sourceLayer.metadata.isSourceLayer=true;}
this.searchButton.enable();this.cancelButton.disable();this.drawFieldSet.show();this.activateDrawControl();this.searchDistField.show();this.vectorLayerCombo.hide();this.selectionStatusField.show();this.updateStatusPanel();this.updateSelectionStatusField(__('Enter a buffer distance and draw to apply to objects from')+(this.sourceLayer?' "'+this.sourceLayer.name+'"':''));},onVectorLayerSelect:function(layer){if(this.sourceLayer&&this.sourceLayer.metadata){this.sourceLayer.metadata.isSourceLayer=false;}
this.vectorLayer=layer;if(this.sourceLayer&&this.sourceLayer.metadata){this.sourceLayer.metadata.isSourceLayer=true;}
this.sourceLayerCombo.hide();this.searchDistField.show();this.bufferButton.show();this.updateStatusPanel(__('Enter a buffer distance and press "Buffer" to apply to objets from')+(this.vectorLayer?' "'+this.vectorLayer.name+'"':''));},onSelectionLayerUpdate:function(){},onTargetLayerSelected:function(){this.actionButtons.show();this.searchButton.enable();this.cancelButton.disable();this.doLayout();this.updateStatusPanel(__('Press the Search button to start your Search.'));},onPanelRendered:function(){if(this.fromLastResult&&this.filterFeatures){this.selectionLayer.addFeatures(this.filterFeatures);}
this.activateSearchByFeature();this.resetForm();},onParentShow:function(){this.activateSearchByFeature();},onParentHide:function(){this.deactivateSearchByFeature();this.resetForm();},onBeforeDestroy:function(){this.deactivateSearchByFeature();if(this.selectionLayer){this.selectionLayer.removeAllFeatures();this.map.removeLayer(this.selectionLayer);}},onSearchCanceled:function(searchPanel){Heron.widgets.search.SearchByBufferPanel.superclass.onSearchCanceled.call(this);this.resetForm();},bufferFeatures:function(features){var input,buffer,distance;var buffered=[];var reader=new jsts.io.WKTReader();var parser=new jsts.io.GeoJSONWriter();var geoJSON=new OpenLayers.Format.GeoJSON();var distance=this.spatialFilterDistance;for(var i=0;ithis.maxFilterGeometries){this.updateSelectionStatusField(__('Too many geometries for spatial filter: ')+this.selectionLayer.features.length+' '+'max: '+this.maxFilterGeometries);return;}
this.searchSelect=false;this.targetLayerCombo.setLayers(this.targetLayerFilter(this.map));this.targetLayerCombo.show();var text=this.selectionLayer.features.length+' '+__('objects selected from "')+(this.sourceLayer?this.sourceLayer.name:'')+'"';this.updateSelectionStatusField(text);this.updateStatusPanel(__('Select a target layer to search using the geometries of the selected objects'));}else{Heron.widgets.search.SearchByBufferPanel.superclass.onSearchSuccess.call(this,searchPanel,result);}},searchVector:function(){features=this.sourceLayer.features;this.searchButton.enable();this.cancelButton.disable();this.selectionLayer.addFeatures(this.bufferFeatures(features));this.targetLayerCombo.hide();this.updateStatusPanel();if(this.selectionLayer.features.length==0){this.updateStatusPanel(__('No objects selected.'));return;}
if(this.selectionLayer.features.length>this.maxFilterGeometries){this.updateStatusPanel(__('Too many geometries for spatial filter: ')+this.selectionLayer.features.length+' '+'max: '+this.maxFilterGeometries);return;}
this.searchSelect=false;this.targetLayerCombo.setLayers(this.targetLayerFilter(this.map));this.targetLayerCombo.show();var text=this.selectionLayer.features.length+' '+__('objects selected from "')+(this.sourceLayer?this.sourceLayer.name:'')+'". '+__('Select a target layer to search using the geometries of the selected objects');this.updateStatusPanel(text);},searchFromFeatures:function(){var geometries=[];var features=this.selectionLayer.features;for(var i=0;i0){pressed?control[0].activate():control[0].deactivate();}
control=this.map.getControlsBy('id',olControlWMTS.id);if(control.length>0){pressed?control[0].activate():control[0].deactivate();}};if(options.popupWindow){var popupWindowProps=Ext.apply(options.popupWindowDefaults,options.popupWindow);popupWindowProps.location=Heron.App.getMap().center;popupWindowProps.olControl=olControlWMS;popupWindowProps.olControlWMTS=olControlWMTS;popupWindowProps.featureInfoPanel=options.popupWindow?options.popupWindow.featureInfoPanel:null;if(!self.featurePopupWindow){self.featurePopupWindow=new Heron.widgets.search.FeatureInfoPopup(popupWindowProps);}}
return new Ext.Action(options);}},featuregraph:{options:{tooltip:__('Feature Graph'),iconCls:"icon-chartbar",enableToggle:true,pressed:false,id:"featuregraph"},create:function(mapPanel,options){var self=this;options.handler=function(item){if(!self.graphHandler){self.graphHandler=new Heron.widgets.search.WMSFeatureInfoGraph();self.graphHandler.setup();}
self.graphHandler.enable(item.pressed)};return new Ext.Action(options);}},help:{options:{tooltip:__('Help'),iconCls:"icon-help",enableToggle:false,pressed:false,id:"helpinfo",content:'Default help info',contentUrl:null,popupWindowDefaults:{title:__('Help'),border:true,layoutConfig:{padding:'0'},width:460,height:540,autoScroll:true,items:[{xtype:'hr_htmlpanel',height:'100%',width:'95%',preventBodyReset:true,bodyBorder:false,border:false,style:{paddingTop:'12px',paddingBottom:'12px',paddingLeft:'10px',paddingRight:'10px',fontFamily:'Verdana, Arial, Helvetica, sans-serif',fontSize:'10px',background:'#FFFFFF',color:'#111111'}}]}},create:function(mapPanel,options){options.handler=function(){var popupOptions=Ext.apply(options.popupWindowDefaults,options.popupWindow);if(options.contentUrl){popupOptions.items[0].autoLoad={url:options.contentUrl};}else{popupOptions.items[0].html=options.content}
new Ext.Window(popupOptions).show();};return new Ext.Action(options);}},tooltips:{options:{tooltip:__('Feature tooltips'),iconCls:"icon-featuretooltip",enableToggle:true,pressed:false,id:"tooltips",toggleGroup:"toolGroup",popupWindowDefaults:{title:__('FeatureTooltip'),anchored:false,hideonmove:false,height:150},controlDefaults:{maxFeatures:1,hover:true,drillDown:false,infoFormat:"application/vnd.ogc.gml",queryVisible:true}},create:function(mapPanel,options){return Heron.widgets.ToolbarBuilder.defs.featureinfo.create(mapPanel,options);}},pan:{options:{tooltip:__('Pan'),iconCls:"icon-hand",enableToggle:true,pressed:true,control:new OpenLayers.Control.Navigation(),id:"pan",toggleGroup:"toolGroup"},create:function(mapPanel,options){return new GeoExt.Action(options);}},upload:{options:{tooltip:__('Upload features from local file'),iconCls:"icon-upload",enableToggle:false,pressed:false,id:"hr-upload-button",toggleGroup:"toolGroup",upload:{layerName:__('My Upload'),visibleOnUpload:true,url:Heron.globals.serviceUrl,params:{action:'upload',mime:'text/html',encoding:'escape'},formats:[{name:'Well-Known-Text (WKT)',fileExt:'.wkt',mimeType:'text/plain',formatter:'OpenLayers.Format.WKT'},{name:'Geographic Markup Language - v2 (GML2)',fileExt:'.gml',mimeType:'text/xml',formatter:'OpenLayers.Format.GML'},{name:'Geographic Markup Language - v3 (GML3)',fileExt:'.gml',mimeType:'text/xml',formatter:'OpenLayers.Format.GML.v3'},{name:'GeoJSON',fileExt:'.json',mimeType:'text/plain',formatter:'OpenLayers.Format.GeoJSON'},{name:'GPS Exchange Format (GPX)',fileExt:'.gpx',mimeType:'text/xml',formatter:'OpenLayers.Format.GPX'},{name:'Keyhole Markup Language (KML)',fileExt:'.kml',mimeType:'text/xml',formatter:'OpenLayers.Format.KML'},{name:'CSV (with X,Y)',fileExt:'.csv',mimeType:'text/plain',formatter:'OpenLayers.Format.GeoJSON'},{name:'ESRI Shapefile (zipped)',fileExt:'.zip',mimeType:'text/plain',formatter:'OpenLayers.Format.GeoJSON'}],fileProjection:new OpenLayers.Projection('EPSG:4326')}},create:function(mapPanel,options){var map=mapPanel.getMap();options.upload.map=map;var layers=map.getLayersByName(options.upload.layerName);var layer;if(layers.length==0){layer=new OpenLayers.Layer.Vector(options.upload.layerName);map.addLayers([layer]);}else{layer=layers[0];}
options.control=new OpenLayers.Editor.Control.UploadFeature(layer,options.upload);return new GeoExt.Action(options);}},zoomin:{options:{tooltip:__('Zoom in'),iconCls:"icon-zoom-in",enableToggle:true,pressed:false,control:new OpenLayers.Control.ZoomBox({title:__('Zoom in'),out:false}),id:"zoomin",toggleGroup:"toolGroup"},create:function(mapPanel,options){return new GeoExt.Action(options);}},zoomout:{options:{tooltip:__('Zoom out'),iconCls:"icon-zoom-out",enableToggle:true,pressed:false,control:new OpenLayers.Control.ZoomBox({title:__('Zoom out'),out:true}),id:"zoomout",toggleGroup:"toolGroup"},create:function(mapPanel,options){return new GeoExt.Action(options);}},zoomvisible:{options:{tooltip:__('Zoom to full extent'),iconCls:"icon-zoom-visible",enableToggle:false,pressed:false,control:new OpenLayers.Control.ZoomToMaxExtent(),id:"zoomvisible"},create:function(mapPanel,options){return new GeoExt.Action(options);}},zoomprevious:{options:{tooltip:__('Zoom previous'),iconCls:"icon-zoom-previous",enableToggle:false,disabled:true,pressed:false,id:"zoomprevious"},create:function(mapPanel,options){if(!mapPanel.historyControl){mapPanel.historyControl=new OpenLayers.Control.NavigationHistory();mapPanel.getMap().addControl(mapPanel.historyControl);}
options.control=mapPanel.historyControl.previous;return new GeoExt.Action(options);}},zoomnext:{options:{tooltip:__('Zoom next'),iconCls:"icon-zoom-next",enableToggle:false,disabled:true,pressed:false,id:"zoomnext"},create:function(mapPanel,options){if(!mapPanel.historyControl){mapPanel.historyControl=new OpenLayers.Control.NavigationHistory();mapPanel.getMap().addControl(mapPanel.historyControl);}
options.control=mapPanel.historyControl.next;return new GeoExt.Action(options);}},measurelength:{options:{tooltip:__('Measure length'),iconCls:"icon-measure-length",enableToggle:true,pressed:false,measureLastLength:0.0,control:new OpenLayers.Control.Measure(OpenLayers.Handler.Path,{persist:true,immediate:true,displayClass:"olControlMeasureDistance",handlerOptions:{layerOptions:{styleMap:new OpenLayers.StyleMap({"default":new OpenLayers.Style(null,{rules:[new OpenLayers.Rule({symbolizer:{"Point":{pointRadius:10,graphicName:"square",fillColor:"white",fillOpacity:0.25,strokeWidth:1,strokeOpacity:1,strokeColor:"#333333"},"Line":{strokeWidth:1,strokeOpacity:1,strokeColor:"#FF0000",strokeDashstyle:"solid"}}})]})})}}}),id:"measurelength",toggleGroup:"toolGroup"},create:function(mapPanel,options){var action=new GeoExt.Action(options);var map=mapPanel.getMap();var controls=map.getControlsByClass("OpenLayers.Control.Measure");Heron.widgets.ToolbarBuilder.onMeasurementsActivate=function(event){Ext.getCmp("measurelength").measureLastLength=0.0;};Heron.widgets.ToolbarBuilder.onMeasurements=function(event){var units=event.units;var measure=event.measure;var out="";if(event.order==1){out+=__('Length')+": "+measure.toFixed(2)+" "+units;var item=Ext.getCmp("measurelength");item.measureLastLength=0.0;}else{out+=__('Area')+": "+measure.toFixed(2)+" "+units+"²";}
Ext.getCmp("bbar_measure").setText(out);};Heron.widgets.ToolbarBuilder.onMeasurementsPartial=function(event){var units=event.units;var measure=event.measure;var out="";if(event.order==1){out+=__('Length')+": "+measure.toFixed(2)+" "+units;var item=Ext.getCmp("measurelength");item.measureLastLength=measure;}else{out+=__('Area')+": "+measure.toFixed(2)+" "+units+"²";}
Ext.getCmp("bbar_measure").setText(out);};Heron.widgets.ToolbarBuilder.onMeasurementsDeactivate=function(event){Ext.getCmp("bbar_measure").setText("");};for(var i=0;i1)&&(options.mapPrintLayout)){var index=printProvider.layouts.find('name',options.mapPrintLayout);if(index!=-1){printProvider.setLayout(printProvider.layouts.getAt(index));}}
if((printProvider.dpis.getCount()>1)&&(options.mapPrintDPI)){var index=printProvider.dpis.find('value',options.mapPrintDPI);if(index!=-1){printProvider.setDpi(printProvider.dpis.getAt(index));}}
if(printProvider.outputFormatsEnabled&&options.mapPrintOutputFormat&&(printProvider.outputFormats.getCount()>0)){var index=printProvider.outputFormats.find('name',options.mapPrintOutputFormat);if(index!=-1){printProvider.setOutputFormat(printProvider.outputFormats.getAt(index));}}
if(options.mapPrintLegend){var legendPanel=new Heron.widgets.LayerLegendPanel({renderTo:document.body,hidden:true,defaults:options.legendDefaults});}
var printPage=new GeoExt.data.PrintPage({printProvider:printProvider});printPage.fit(mapPanel,true);printProvider.print(mapPanel,printPage,options.mapPrintLegend&&{legend:legendPanel});busyMask.hide();},failure:function(result,request){busyMask.hide();Ext.Msg.alert(__('Warning'),__('Error getting Print options from server: ')+options.url);}});};return new Ext.Action(options);}},coordinatesearch:{options:{id:"coordinatesearch",tooltip:__('Enter coordinates to go to location on map'),iconCls:"icon-map-pin",enableToggle:false,pressed:false,formWidth:340,formPageX:200,formPageY:75,buttonAlign:'center'},create:function(mapPanel,options){options.handler=function(){if(!this.coordPopup){var sp=new Heron.widgets.search.CoordSearchPanel({});this.coordPopup=new Ext.Window({layout:'auto',resizable:false,autoHeight:true,pageX:options.formPageX,pageY:options.formPageY,width:options.formWidth,closeAction:'hide',title:__('Go to coordinates'),items:[new Heron.widgets.search.CoordSearchPanel({deferredRender:false,border:false,title:options.title?options.title:null,titleDescription:options.titleDescription?options.titleDescription:sp.titleDescription,titleDescriptionStyle:options.titleDescriptionStyle?options.titleDescriptionStyle:sp.titleDescriptionStyle,bodyBaseCls:options.bodyBaseCls?options.bodyBaseCls:sp.bodyBaseCls,bodyItemCls:options.bodyItemCls?options.bodyItemCls:null,bodyCls:options.bodyCls?options.bodyCls:null,fieldMaxWidth:options.fieldMaxWidth?options.fieldMaxWidth:sp.fieldMaxWidth,fieldLabelWidth:options.fieldLabelWidth?options.fieldLabelWidth:sp.fieldLabelWidth,fieldStyle:options.fieldStyle?options.fieldStyle:sp.fieldStyle,fieldLabelStyle:options.fieldLabelStyle?options.fieldLabelStyle:sp.fieldLabelStyle,layerName:options.layerName?options.layerName:sp.layerName,onProjectionIndex:options.onProjectionIndex?options.onProjectionIndex:sp.onProjectionIndex,onZoomLevel:options.onZoomLevel?options.onZoomLevel:sp.onZoomLevel,showProjection:options.showProjection?options.showProjection:sp.showProjection,showZoom:options.showZoom?options.showZoom:sp.showZoom,showAddMarkers:options.showAddMarkers?options.showAddMarkers:sp.showAddMarkers,checkAddMarkers:options.checkAddMarkers?options.checkAddMarkers:sp.checkAddMarkers,showHideMarkers:options.showHideMarkers?options.showHideMarkers:sp.showHideMarkers,checkHideMarkers:options.checkHideMarkers?options.checkHideMarkers:sp.checkHideMarkers,showResultMarker:options.showResultMarker?options.showResultMarker:sp.showResultMarker,fieldResultMarkerStyle:options.fieldResultMarkerStyle?options.fieldResultMarkerStyle:sp.fieldResultMarkerStyle,fieldResultMarkerText:options.fieldResultMarkerText?options.fieldResultMarkerText:sp.fieldResultMarkerText,fieldResultMarkerSeparator:options.fieldResultMarkerSeparator?options.fieldResultMarkerSeparator:sp.fieldResultMarkerSeparator,fieldResultMarkerPrecision:options.fieldResultMarkerPrecision?options.fieldResultMarkerPrecision:sp.fieldResultMarkerPrecision,removeMarkersOnClose:options.removeMarkersOnClose?options.removeMarkersOnClose:sp.removeMarkersOnClose,showRemoveMarkersBtn:options.showRemoveMarkersBtn?options.showRemoveMarkersBtn:sp.showRemoveMarkersBtn,buttonAlign:options.buttonAlign?options.buttonAlign:sp.buttonAlign,hropts:options.hropts?options.hropts:null})]});}
if(this.coordPopup.isVisible()){this.coordPopup.hide();}else{this.coordPopup.show(this);}};return new Ext.Action(options);}},vectorstyler:{options:{id:"styler",tooltip:__('Edit vector Layer styles'),iconCls:"icon-palette",enableToggle:false,pressed:false,formWidth:340,formPageX:200,formPageY:75,buttonAlign:'center'},create:function(mapPanel,options){options.handler=function(){if(!this.stylerPopup){var layer=mapPanel.map.getLayersByName('RD Info - Punten')[0];var layerRecord=mapPanel.layers.getByLayer(layer);var url='http://kademo.nl/gs2';this.stylerPopup=new Ext.Window({layout:'auto',resizable:false,autoHeight:true,pageX:options.formPageX,pageY:options.formPageY,width:options.formWidth,closeAction:'hide',title:__('Style Editor'),items:[{xtype:"gxp_wmsstylesdialog",layerRecord:layerRecord,plugins:[{ptype:"gxp_memorystylewriter",baseUrl:url}],listeners:{"styleselected":function(cmp,style){layer.mergeNewParams({styles:style});},"modified":function(cmp,style){cmp.saveStyles();},"saved":function(cmp,style){layer.mergeNewParams({_olSalt:Math.random(),styles:style});},scope:this}}]});}
if(this.stylerPopup.isVisible()){this.stylerPopup.hide();}else{this.stylerPopup.show(this);}};return new Ext.Action(options);}},addbookmark:{options:{id:"addbookmark",tooltip:__('Bookmark current map context (layers, zoom, extent)'),iconCls:"icon-bookmark",enableToggle:false,disabled:false,pressed:false},create:function(mapPanel,options){options.handler=function(){var bookmarksPanel=Heron.widgets.Bookmarks.getBookmarksPanel(this);if(!bookmarksPanel){Ext.Msg.alert(__('Warning'),__('Error: No \'BookmarksPanel\' found.'));return null;}
bookmarksPanel.onAddBookmark();};return new GeoExt.Action(options);}},mapopen:{options:{id:"mapopen",tooltip:__('Open a map context (layers, styling, extent) from file'),iconCls:"icon-map-open",enableToggle:false,disabled:false,pressed:false},create:function(mapPanel,options){options.handler=function(){Heron.data.MapContext.openContext(mapPanel,options);}
return new GeoExt.Action(options);}},mapsave:{options:{id:"mapsave",tooltip:__('Save current map context (layers, styling, extent) to file'),iconCls:"icon-map-save",enableToggle:false,disabled:false,pressed:false,mime:'text/xml',fileName:'heron_map',fileExt:'.cml'},create:function(mapPanel,options){options.handler=function(){Heron.data.MapContext.saveContext(mapPanel,options);}
return new GeoExt.Action(options);}},epsgpanel:{options:{id:"map-panel-epsg",text:"",width:80,xtype:"tbtext"},create:function(mapPanel,options){return Ext.create(options);}},xcoord:{options:{id:"x-coord",text:"X:",width:80,xtype:"tbtext"},create:function(mapPanel,options){return Ext.create(options);}},ycoord:{options:{id:"y-coord",text:"Y:",width:80,xtype:"tbtext"},create:function(mapPanel,options){return Ext.create(options);}},measurepanel:{options:{id:"bbar_measure",text:"",xtype:"tbtext"},create:function(mapPanel,options){return Ext.create(options);}},overviewmap:{options:{tooltip:__('OverviewMap'),iconCls:"icon-overview",enableToggle:true,pressed:true,id:"overviewmap",overviewOptions:{autoActivate:true,maximized:true,minRatio:16,maxRatio:64,mapOptions:{projection:new OpenLayers.Projection("EPSG:4326")}}},create:function(mapPanel,options){var ovshow=true;var ovmap=new OpenLayers.Control.OverviewMap(options.overviewOptions);options.handler=function(){if(ovshow){ovmap.element.style.display='none';}else{ovmap.element.style.display='';}
ovshow=!ovshow;};options.control=ovmap;return new GeoExt.Action(options);}},streetview:{options:{tooltip:__('Click on map to view location in Google StreetView'),iconCls:"icon-streetview",enableToggle:true,pressed:false,id:"streetview",toggleGroup:"toolGroup",popupOptions:{title:__('Street View'),anchored:false,anchorPosition:'auto',width:300,height:300,collapsible:true,draggable:true}},create:function(mapPanel,options){var ClickControl=OpenLayers.Class(OpenLayers.Control,{defaults:{pixelTolerance:1,stopSingle:true},initialize:function(options){this.handlerOptions=OpenLayers.Util.extend({},this.defaults);OpenLayers.Control.prototype.initialize.apply(this,arguments);this.handler=new OpenLayers.Handler.Click(this,{click:this.trigger},this.handlerOptions);},trigger:function(event){openPopup(this.map.getLonLatFromViewPortPx(event.xy));}});var popup;function openPopup(location){if(!location){location=mapPanel.map.getCenter();}
if(popup&&popup.anc){popup.close();}
var popupOptions={location:location,map:mapPanel,items:[new Heron.widgets.GoogleStreetViewPanel()]};Ext.apply(popupOptions,options.popupOptions);popup=new GeoExt.Popup(popupOptions);popup.show();}
options.control=new ClickControl({trigger:function(e){openPopup(this.map.getLonLatFromViewPortPx(e.xy));}});return new GeoExt.Action(options);}},streetview_extern:{options:{tooltip:__('Open new window in Google StreetView'),iconCls:"icon-streetview",enableToggle:true,pressed:false,id:"streetview_extern",toggleGroup:"toolGroup"},create:function(mapPanel,options){options.control=new OpenLayers.Control.Click({trigger:function(e){var lonlat=mapPanel.getMap().getLonLatFromPixel(e.xy);var source=new Proj4js.Proj('EPSG:28992');var dest=new Proj4js.Proj('WGS84');var p=new Proj4js.Point(lonlat.lon,lonlat.lat);Proj4js.transform(source,dest,p);var link="http://maps.google.com/?layer=c&cbp=1,1,1,1,1&t=h&z=14&ll="+p.y+","+p.x+"&cbll="+p.y+","+p.x+""
window.open(link,id);}});return new GeoExt.Action(options);}}};Heron.widgets.ToolbarBuilder.checkCanWePrint=function(layers){var failingLayers='';for(var l=0;l"){toolbarItems.push("->");continue;}
var createFun;var defaultItemDef=Heron.widgets.ToolbarBuilder.defs[itemDef.type];if(itemDef.create){createFun=itemDef.create;}else if(defaultItemDef&&defaultItemDef.create){createFun=defaultItemDef.create;}
if(!createFun){continue;}
var coreOptions={map:mapPanel.getMap(),scope:mapPanel};var defaultItemOptions={};if(defaultItemDef&&defaultItemDef.options){defaultItemOptions=defaultItemDef.options;}
var extraOptions=itemDef.options?itemDef.options:{};var options=Ext.apply(coreOptions,extraOptions,defaultItemOptions);var item=createFun(mapPanel,options);if(item){toolbarItems.push(item);}}}
if(toolbarItems.length>0){toolbar.add(toolbarItems);}else{toolbar.setVisible(false);}};Ext.namespace("Heron.widgets");Heron.widgets.XMLTreePanel=Ext.extend(Ext.tree.TreePanel,{initComponent:function(){Ext.apply(this,{autoScroll:true,rootVisible:false,root:this.root?this.root:{nodeType:'async',text:'Ext JS',draggable:false,id:'source'}});Heron.widgets.XMLTreePanel.superclass.initComponent.apply(this,arguments);},xmlTreeFromUrl:function(url){var self=this;Ext.Ajax.request({url:url,method:'GET',params:null,success:function(result,request){self.xmlTreeFromDoc(self,result.responseXML);},failure:function(result,request){Ext.Msg.alert(__('Warning'),__('Error in ajax request'));}});},xmlTreeFromText:function(self,text){var doc=new OpenLayers.Format.XML().read(text);self.xmlTreeFromDoc(self,doc);return doc;},xmlTreeFromDoc:function(self,doc){self.setRootNode(self.treeNodeFromXml(self,doc.documentElement||doc));},treeNodeFromXml:function(self,XmlEl){var t=((XmlEl.nodeType==3)?XmlEl.nodeValue:XmlEl.tagName);if(t.replace(/\s/g,'').length==0){return null;}
var result=new Ext.tree.TreeNode({text:t});var xmlns='xmlns',xsi='xsi';if(XmlEl.nodeType==1){Ext.each(XmlEl.attributes,function(a){var nodeName=a.nodeName;if(!(XmlEl.parentNode.nodeType==9&&(nodeName.substring(0,xmlns.length)===xmlns||nodeName.substring(0,xsi.length)===xsi))){var c=new Ext.tree.TreeNode({text:a.nodeName});c.appendChild(new Ext.tree.TreeNode({text:a.nodeValue}));result.appendChild(c);}});Ext.each(XmlEl.childNodes,function(el){if((el.nodeType==1)||(el.nodeType==3)){var c=self.treeNodeFromXml(self,el);if(c){result.appendChild(c);}}});}
return result;}});Ext.reg('hr_xmltreepanel',Heron.widgets.XMLTreePanel);Ext.namespace("Heron.widgets");Heron.widgets.IFramePanel=Ext.extend(Ext.Panel,{name:'iframe',iframe:null,src:Ext.isIE&&Ext.isSecure?Ext.SSL_SECURE_URL:'about:blank',maskMessage:__('Loading...'),doMask:true,initComponent:function(){this.bodyCfg={tag:'iframe',frameborder:'0',src:this.src,name:this.name};Ext.apply(this,{});Heron.widgets.IFramePanel.superclass.initComponent.apply(this,arguments);this.addListener=this.on;},onRender:function(){Heron.widgets.IFramePanel.superclass.onRender.apply(this,arguments);this.iframe=Ext.isIE?this.body.dom.contentWindow:window.frames[this.name];this.body.dom[Ext.isIE?'onreadystatechange':'onload']=this.loadHandler.createDelegate(this);},loadHandler:function(){this.src=this.body.dom.src;this.removeMask();},getIframe:function(){return this.iframe;},getIframeBody:function(){var b=this.iframe.document.getElementsByTagName('body');if(!Ext.isEmpty(b)){return b[0];}else{return'';}},getUrl:function(){return this.body.dom.src;},setUrl:function(source){this.setMask();this.body.dom.src=source;},resetUrl:function(){this.setMask();this.body.dom.src=this.src;},refresh:function(){if(!this.isVisible()){return;}
this.setMask();this.body.dom.src=this.body.dom.src;},setMask:function(){if(this.doMask){this.el.mask(this.maskMessage);}},removeMask:function(){if(this.doMask){this.el.unmask();}}});Ext.reg('hr_iframePpanel',Heron.widgets.IFramePanel);Ext.namespace("Heron.widgets");Heron.widgets.ScaleSelectorCombo=Ext.extend(Ext.form.ComboBox,{map:null,tpl:'