/* Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojox.drawing.tools.TextBlock"]){dojo._hasResource["dojox.drawing.tools.TextBlock"]=true;dojo.provide("dojox.drawing.tools.TextBlock");dojo.require("dojox.drawing.stencil.Text");(function(){var _1;dojo.addOnLoad(function(){_1=dojo.byId("conEdit");if(!_1){console.error("A contenteditable div is missing from the main document. See 'dojox.drawing.tools.TextBlock'");}else{_1.parentNode.removeChild(_1);}});dojox.drawing.tools.TextBlock=dojox.drawing.util.oo.declare(dojox.drawing.stencil.Text,function(_2){if(_2.data){var d=_2.data;var w=!d.width?this.style.text.minWidth:d.width=="auto"?"auto":Math.max(d.width,this.style.text.minWidth);var h=this._lineHeight;if(d.text&&w=="auto"){var o=this.measureText(this.cleanText(d.text,false),w);w=o.w;h=o.h;}else{this._text="";}this.points=[{x:d.x,y:d.y},{x:d.x+w,y:d.y},{x:d.x+w,y:d.y+h},{x:d.x,y:d.y+h}];if(d.showEmpty||d.text){this.editMode=true;dojo.disconnect(this._postRenderCon);this._postRenderCon=null;this.connect(this,"render",this,"onRender",true);if(d.showEmpty){this._text=d.text||"";this.edit();}else{if(d.text&&d.editMode){this._text="";this.edit();}else{if(d.text){this.render(d.text);}}}setTimeout(dojo.hitch(this,function(){this.editMode=false;}),100);}}else{this.connectMouse();this._postRenderCon=dojo.connect(this,"render",this,"_onPostRender");}},{draws:true,baseRender:false,type:"dojox.drawing.tools.TextBlock",selectOnExec:true,showEmpty:false,onDrag:function(_3){if(!this.parentNode){this.showParent(_3);}var s=this._startdrag,e=_3.page;this._box.left=(s.x8?_5.height:this._lineHeight,border:d.width+"px "+d.style+" "+d.color,position:"absolute",zIndex:500,toPx:function(){var o={};for(var nm in this){o[nm]=typeof (this[nm])=="number"&&nm!="zIndex"?this[nm]+"px":this[nm];}return o;}};dojo.style(this.parentNode,this._box);document.body.appendChild(this.parentNode);},createTextField:function(_6){var d=this.style.textMode.edit;this._box.border=d.width+"px "+d.style+" "+d.color;this._box.height="auto";this._box.width=Math.max(this._box.width,this.style.text.minWidth*this.mouse.zoom);dojo.style(this.parentNode,this._box.toPx());this.parentNode.appendChild(_1);dojo.style(_1,{height:_6?"auto":this._lineHeight+"px",fontSize:(this.textSize/this.mouse.zoom)+"px",fontFamily:this.style.text.family});_1.innerHTML=_6||"";return _1;},connectTextField:function(){if(this._textConnected){return;}this._textConnected=true;this.mouse.setEventMode("TEXT");this.keys.editMode(true);var _7,_8,_9,_a,_b=this,_c=false,_d=function(){dojo.forEach([_7,_8,_9,_a],function(c){dojo.disconnect(c);});_b._textConnected=false;_b.keys.editMode(false);_b.mouse.setEventMode();_b.execText();};_7=dojo.connect(_1,"keyup",this,function(_e){if(dojo.trim(_1.innerHTML)&&!_c){dojo.style(_1,"height","auto");_c=true;}else{if(dojo.trim(_1.innerHTML).length<2&&_c){dojo.style(_1,"height",this._lineHeight+"px");_c=false;}}if(_e.keyCode==13||_e.keyCode==27){dojo.stopEvent(_e);_d();}});_8=dojo.connect(_1,"keydown",this,function(_f){if(_f.keyCode==13||_f.keyCode==27){dojo.stopEvent(_f);}});_9=dojo.connect(document,"mouseup",this,function(evt){if(!this._onAnchor&&evt.target.id!="conEdit"){dojo.stopEvent(evt);_d();}else{_1.blur();setTimeout(function(){_1.focus();},200);}});this.createAnchors();_a=dojo.connect(this.mouse,"setZoom",this,function(evt){_d();});_1.focus();this.onDown=function(){};this.onDrag=function(){};var _b=this;setTimeout(dojo.hitch(this,function(){_1.focus();this.onUp=function(){if(!_b._onAnchor&&this.parentNode){_b.disconnectMouse();_d();_b.onUp=function(){};}};}),500);},execText:function(){var d=dojo.marginBox(this.parentNode);var w=Math.max(d.w,this.style.text.minWidth);var txt=this.cleanText(_1.innerHTML,true);_1.innerHTML="";_1.blur();this.destroyAnchors();var o=this.measureText(txt,w);var sc=this.mouse.scrollOffset();var org=this.mouse.origin;var x=this._box.left+sc.left-org.x;var y=this._box.top+sc.top-org.y;x*=this.mouse.zoom;y*=this.mouse.zoom;w*=this.mouse.zoom;o.h*=this.mouse.zoom;this.points=[{x:x,y:y},{x:x+w,y:y},{x:x+w,y:y+o.h},{x:x,y:y+o.h}];this.editMode=false;if(!o.text){this._text="";this._textArray=[];}this.render(o.text);this.onChangeText(txt);},edit:function(){this.editMode=true;if(this.parentNode||!this.points){return;}var d=this.pointsToData();var sc=this.mouse.scrollOffset();var org=this.mouse.origin;var obj={pageX:(d.x)/this.mouse.zoom-sc.left+org.x,pageY:(d.y)/this.mouse.zoom-sc.top+org.y,width:d.width/this.mouse.zoom,height:d.height/this.mouse.zoom};this.remove(this.shape,this.hit);this.showParent(obj);this.createTextField(this._text.replace("/n"," "));this.connectTextField();if(this._text){this.setSelection(_1,"end");}},cleanText:function(txt,_10){var _11=function(str){var _12={"<":"<",">":">","&":"&"};for(var nm in _12){str=str.replace(new RegExp(nm,"gi"),_12[nm]);}return str;};if(_10){dojo.forEach(["
","
","
","\\n","\\r"],function(br){txt=txt.replace(new RegExp(br,"gi")," ");});}txt=txt.replace(/ /g," ");txt=_11(txt);txt=dojo.trim(txt);txt=txt.replace(/\s{2,}/g," ");return txt;},measureText:function(str,_13){var r="()|(\\n)|(\\r)";this.showParent({width:_13||"auto",height:"auto"});this.createTextField(str);var txt="";var el=_1;el.innerHTML="X";var h=dojo.marginBox(el).h;el.innerHTML=str;if(!_13||new RegExp(r,"gi").test(str)){txt=str.replace(new RegExp(r,"gi"),"\n");el.innerHTML=str.replace(new RegExp(r,"gi"),"
");}else{if(dojo.marginBox(el).h==h){txt=str;}else{var ar=str.split(" ");var _14=[[]];var _15=0;el.innerHTML="";while(ar.length){var _16=ar.shift();el.innerHTML+=_16+" ";if(dojo.marginBox(el).h>h){_15++;_14[_15]=[];el.innerHTML=_16+" ";}_14[_15].push(_16);}dojo.forEach(_14,function(ar,i){_14[i]=ar.join(" ");});txt=_14.join("\n");el.innerHTML=txt.replace("\n","
");}}var dim=dojo.marginBox(el);_1.parentNode.removeChild(_1);dojo.destroy(this.parentNode);this.parentNode=null;return {h:dim.h,w:dim.w,text:txt};},_downOnCanvas:false,onDown:function(obj){this._startdrag={x:obj.pageX,y:obj.pageY};dojo.disconnect(this._postRenderCon);this._postRenderCon=null;this._downOnCanvas=true;},createAnchors:function(){this._anchors={};var _17=this;var d=this.style.anchors,b=d.width,w=d.size-b*2,h=d.size-b*2,p=(d.size)/2*-1+"px";var s={position:"absolute",width:w+"px",height:h+"px",backgroundColor:d.fill,border:b+"px "+d.style+" "+d.color};if(dojo.isIE){s.paddingLeft=w+"px";s.fontSize=w+"px";}var ss=[{top:p,left:p},{top:p,right:p},{bottom:p,right:p},{bottom:p,left:p}];for(var i=0;i<4;i++){var _18=(i==0)||(i==3);var id=this.util.uid(_18?"left_anchor":"right_anchor");var a=dojo.create("div",{id:id},this.parentNode);dojo.style(a,dojo.mixin(dojo.clone(s),ss[i]));var md,mm,mu;var md=dojo.connect(a,"mousedown",this,function(evt){_18=evt.target.id.indexOf("left")>-1;_17._onAnchor=true;var _19=evt.pageX;var _1a=this._box.width;dojo.stopEvent(evt);mm=dojo.connect(document,"mousemove",this,function(evt){var x=evt.pageX;if(_18){this._box.left=x;this._box.width=_1a+_19-x;}else{this._box.width=x+_1a-_19;}dojo.style(this.parentNode,this._box.toPx());});mu=dojo.connect(document,"mouseup",this,function(evt){_19=this._box.left;_1a=this._box.width;dojo.disconnect(mm);dojo.disconnect(mu);_17._onAnchor=false;_1.focus();dojo.stopEvent(evt);});});this._anchors[id]={a:a,cons:[md]};}},destroyAnchors:function(){for(var n in this._anchors){dojo.forEach(this._anchors[n].con,dojo.disconnect,dojo);dojo.destroy(this._anchors[n].a);}},setSelection:function(_1b,_1c){console.warn("setSelection:");if(dojo.doc.selection){var r=dojo.body().createTextRange();r.moveToElementText(_1b);r.collapse(false);r.select();}else{var _1d=function(_1e,_1f){_1f=_1f||[];for(var i=0;i<_1e.childNodes.length;i++){var n=_1e.childNodes[i];if(n.nodeType==3){_1f.push(n);}else{if(n.tagName&&n.tagName.toLowerCase()=="img"){_1f.push(n);}}if(n.childNodes&&n.childNodes.length){_1d(n,_1f);}}return _1f;};_1b.focus();var _20=dojo.global.getSelection();_20.removeAllRanges();var r=dojo.doc.createRange();r.selectNodeContents(_1b);var _21=_1d(_1b);if(_1c=="end"){r.setStart(_21[_21.length-1],_21[_21.length-1].textContent.length);r.setEnd(_21[_21.length-1],_21[_21.length-1].textContent.length);}else{if(_1c=="beg"||_1c=="start"){r.setStart(_21[0],0);r.setEnd(_21[0],0);}else{if(_1c=="all"){r.setStart(_21[0],0);r.setEnd(_21[_21.length-1],_21[_21.length-1].textContent.length);}}}_20.addRange(r);}}});dojox.drawing.tools.TextBlock.setup={name:"dojox.drawing.tools.TextBlock",tooltip:"Text Tool",iconClass:"iconText"};dojox.drawing.register(dojox.drawing.tools.TextBlock.setup,"tool");})();}