| /* |
| 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.manager.Mouse"]){ |
| dojo._hasResource["dojox.drawing.manager.Mouse"]=true; |
| dojo.provide("dojox.drawing.manager.Mouse"); |
| dojox.drawing.manager.Mouse=dojox.drawing.util.oo.declare(function(_1){ |
| this.util=_1.util; |
| this.keys=_1.keys; |
| this.id=_1.id||this.util.uid("mouse"); |
| this.currentNodeId=""; |
| this.registered={}; |
| },{doublClickSpeed:400,_lastx:0,_lasty:0,__reg:0,_downOnCanvas:false,init:function(_2){ |
| this.container=_2; |
| this.setCanvas(); |
| var c; |
| var _3=false; |
| dojo.connect(this.container,"rightclick",this,function(_4){ |
| console.warn("RIGHTCLICK"); |
| }); |
| dojo.connect(document.body,"mousedown",this,function(_5){ |
| }); |
| dojo.connect(this.container,"mousedown",this,function(_6){ |
| this.down(_6); |
| _3=true; |
| c=dojo.connect(document,"mousemove",this,"drag"); |
| }); |
| dojo.connect(document,"mouseup",this,function(_7){ |
| dojo.disconnect(c); |
| _3=false; |
| this.up(_7); |
| }); |
| dojo.connect(document,"mousemove",this,function(_8){ |
| if(!_3){ |
| this.move(_8); |
| } |
| }); |
| dojo.connect(this.keys,"onEsc",this,function(_9){ |
| this._dragged=false; |
| }); |
| },setCanvas:function(){ |
| var _a=dojo.coords(this.container.parentNode); |
| this.origin=dojo.clone(_a); |
| },scrollOffset:function(){ |
| return {top:this.container.parentNode.scrollTop,left:this.container.parentNode.scrollLeft}; |
| },register:function(_b){ |
| var _c=_b.id||"reg_"+(this.__reg++); |
| if(!this.registered[_c]){ |
| this.registered[_c]=_b; |
| } |
| return _c; |
| },unregister:function(_d){ |
| if(!this.registered[_d]){ |
| return; |
| } |
| delete this.registered[_d]; |
| },_broadcastEvent:function(_e,_f){ |
| for(var nm in this.registered){ |
| if(this.registered[nm][_e]){ |
| this.registered[nm][_e](_f); |
| } |
| } |
| },onDown:function(obj){ |
| this._broadcastEvent(this.eventName("down"),obj); |
| },onDrag:function(obj){ |
| var nm=this.eventName("drag"); |
| if(this._selected&&nm=="onDrag"){ |
| nm="onStencilDrag"; |
| } |
| this._broadcastEvent(nm,obj); |
| },onMove:function(obj){ |
| this._broadcastEvent("onMove",obj); |
| },onOver:function(obj){ |
| this._broadcastEvent("onOver",obj); |
| },onOut:function(obj){ |
| this._broadcastEvent("onOut",obj); |
| },onUp:function(obj){ |
| var nm=this.eventName("up"); |
| if(nm=="onStencilUp"){ |
| this._selected=true; |
| }else{ |
| if(this._selected&&nm=="onUp"){ |
| nm="onStencilUp"; |
| this._selected=false; |
| } |
| } |
| this._broadcastEvent(nm,obj); |
| if(dojox.gfx.renderer=="silverlight"){ |
| return; |
| } |
| this._clickTime=new Date().getTime(); |
| if(this._lastClickTime){ |
| if(this._clickTime-this._lastClickTime<this.doublClickSpeed){ |
| var dnm=this.eventName("doubleClick"); |
| console.warn("DOUBLE CLICK",dnm,obj); |
| this._broadcastEvent(dnm,obj); |
| }else{ |
| } |
| } |
| this._lastClickTime=this._clickTime; |
| },zoom:1,setZoom:function(_10){ |
| this.zoom=1/_10; |
| },setEventMode:function(_11){ |
| this.mode=_11?"on"+_11.charAt(0).toUpperCase()+_11.substring(1):""; |
| },eventName:function(_12){ |
| _12=_12.charAt(0).toUpperCase()+_12.substring(1); |
| if(this.mode){ |
| if(this.mode=="onPathEdit"){ |
| return "on"+_12; |
| } |
| if(this.mode=="onUI"){ |
| } |
| return this.mode+_12; |
| }else{ |
| var dt=!this.drawingType||this.drawingType=="surface"||this.drawingType=="canvas"?"":this.drawingType; |
| var t=!dt?"":dt.charAt(0).toUpperCase()+dt.substring(1); |
| return "on"+t+_12; |
| } |
| },up:function(evt){ |
| this.onUp(this.create(evt)); |
| },down:function(evt){ |
| evt.preventDefault(); |
| dojo.stopEvent(evt); |
| this._downOnCanvas=true; |
| var sc=this.scrollOffset(); |
| var dim=this._getXY(evt); |
| this._lastpagex=dim.x; |
| this._lastpagey=dim.y; |
| var o=this.origin; |
| var x=dim.x-o.x; |
| var y=dim.y-o.y; |
| x*=this.zoom; |
| y*=this.zoom; |
| x+=sc.left*this.zoom; |
| y+=sc.top*this.zoom; |
| var _13=x>=0&&y>=0&&x<=o.w&&y<=o.h; |
| o.startx=x; |
| o.starty=y; |
| this._lastx=x; |
| this._lasty=y; |
| this.drawingType=this.util.attr(evt,"drawingType")||""; |
| var id=this._getId(evt); |
| this.onDown({mid:this.id,x:x,y:y,pageX:dim.x,pageY:dim.y,withinCanvas:_13,id:id}); |
| },over:function(obj){ |
| this.onOver(obj); |
| },out:function(obj){ |
| this.onOut(obj); |
| },move:function(evt){ |
| var obj=this.create(evt); |
| if(this.id=="MUI"){ |
| } |
| if(obj.id!=this.currentNodeId){ |
| var _14={}; |
| for(var nm in obj){ |
| _14[nm]=obj[nm]; |
| } |
| _14.id=this.currentNodeId; |
| this.currentNodeId&&this.out(_14); |
| obj.id&&this.over(obj); |
| this.currentNodeId=obj.id; |
| } |
| this.onMove(obj); |
| },drag:function(evt){ |
| this.onDrag(this.create(evt,true)); |
| },create:function(evt,_15){ |
| var sc=this.scrollOffset(); |
| var dim=this._getXY(evt); |
| var _16=dim.x; |
| var _17=dim.y; |
| var x=dim.x-this.origin.x; |
| var y=dim.y-this.origin.y; |
| var o=this.origin; |
| x+=sc.left; |
| y+=sc.top; |
| x*=this.zoom; |
| y*=this.zoom; |
| var _18=x>=0&&y>=0&&x<=o.w&&y<=o.h; |
| var id=_18?this._getId(evt,_15):""; |
| var ret={mid:this.id,x:x,y:y,pageX:dim.x,pageY:dim.y,page:{x:dim.x,y:dim.y},orgX:o.x,orgY:o.y,last:{x:this._lastx,y:this._lasty},start:{x:this.origin.startx,y:this.origin.starty},move:{x:_16-this._lastpagex,y:_17-this._lastpagey},scroll:sc,id:id,withinCanvas:_18}; |
| this._lastx=x; |
| this._lasty=y; |
| this._lastpagex=_16; |
| this._lastpagey=_17; |
| dojo.stopEvent(evt); |
| return ret; |
| },_getId:function(evt,_19){ |
| return this.util.attr(evt,"id",null,_19); |
| },_getXY:function(evt){ |
| return {x:evt.pageX,y:evt.pageY}; |
| }}); |
| } |