76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Base scroller class used to create the Plugin.DDNodeScroll and Plugin.DDWinScroll.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * This class should not be called on it's own, it's designed to be a plugin.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @module dd
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @submodule dd-scroll
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Base scroller class used to create the Plugin.DDNodeScroll and Plugin.DDWinScroll.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * This class should not be called on it's own, it's designed to be a plugin.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @class Scroll
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @extends Base
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @namespace DD
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @constructor
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass var S = function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @attribute parentScroll
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Internal config option to hold the node that we are scrolling. Should not be set by the developer.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Node
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass return false;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @attribute buffer
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description The number of pixels from the edge of the screen to turn on scrolling. Default: 30
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Number
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @attribute scrollDelay
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description The number of milliseconds delay to pass to the auto scroller. Default: 235
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Number
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @attribute host
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description The host we are plugged into.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Object
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @attribute windowScroll
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Turn on window scroll support, default: false
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Boolean
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @attribute vertical
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Allow vertical scrolling, default: true.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Boolean
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @attribute horizontal
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Allow horizontal scrolling, default: true.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Boolean
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property _scrolling
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Tells if we are actively scrolling or not.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Boolean
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property _vpRegionCache
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Cache of the Viewport dims.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Object
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property _dimCache
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Cache of the dragNode dims.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Object
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property _scrollTimer
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Holder for the Timer object returned from Y.later.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type {Y.later}
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _getVPRegion
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Sets the _vpRegionCache property with an Object containing the dims from the viewport.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass initializer: function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //TODO - This doesn't work yet??
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _checkWinScroll
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Check to see if we need to fire the scroll timer. If scroll timer is running this will scroll the window.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @param {Boolean} move Should we move the window. From Y.later
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass var r = this._getVPRegion(),
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _initScroll
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Cancel a previous scroll timer and init a new one.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass _initScroll: function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._scrollTimer = Y.Lang.later(this.get('scrollDelay'), this, this._checkWinScroll, [true], true);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _cancelScroll
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Cancel a currently running scroll timer.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this._scrolling = false;
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method align
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Called from the drag:align event to determine if we need to scroll.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass align: function(e) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method _setDimCache
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Set the cache of the dragNode dims.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method start
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Called from the drag:start event
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass start: function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @method end
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Called from the drag:end event
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Extends the Scroll class to make the window scroll while dragging.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @class DDWindowScroll
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @extends Scroll
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @namespace Plugin
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @constructor
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass WS = function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @attribute windowScroll
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description Turn on window scroll support, default: true
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Boolean
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //Shouldn't have to do this..
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass initializer: function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass this.set('windowScroll', this.get('windowScroll'));
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property NS
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @default winscroll
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @protected
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description The Scroll instance will be placed on the Drag instance under the winscroll namespace.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type {String}
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * Extends the Scroll class to make a parent node scroll while dragging.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @class DDNodeScroll
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @extends Scroll
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @namespace Plugin
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @constructor
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass NS = function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @attribute node
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description The node we want to scroll. Used to set the internal parentScroll attribute.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type Node
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass if (node !== false) {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass Y.error('DDNodeScroll: Invalid Node Given: ' + node);
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass //Shouldn't have to do this..
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass initializer: function() {
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @property NS
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @default nodescroll
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @protected
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @description The NodeScroll instance will be placed on the Drag instance under the nodescroll namespace.
76ca635d61eb3f9fb7c9d788a44fa8b1690aa138Dav Glass * @type {String}
e431833c4e6dc7df48632482b3da8db241451517Dav Glass}, '@VERSION@' ,{skinnable:false, optional:['dd-proxy'], requires:['dd-drag']});