]> git.pond.sub.org Git - eow/blobdiff - static/dojo-release-1.1.1/dojox/layout/DragPane.js
add Dojo 1.1.1
[eow] / static / dojo-release-1.1.1 / dojox / layout / DragPane.js
diff --git a/static/dojo-release-1.1.1/dojox/layout/DragPane.js b/static/dojo-release-1.1.1/dojox/layout/DragPane.js
new file mode 100644 (file)
index 0000000..4dec5e4
--- /dev/null
@@ -0,0 +1,65 @@
+if(!dojo._hasResource["dojox.layout.DragPane"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojox.layout.DragPane"] = true;
+dojo.provide("dojox.layout.DragPane");
+
+dojo.require("dijit._Widget");
+
+dojo.declare("dojox.layout.DragPane",
+       dijit._Widget, {
+       //
+       // summary: Makes a pane's content dragable by/within it's surface
+       //
+       // description:
+       //              A small widget which takes a node with overflow:auto and
+       //              allows dragging to position the content. Useful with images,
+       //              or for just adding "something" to a overflow-able div.
+       //
+       // invert: Boolean
+       //              Naturally, the behavior is to invert the axis of the drag.
+       //              Setting invert:false will make the pane drag in the same
+       //              direction as the mouse.
+       invert:true,
+       
+       postCreate: function(){
+
+               this.inherited(arguments);
+               this.connect(this.domNode,"onmousedown","_down");
+               this.connect(this.domNode,"onmouseup","_up");
+       },
+       
+       _down: function(e){
+               // summary: mousedown handler, start the dragging
+               var t = this.domNode;
+               dojo.style(t,"cursor","move");
+               this._x = e.pageX;
+               this._y = e.pageY;
+               if ((this._x < t.offsetLeft + t.clientWidth) &&
+                       (this._y < t.offsetTop + t.clientHeight)) {
+                       dojo.setSelectable(t,false);
+                       this._mover = dojo.connect(t,"onmousemove",this,"_move");               
+               }
+       },
+       
+       _up: function(e){
+               // summary: mouseup handler, stop the dragging
+               
+               dojo.setSelectable(this.domNode,true);
+               dojo.style(this.domNode,"cursor","pointer");
+               dojo.disconnect(this._mover);
+       },
+       
+       _move: function(e){
+               // summary: mousemove listener, offset the scroll amount by the delta
+               //              since our last call.
+               
+               var mod = this.invert ? 1 : -1;
+               this.domNode.scrollTop += (this._y - e.pageY) * mod;
+               this.domNode.scrollLeft += (this._x - e.pageX) * mod;
+               this._x = e.pageX;
+               this._y = e.pageY;
+               
+       }
+       
+});
+
+}