proxy.js revision 3603f91160ffcd6fe9834ae62761af309f251153
d2a5a45ff58ab15a8ee0339edcd03f0243373d59Dav Glass * The Drag & Drop Utility allows you to create a draggable interface efficiently, buffering you from browser-level abnormalities and enabling you to focus on the interesting logic surrounding your particular implementation. This component enables you to create a variety of standard draggable objects with just a few lines of code and then, using its extensive API, add your own specific implementation logic.
d2a5a45ff58ab15a8ee0339edcd03f0243373d59Dav Glass * @module dd
d2a5a45ff58ab15a8ee0339edcd03f0243373d59Dav Glass * @submodule dd-proxy
d2a5a45ff58ab15a8ee0339edcd03f0243373d59Dav Glass * This plugin for dd-drag is for creating a proxy drag node, instead of dragging the original node.
d2a5a45ff58ab15a8ee0339edcd03f0243373d59Dav Glass * @class DDProxy
d2a5a45ff58ab15a8ee0339edcd03f0243373d59Dav Glass * @extends Base
d2a5a45ff58ab15a8ee0339edcd03f0243373d59Dav Glass * @constructor
d2a5a45ff58ab15a8ee0339edcd03f0243373d59Dav Glass * @namespace plugin
d2a5a45ff58ab15a8ee0339edcd03f0243373d59Dav Glass Proxy.superclass.constructor.apply(this, arguments);
d2a5a45ff58ab15a8ee0339edcd03f0243373d59Dav Glass * @property proxy
d2a5a45ff58ab15a8ee0339edcd03f0243373d59Dav Glass * @description The Proxy instance will be placed on the Drag instance under the proxy namespace.
d2a5a45ff58ab15a8ee0339edcd03f0243373d59Dav Glass * @type {String}
d2a5a45ff58ab15a8ee0339edcd03f0243373d59Dav Glass * @attribute moveOnEnd
d2a5a45ff58ab15a8ee0339edcd03f0243373d59Dav Glass * @description Move the original node at the end of the drag. Default: true
d2a5a45ff58ab15a8ee0339edcd03f0243373d59Dav Glass * @type Boolean
d2a5a45ff58ab15a8ee0339edcd03f0243373d59Dav Glass * @attribute resizeFrame
162527ab925c04aa8d6bbf78d0484a133a8076f1Dav Glass * @description Make the Proxy node assume the size of the original node. Default: true
162527ab925c04aa8d6bbf78d0484a133a8076f1Dav Glass * @type Boolean
162527ab925c04aa8d6bbf78d0484a133a8076f1Dav Glass * @attribute positionProxy
162527ab925c04aa8d6bbf78d0484a133a8076f1Dav Glass * @description Make the Proxy node appear in the same place as the original node. Default: true
162527ab925c04aa8d6bbf78d0484a133a8076f1Dav Glass * @type Boolean
162527ab925c04aa8d6bbf78d0484a133a8076f1Dav Glass * @attribute borderStyle
162527ab925c04aa8d6bbf78d0484a133a8076f1Dav Glass * @description The default border style for the border of the proxy. Default: 1px solid #808080
162527ab925c04aa8d6bbf78d0484a133a8076f1Dav Glass * @type Boolean
d2a5a45ff58ab15a8ee0339edcd03f0243373d59Dav Glass * @attribute owner
d2a5a45ff58ab15a8ee0339edcd03f0243373d59Dav Glass * @description The object that this was plugged into.
d2a5a45ff58ab15a8ee0339edcd03f0243373d59Dav Glass * @type Object
d2a5a45ff58ab15a8ee0339edcd03f0243373d59Dav Glass * @property _proxyHandles
0523d0a8daaa474f0214203f8cbb0bc4a88e2964Dav Glass * @description Holds the event handles for setting the proxy
5432371fbb6d790a76159481f0dd16e806812153Dav Glass * @method _setProxy
5432371fbb6d790a76159481f0dd16e806812153Dav Glass * @description Handler for the proxy config attribute
aa2ac226ad6e45232f8416eecc99d2165ce74d03Dav Glass _setProxy: function() {
aa2ac226ad6e45232f8416eecc99d2165ce74d03Dav Glass Y.on('event:ready', Y.bind(this._setProxy, this));
162527ab925c04aa8d6bbf78d0484a133a8076f1Dav Glass var i, h, h1, owner = this.get(OWNER), dnode = owner.get(DRAG_NODE);
162527ab925c04aa8d6bbf78d0484a133a8076f1Dav Glass for (i in this._proxyHandles) {
f7aa62ea2e8cf43fbb9d83db5060db540ff1893fDav Glass initializer: function() {
f7aa62ea2e8cf43fbb9d83db5060db540ff1893fDav Glass destructor: function() {
f7aa62ea2e8cf43fbb9d83db5060db540ff1893fDav Glass for (var i in this._proxyHandles) {
96c1e6aab172b57cf3566abee931c26676990044Dav Glass //Add a couple of methods to the DDM
d2a5a45ff58ab15a8ee0339edcd03f0243373d59Dav Glass * @method _createFrame
d2a5a45ff58ab15a8ee0339edcd03f0243373d59Dav Glass * @description Create the proxy element if it doesn't already exist and set the DD.DDM._proxy value
d2a5a45ff58ab15a8ee0339edcd03f0243373d59Dav Glass * @method _setFrame
d2a5a45ff58ab15a8ee0339edcd03f0243373d59Dav Glass * @description If resizeProxy is set to true (default) it will resize the proxy element to match the size of the Drag Element.
d2a5a45ff58ab15a8ee0339edcd03f0243373d59Dav Glass * If positionProxy is set to true (default) it will position the proxy element in the same location as the Drag Element.
d2a5a45ff58ab15a8ee0339edcd03f0243373d59Dav Glass var n = drag.get(NODE), d = drag.get(DRAG_NODE), ah, cur = 'auto';
d2a5a45ff58ab15a8ee0339edcd03f0243373d59Dav Glass //Create the frame when DOM is ready
d2a5a45ff58ab15a8ee0339edcd03f0243373d59Dav Glass Y.on('event:ready', Y.bind(Y.DD.DDM._createFrame, Y.DD.DDM));