summaryrefslogtreecommitdiff
path: root/js/dojo/dojox/drawing/tools/Arrow.js
diff options
context:
space:
mode:
Diffstat (limited to 'js/dojo/dojox/drawing/tools/Arrow.js')
-rw-r--r--js/dojo/dojox/drawing/tools/Arrow.js87
1 files changed, 87 insertions, 0 deletions
diff --git a/js/dojo/dojox/drawing/tools/Arrow.js b/js/dojo/dojox/drawing/tools/Arrow.js
new file mode 100644
index 0000000..d87396d
--- /dev/null
+++ b/js/dojo/dojox/drawing/tools/Arrow.js
@@ -0,0 +1,87 @@
+//>>built
+// wrapped by build app
+define("dojox/drawing/tools/Arrow", ["dijit","dojo","dojox"], function(dijit,dojo,dojox){
+dojo.provide("dojox.drawing.tools.Arrow");
+
+dojox.drawing.tools.Arrow = dojox.drawing.util.oo.declare(
+ // summary:
+ // Extends stencil.Line and adds an arrow head
+ // to the end and or start.
+ //
+ dojox.drawing.tools.Line,
+ function(options){
+ // summary: constructor
+ if(this.arrowStart){
+ this.begArrow = new dojox.drawing.annotations.Arrow({stencil:this, idx1:0, idx2:1});
+ }
+ if(this.arrowEnd){
+ this.endArrow = new dojox.drawing.annotations.Arrow({stencil:this, idx1:1, idx2:0});
+ }
+ if(this.points.length){
+ // This is protecting against cases when there are no points
+ // not sure how that would ever happen
+ // Render & label here instead of in base because of Arrow annotation
+ this.render();
+ options.label && this.setLabel(options.label);
+ }
+ },
+ {
+ draws:true,
+ type:"dojox.drawing.tools.Arrow",
+ baseRender:false,
+
+ // arrowStart: Boolean
+ // Whether or not to place an arrow on start.
+ arrowStart:false,
+ //
+ // arrowEnd: Boolean
+ // Whether or not to place an arrow on end.
+ arrowEnd:true,
+
+ labelPosition: function(){
+ // summary:
+ // The custom position used for the label
+ //
+ var d = this.data;
+ var pt = dojox.drawing.util.positioning.label({x:d.x1,y:d.y1},{x:d.x2,y:d.y2});
+ return {
+ x:pt.x,
+ y:pt.y
+ }
+ },
+
+ onUp: function(/*EventObject*/obj){
+ // summary: See stencil._Base.onUp
+ //
+ if(this.created || !this.shape){ return; }
+
+ // if too small, need to reset
+ var p = this.points;
+ var len = this.util.distance(p[0].x,p[0].y,p[1].x,p[1].y);
+ if(len<this.minimumSize){
+ this.remove(this.shape, this.hit);
+ return;
+ }
+
+ var pt = this.util.snapAngle(obj, this.angleSnap/180);
+ this.setPoints([
+ {x:p[0].x, y:p[0].y},
+ {x:pt.x, y:pt.y}
+ ]);
+
+ this.renderedOnce = true;
+ this.onRender(this);
+ }
+ }
+);
+
+dojox.drawing.tools.Arrow.setup = {
+ // summary: See stencil._Base ToolsSetup
+ //
+ name:"dojox.drawing.tools.Arrow",
+ tooltip:"Arrow Tool",
+ iconClass:"iconArrow"
+};
+
+dojox.drawing.register(dojox.drawing.tools.Arrow.setup, "tool");
+});