summaryrefslogtreecommitdiff
path: root/lib/dojo/dnd/move.js.uncompressed.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/dojo/dnd/move.js.uncompressed.js')
-rw-r--r--lib/dojo/dnd/move.js.uncompressed.js147
1 files changed, 147 insertions, 0 deletions
diff --git a/lib/dojo/dnd/move.js.uncompressed.js b/lib/dojo/dnd/move.js.uncompressed.js
new file mode 100644
index 000000000..ec958f26b
--- /dev/null
+++ b/lib/dojo/dnd/move.js.uncompressed.js
@@ -0,0 +1,147 @@
+define("dojo/dnd/move", [
+ "../_base/declare",
+ "../dom-geometry", "../dom-style",
+ "./common", "./Mover", "./Moveable"
+], function(declare, domGeom, domStyle, dnd, Mover, Moveable){
+
+// module:
+// dojo/dnd/move
+
+/*=====
+var __constrainedMoveableArgs = declare([Moveable.__MoveableArgs], {
+ // constraints: Function
+ // Calculates a constraint box.
+ // It is called in a context of the moveable object.
+ constraints: function(){},
+
+ // within: Boolean
+ // restrict move within boundaries.
+ within: false
+});
+=====*/
+
+var constrainedMoveable = declare("dojo.dnd.move.constrainedMoveable", Moveable, {
+ // object attributes (for markup)
+ constraints: function(){},
+ within: false,
+
+ constructor: function(node, params){
+ // summary:
+ // an object that makes a node moveable
+ // node: Node
+ // a node (or node's id) to be moved
+ // params: __constrainedMoveableArgs?
+ // an optional object with additional parameters;
+ // the rest is passed to the base class
+ if(!params){ params = {}; }
+ this.constraints = params.constraints;
+ this.within = params.within;
+ },
+ onFirstMove: function(/*Mover*/ mover){
+ // summary:
+ // called during the very first move notification;
+ // can be used to initialize coordinates, can be overwritten.
+ var c = this.constraintBox = this.constraints.call(this, mover);
+ c.r = c.l + c.w;
+ c.b = c.t + c.h;
+ if(this.within){
+ var mb = domGeom.getMarginSize(mover.node);
+ c.r -= mb.w;
+ c.b -= mb.h;
+ }
+ },
+ onMove: function(/*Mover*/ mover, /*Object*/ leftTop){
+ // summary:
+ // called during every move notification;
+ // should actually move the node; can be overwritten.
+ var c = this.constraintBox, s = mover.node.style;
+ this.onMoving(mover, leftTop);
+ leftTop.l = leftTop.l < c.l ? c.l : c.r < leftTop.l ? c.r : leftTop.l;
+ leftTop.t = leftTop.t < c.t ? c.t : c.b < leftTop.t ? c.b : leftTop.t;
+ s.left = leftTop.l + "px";
+ s.top = leftTop.t + "px";
+ this.onMoved(mover, leftTop);
+ }
+});
+
+/*=====
+var __boxConstrainedMoveableArgs = declare([__constrainedMoveableArgs], {
+ // box: Object
+ // a constraint box
+ box: {}
+});
+=====*/
+
+var boxConstrainedMoveable = declare("dojo.dnd.move.boxConstrainedMoveable", constrainedMoveable, {
+ // box:
+ // object attributes (for markup)
+ box: {},
+
+ constructor: function(node, params){
+ // summary:
+ // an object, which makes a node moveable
+ // node: Node
+ // a node (or node's id) to be moved
+ // params: __boxConstrainedMoveableArgs?
+ // an optional object with parameters
+ var box = params && params.box;
+ this.constraints = function(){ return box; };
+ }
+});
+
+/*=====
+var __parentConstrainedMoveableArgs = declare( [__constrainedMoveableArgs], {
+ // area: String
+ // A parent's area to restrict the move.
+ // Can be "margin", "border", "padding", or "content".
+ area: ""
+});
+=====*/
+
+var parentConstrainedMoveable = declare("dojo.dnd.move.parentConstrainedMoveable", constrainedMoveable, {
+ // area:
+ // object attributes (for markup)
+ area: "content",
+
+ constructor: function(node, params){
+ // summary:
+ // an object, which makes a node moveable
+ // node: Node
+ // a node (or node's id) to be moved
+ // params: __parentConstrainedMoveableArgs?
+ // an optional object with parameters
+ var area = params && params.area;
+ this.constraints = function(){
+ var n = this.node.parentNode,
+ s = domStyle.getComputedStyle(n),
+ mb = domGeom.getMarginBox(n, s);
+ if(area == "margin"){
+ return mb; // Object
+ }
+ var t = domGeom.getMarginExtents(n, s);
+ mb.l += t.l, mb.t += t.t, mb.w -= t.w, mb.h -= t.h;
+ if(area == "border"){
+ return mb; // Object
+ }
+ t = domGeom.getBorderExtents(n, s);
+ mb.l += t.l, mb.t += t.t, mb.w -= t.w, mb.h -= t.h;
+ if(area == "padding"){
+ return mb; // Object
+ }
+ t = domGeom.getPadExtents(n, s);
+ mb.l += t.l, mb.t += t.t, mb.w -= t.w, mb.h -= t.h;
+ return mb; // Object
+ };
+ }
+});
+
+
+return {
+ // summary:
+ // TODOC
+ constrainedMoveable: constrainedMoveable,
+ boxConstrainedMoveable: boxConstrainedMoveable,
+ parentConstrainedMoveable: parentConstrainedMoveable
+};
+
+});