/* 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.sketch.Figure"]){dojo._hasResource["dojox.sketch.Figure"]=true;dojo.provide("dojox.sketch.Figure");dojo.experimental("dojox.sketch");dojo.require("dojox.gfx");dojo.require("dojox.sketch.UndoStack");(function(){var ta=dojox.sketch;ta.tools={};ta.registerTool=function(_1,fn){ta.tools[_1]=fn;};ta.Figure=function(_2){var _3=this;this.annCounter=1;this.shapes=[];this.image=null;this.imageSrc=null;this.size={w:0,h:0};this.surface=null;this.group=null;this.node=null;this.zoomFactor=1;this.tools=null;this.obj={};dojo.mixin(this,_2);this.selected=[];this.hasSelections=function(){return this.selected.length>0;};this.isSelected=function(_4){for(var i=0;i<_3.selected.length;i++){if(_3.selected[i]==_4){return true;}}return false;};this.select=function(_5){if(!_3.isSelected(_5)){_3.clearSelections();_3.selected=[_5];}_5.setMode(ta.Annotation.Modes.View);_5.setMode(ta.Annotation.Modes.Edit);};this.deselect=function(_6){var _7=-1;for(var i=0;i<_3.selected.length;i++){if(_3.selected[i]==_6){_7=i;break;}}if(_7>-1){_6.setMode(ta.Annotation.Modes.View);_3.selected.splice(_7,1);}return _6;};this.clearSelections=function(){for(var i=0;i<_3.selected.length;i++){_3.selected[i].setMode(ta.Annotation.Modes.View);}_3.selected=[];};this.replaceSelection=function(n,o){if(!_3.isSelected(o)){_3.select(n);return;}var _8=-1;for(var i=0;i<_3.selected.length;i++){if(_3.selected[i]==o){_8=i;break;}}if(_8>-1){_3.selected.splice(_8,1,n);}};this._c=null;this._ctr=null;this._lp=null;this._action=null;this._prevState=null;this._startPoint=null;this._ctool=null;this._start=null;this._end=null;this._absEnd=null;this._cshape=null;this._dblclick=function(e){var o=_3._fromEvt(e);if(o){_3.onDblClickShape(o,e);}};this._keydown=function(e){var _9=false;if(e.ctrlKey){if(e.keyCode===90||e.keyCode===122){_3.undo();_9=true;}else{if(e.keyCode===89||e.keyCode===121){_3.redo();_9=true;}}}if(e.keyCode===46||e.keyCode===8){_3._delete(_3.selected);_9=true;}if(_9){dojo.stopEvent(e);}};this._md=function(e){if(dojox.gfx.renderer=="vml"){_3.node.focus();}var o=_3._fromEvt(e);_3._startPoint={x:e.pageX,y:e.pageY};_3._ctr=dojo.position(_3.node);var _a={x:_3.node.scrollLeft,y:_3.node.scrollTop};_3._ctr={x:_3._ctr.x-_a.x,y:_3._ctr.y-_a.y};var X=e.clientX-_3._ctr.x,Y=e.clientY-_3._ctr.y;_3._lp={x:X,y:Y};_3._start={x:X,y:Y};_3._end={x:X,y:Y};_3._absEnd={x:X,y:Y};if(!o){_3.clearSelections();_3._ctool.onMouseDown(e);}else{if(o.type&&o.type()!="Anchor"){if(!_3.isSelected(o)){_3.select(o);_3._sameShapeSelected=false;}else{_3._sameShapeSelected=true;}}o.beginEdit();_3._c=o;}};this._mm=function(e){if(!_3._ctr){return;}var x=e.clientX-_3._ctr.x;var y=e.clientY-_3._ctr.y;var dx=x-_3._lp.x;var dy=y-_3._lp.y;_3._absEnd={x:x,y:y};if(_3._c){_3._c.setBinding({dx:dx/_3.zoomFactor,dy:dy/_3.zoomFactor});_3._lp={x:x,y:y};}else{_3._end={x:dx,y:dy};var _b={x:Math.min(_3._start.x,_3._absEnd.x),y:Math.min(_3._start.y,_3._absEnd.y),width:Math.abs(_3._start.x-_3._absEnd.x),height:Math.abs(_3._start.y-_3._absEnd.y)};if(_b.width&&_b.height){_3._ctool.onMouseMove(e,_b);}}};this._mu=function(e){if(_3._c){_3._c.endEdit();}else{_3._ctool.onMouseUp(e);}_3._c=_3._ctr=_3._lp=_3._action=_3._prevState=_3._startPoint=null;_3._cshape=_3._start=_3._end=_3._absEnd=null;};this.initUndoStack();};var p=ta.Figure.prototype;p.initUndoStack=function(){this.history=new ta.UndoStack(this);};p.setTool=function(t){this._ctool=t;};p.gridSize=0;p._calCol=function(v){return this.gridSize?(Math.round(v/this.gridSize)*this.gridSize):v;};p._delete=function(_c,_d){for(var i=0;i<_c.length;i++){_c[i].setMode(ta.Annotation.Modes.View);_c[i].destroy(_d);this.remove(_c[i]);this._remove(_c[i]);if(!_d){_c[i].onRemove();}}_c.splice(0,_c.length);};p.onDblClickShape=function(_e,e){if(_e["onDblClick"]){_e.onDblClick(e);}};p.onCreateShape=function(_f){};p.onBeforeCreateShape=function(_10){};p.initialize=function(_11){this.node=_11;this.surface=dojox.gfx.createSurface(_11,this.size.w,this.size.h);this.group=this.surface.createGroup();this._cons=[];var es=this.surface.getEventSource();this._cons.push(dojo.connect(es,"ondraggesture",dojo.stopEvent),dojo.connect(es,"ondragenter",dojo.stopEvent),dojo.connect(es,"ondragover",dojo.stopEvent),dojo.connect(es,"ondragexit",dojo.stopEvent),dojo.connect(es,"ondragstart",dojo.stopEvent),dojo.connect(es,"onselectstart",dojo.stopEvent),dojo.connect(es,"onmousedown",this._md),dojo.connect(es,"onmousemove",this._mm),dojo.connect(es,"onmouseup",this._mu),dojo.connect(es,"onclick",this,"onClick"),dojo.connect(es,"ondblclick",this._dblclick),dojo.connect(_11,"onkeydown",this._keydown));this.image=this.group.createImage({width:this.imageSize.w,height:this.imageSize.h,src:this.imageSrc});};p.destroy=function(_12){if(!this.node){return;}if(!_12){if(this.history){this.history.destroy();}if(this._subscribed){dojo.unsubscribe(this._subscribed);delete this._subscribed;}}dojo.forEach(this._cons,dojo.disconnect);this._cons=[];dojo.empty(this.node);this.group=this.surface=null;this.obj={};this.shapes=[];};p.nextKey=function(){return "annotation-"+this.annCounter++;};p.draw=function(){};p.zoom=function(pct){this.zoomFactor=pct/100;var w=this.size.w*this.zoomFactor;var h=this.size.h*this.zoomFactor;this.surface.setDimensions(w,h);this.group.setTransform(dojox.gfx.matrix.scale(this.zoomFactor,this.zoomFactor));for(var i=0;i-1){key=key.replace("-boundingBox","");}else{if(key&&key.indexOf("-labelShape")>-1){key=key.replace("-labelShape","");}}return this.obj[key];};p._keyFromEvt=function(e){var key=e.target.id+"";if(key.length==0){var p=e.target.parentNode;var _13=this.surface.getEventSource();while(p&&p.id.length==0&&p!=_13){p=p.parentNode;}key=p.id;}return key;};p._fromEvt=function(e){return this._get(this._keyFromEvt(e));};p.add=function(_14){for(var i=0;i-1){this.shapes.splice(idx,1);}return _15;};p.get=function(id){for(var i=0;i"+""+"";for(var i=0;i";return s;};p.getValue=p.serialize;})();}