12345678 |
- /*
- 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.Drawing"]){dojo._hasResource["dojox.drawing.Drawing"]=true;dojo.provide("dojox.drawing.Drawing");(function(){var _1=false;dojo.declare("dojox.drawing.Drawing",[],{ready:false,mode:"",width:0,height:0,constructor:function(_2,_3){var _4=dojo.attr(_3,"defaults");if(_4){dojox.drawing.defaults=dojo.getObject(_4);}this.defaults=dojox.drawing.defaults;this.id=_3.id;dojox.drawing.register(this,"drawing");this.mode=(_2.mode||dojo.attr(_3,"mode")||"").toLowerCase();var _5=dojo.contentBox(_3);this.width=_5.w;this.height=_5.h;this.util=dojox.drawing.util.common;this.util.register(this);this.keys=dojox.drawing.manager.keys;this.mouse=new dojox.drawing.manager.Mouse({util:this.util,keys:this.keys,id:this.mode=="ui"?"MUI":"mse"});this.mouse.setEventMode(this.mode);this.tools={};this.stencilTypes={};this.stencilTypeMap={};this.srcRefNode=_3;this.domNode=_3;var _6=dojo.attr(_3,"plugins");if(_6){this.plugins=eval(_6);}else{this.plugins=[];}this.widgetId=this.id;dojo.attr(this.domNode,"widgetId",this.widgetId);if(dijit&&dijit.registry){dijit.registry.add(this);}else{dijit.registry={objs:{},add:function(_7){this.objs[_7.id]=_7;}};dijit.byId=function(id){return dijit.registry.objs[id];};dijit.registry.add(this);}var _8=dojox.drawing.getRegistered("stencil");for(var nm in _8){this.registerTool(_8[nm].name);}var _9=dojox.drawing.getRegistered("tool");for(var nm in _9){this.registerTool(_9[nm].name);}var _a=dojox.drawing.getRegistered("plugin");for(var nm in _a){this.registerTool(_a[nm].name);}this._createCanvas();},_createCanvas:function(){this.canvas=new dojox.drawing.manager.Canvas({srcRefNode:this.domNode,util:this.util,mouse:this.mouse,callback:dojo.hitch(this,"onSurfaceReady")});this.initPlugins();},resize:function(_b){dojo.style(this.domNode,{width:_b.w+"px",height:_b.h+"px"});if(!this.canvas){this._createCanvas();}else{this.canvas.resize(_b.w,_b.h);}},startup:function(){},getShapeProps:function(_c,_d){return dojo.mixin({container:this.mode=="ui"||_d=="ui"?this.canvas.overlay.createGroup():this.canvas.surface.createGroup(),util:this.util,keys:this.keys,mouse:this.mouse,drawing:this,drawingType:this.mode=="ui"||_d=="ui"?"ui":"stencil",style:this.defaults.copy()},_c||{});},addPlugin:function(_e){this.plugins.push(_e);if(this.canvas.surfaceReady){this.initPlugins();}},initPlugins:function(){if(!this.canvas||!this.canvas.surfaceReady){var c=dojo.connect(this,"onSurfaceReady",this,function(){dojo.disconnect(c);this.initPlugins();});return;}dojo.forEach(this.plugins,function(p,i){var _f=dojo.mixin({util:this.util,keys:this.keys,mouse:this.mouse,drawing:this,stencils:this.stencils,anchors:this.anchors,canvas:this.canvas},p.options||{});this.registerTool(p.name,dojo.getObject(p.name));try{this.plugins[i]=new this.tools[p.name](_f);}catch(e){console.error("Failed to initilaize plugin:\t"+p.name+". Did you require it?");}},this);this.plugins=[];_1=true;this.mouse.setCanvas();},onSurfaceReady:function(){this.ready=true;this.mouse.init(this.canvas.domNode);this.undo=new dojox.drawing.manager.Undo({keys:this.keys});this.anchors=new dojox.drawing.manager.Anchors({drawing:this,mouse:this.mouse,undo:this.undo,util:this.util});if(this.mode=="ui"){this.uiStencils=new dojox.drawing.manager.StencilUI({canvas:this.canvas,surface:this.canvas.surface,mouse:this.mouse,keys:this.keys});}else{this.stencils=new dojox.drawing.manager.Stencil({canvas:this.canvas,surface:this.canvas.surface,mouse:this.mouse,undo:this.undo,keys:this.keys,anchors:this.anchors});this.uiStencils=new dojox.drawing.manager.StencilUI({canvas:this.canvas,surface:this.canvas.surface,mouse:this.mouse,keys:this.keys});}if(dojox.gfx.renderer=="silverlight"){try{new dojox.drawing.plugins.drawing.Silverlight({util:this.util,mouse:this.mouse,stencils:this.stencils,anchors:this.anchors,canvas:this.canvas});}catch(e){throw new Error("Attempted to install the Silverlight plugin, but it was not found.");}}dojo.forEach(this.plugins,function(p){p.onSurfaceReady&&p.onSurfaceReady();});},addUI:function(_10,_11){if(!this.ready){var c=dojo.connect(this,"onSurfaceReady",this,function(){dojo.disconnect(c);this.addUI(_10,_11);});return false;}if(_11&&!_11.data&&!_11.points){_11={data:_11};}if(!this.stencilTypes[_10]){if(_10!="tooltip"){console.warn("Not registered:",_10);}return null;}var s=this.uiStencils.register(new this.stencilTypes[_10](this.getShapeProps(_11,"ui")));return s;},addStencil:function(_12,_13){if(!this.ready){var c=dojo.connect(this,"onSurfaceReady",this,function(){dojo.disconnect(c);this.addStencil(_12,_13);});return false;}if(_13&&!_13.data&&!_13.points){_13={data:_13};}var s=this.stencils.register(new this.stencilTypes[_12](this.getShapeProps(_13)));this.currentStencil&&this.currentStencil.moveToFront();return s;},removeStencil:function(_14){this.stencils.unregister(_14);_14.destroy();},removeAll:function(){this.stencils.removeAll();},selectAll:function(){this.stencils.selectAll();},toSelected:function(_15){this.stencils.toSelected.apply(this.stencils,arguments);},exporter:function(){return this.stencils.exporter();},importer:function(_16){dojo.forEach(_16,function(m){this.addStencil(m.type,m);},this);},changeDefaults:function(_17){for(var nm in _17){for(var n in _17[nm]){this.defaults[nm][n]=_17[nm][n];}}this.unSetTool();this.setTool(this.currentType);},onRenderStencil:function(_18){this.stencils.register(_18);this.unSetTool();this.setTool(this.currentType);},onDeleteStencil:function(_19){this.stencils.unregister(_19);},registerTool:function(_1a){if(this.tools[_1a]){return;}var _1b=dojo.getObject(_1a);this.tools[_1a]=_1b;var _1c=this.util.abbr(_1a);this.stencilTypes[_1c]=_1b;this.stencilTypeMap[_1c]=_1a;},getConstructor:function(_1d){return this.stencilTypes[_1d];},setTool:function(_1e){if(this.mode=="ui"){return;}if(!this.canvas||!this.canvas.surface){var c=dojo.connect(this,"onSurfaceReady",this,function(){dojo.disconnect(c);this.setTool(_1e);});return;}if(this.currentStencil){this.unSetTool();}this.currentType=this.tools[_1e]?_1e:this.stencilTypeMap[_1e];try{this.currentStencil=new this.tools[this.currentType]({container:this.canvas.surface.createGroup(),util:this.util,mouse:this.mouse,keys:this.keys});this.currentStencil.connect(this.currentStencil,"onRender",this,"onRenderStencil");this.currentStencil.connect(this.currentStencil,"destroy",this,"onDeleteStencil");}catch(e){console.error("dojox.drawing.setTool Error:",e);console.error(this.currentType+" is not a constructor: ",this.tools[this.currentType]);}},unSetTool:function(){if(!this.currentStencil.created){this.currentStencil.destroy();}}});})();}
|