--- /dev/null
+<html><head><title>../roojs1/Roo/dd/DragDropMgr.js</title><link rel="stylesheet" type="text/css" href="../../../css/highlight-js.css"/></head><body class="highlightpage"><code class="jsdoc-pretty"><span class="jsdoc-comment">/*
+ * Based on:
+ * Ext JS Library 1.1.1
+ * Copyright(c) 2006-2007, Ext JS, LLC.
+ *
+ * Originally Released Under LGPL - original licence link has changed is not relivant.
+ *
+ * Fork - LGPL
+ * <script type="text/javascript">
+ */
+
+
+/**
+ * The drag and drop utility provides a framework for building drag and drop
+ * applications. In addition to enabling drag and drop for specific elements,
+ * the drag and drop elements are tracked by the manager class, and the
+ * interactions between the various elements are tracked during the drag and
+ * the implementing code is notified about these important moments.
+ */
+
+// Only load the library once. Rewriting the manager class would orphan
+// existing drag and drop instances.
+</span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">Roo.dd.DragDropMgr</span><span class="jsdoc-syntax">) {
+
+</span><span class="jsdoc-comment">/**
+ * @class Roo.dd.DragDropMgr
+ * DragDropMgr is a singleton that tracks the element interaction for
+ * all DragDrop items in the window. Generally, you will not call
+ * this class directly, but it does have helper methods that could
+ * be useful in your DragDrop implementations.
+ * @singleton
+ */
+</span><span class="jsdoc-var">Roo.dd.DragDropMgr </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
+
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">Event </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.EventManager</span><span class="jsdoc-syntax">;
+
+ </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">{
+
+ </span><span class="jsdoc-comment">/**
+ * Two dimensional Array of registered DragDrop objects. The first
+ * dimension is the DragDrop item group, the second the DragDrop
+ * object.
+ * @property ids
+ * @type {string: string}
+ * @private
+ * @static
+ */
+ </span><span class="jsdoc-var">ids</span><span class="jsdoc-syntax">: {},
+
+ </span><span class="jsdoc-comment">/**
+ * Array of element ids defined as drag handles. Used to determine
+ * if the element that generated the mousedown event is actually the
+ * handle and not the html element itself.
+ * @property handleIds
+ * @type {string: string}
+ * @private
+ * @static
+ */
+ </span><span class="jsdoc-var">handleIds</span><span class="jsdoc-syntax">: {},
+
+ </span><span class="jsdoc-comment">/**
+ * the DragDrop object that is currently being dragged
+ * @property dragCurrent
+ * @type DragDrop
+ * @private
+ * @static
+ **/
+ </span><span class="jsdoc-var">dragCurrent</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">,
+
+ </span><span class="jsdoc-comment">/**
+ * the DragDrop object(s) that are being hovered over
+ * @property dragOvers
+ * @type Array
+ * @private
+ * @static
+ */
+ </span><span class="jsdoc-var">dragOvers</span><span class="jsdoc-syntax">: {},
+
+ </span><span class="jsdoc-comment">/**
+ * the X distance between the cursor and the object being dragged
+ * @property deltaX
+ * @type int
+ * @private
+ * @static
+ */
+ </span><span class="jsdoc-var">deltaX</span><span class="jsdoc-syntax">: 0,
+
+ </span><span class="jsdoc-comment">/**
+ * the Y distance between the cursor and the object being dragged
+ * @property deltaY
+ * @type int
+ * @private
+ * @static
+ */
+ </span><span class="jsdoc-var">deltaY</span><span class="jsdoc-syntax">: 0,
+
+ </span><span class="jsdoc-comment">/**
+ * Flag to determine if we should prevent the default behavior of the
+ * events we define. By default this is true, but this can be set to
+ * false if you need the default behavior (not recommended)
+ * @property preventDefault
+ * @type boolean
+ * @static
+ */
+ </span><span class="jsdoc-var">preventDefault</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
+
+ </span><span class="jsdoc-comment">/**
+ * Flag to determine if we should stop the propagation of the events
+ * we generate. This is true by default but you may want to set it to
+ * false if the html element contains other features that require the
+ * mouse click.
+ * @property stopPropagation
+ * @type boolean
+ * @static
+ */
+ </span><span class="jsdoc-var">stopPropagation</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
+
+ </span><span class="jsdoc-comment">/**
+ * Internal flag that is set to true when drag and drop has been
+ * intialized
+ * @property initialized
+ * @private
+ * @static
+ */
+ </span><span class="jsdoc-var">initalized</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
+
+ </span><span class="jsdoc-comment">/**
+ * All drag and drop can be disabled.
+ * @property locked
+ * @private
+ * @static
+ */
+ </span><span class="jsdoc-var">locked</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
+
+ </span><span class="jsdoc-comment">/**
+ * Called the first time an element is registered.
+ * @method init
+ * @private
+ * @static
+ */
+ </span><span class="jsdoc-var">init</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
+ </span><span class="jsdoc-var">this.initialized </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * In point mode, drag and drop interaction is defined by the
+ * location of the cursor during the drag/drop
+ * @property POINT
+ * @type int
+ * @static
+ */
+ </span><span class="jsdoc-var">POINT</span><span class="jsdoc-syntax">: 0,
+
+ </span><span class="jsdoc-comment">/**
+ * In intersect mode, drag and drop interactio nis defined by the
+ * overlap of two or more drag and drop objects.
+ * @property INTERSECT
+ * @type int
+ * @static
+ */
+ </span><span class="jsdoc-var">INTERSECT</span><span class="jsdoc-syntax">: 1,
+
+ </span><span class="jsdoc-comment">/**
+ * The current drag and drop mode. Default: POINT
+ * @property mode
+ * @type int
+ * @static
+ */
+ </span><span class="jsdoc-var">mode</span><span class="jsdoc-syntax">: 0,
+
+ </span><span class="jsdoc-comment">/**
+ * Runs method on all drag and drop objects
+ * @method _execOnAll
+ * @private
+ * @static
+ */
+ </span><span class="jsdoc-var">_execOnAll</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sMethod</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">args</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">this.ids</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">j </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">this.ids</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]) {
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">oDD </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.ids</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">][</span><span class="jsdoc-var">j</span><span class="jsdoc-syntax">];
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(! </span><span class="jsdoc-var">this.isTypeOfDD</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">oDD</span><span class="jsdoc-syntax">)) {
+ </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
+ }
+ </span><span class="jsdoc-var">oDD</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">sMethod</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.apply</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">oDD</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">args</span><span class="jsdoc-syntax">);
+ }
+ }
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Drag and drop initialization. Sets up the global event handlers
+ * @method _onLoad
+ * @private
+ * @static
+ */
+ </span><span class="jsdoc-var">_onLoad</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
+
+ </span><span class="jsdoc-var">this.init</span><span class="jsdoc-syntax">();
+
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">Roo.isTouch</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">Event.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">document</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">"mouseup"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.handleMouseUp</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-var">Event.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">document</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">"mousemove"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.handleMouseMove</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
+ }
+ </span><span class="jsdoc-var">Event.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">document</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">"touchend"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.handleMouseUp</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-var">Event.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">document</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">"touchmove"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.handleMouseMove</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
+
+ </span><span class="jsdoc-var">Event.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">window</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">"unload"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this._onUnload</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-var">Event.on</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">window</span><span class="jsdoc-syntax">, </span><span class="jsdoc-string">"resize"</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this._onResize</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-comment">// Event.on(window, "mouseout", this._test);
+
+ </span><span class="jsdoc-syntax">},
+
+ </span><span class="jsdoc-comment">/**
+ * Reset constraints on all drag and drop objs
+ * @method _onResize
+ * @private
+ * @static
+ */
+ </span><span class="jsdoc-var">_onResize</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">this._execOnAll</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"resetConstraints"</span><span class="jsdoc-syntax">, []);
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Lock all drag and drop functionality
+ * @method lock
+ * @static
+ */
+ </span><span class="jsdoc-var">lock</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() { </span><span class="jsdoc-var">this.locked </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">; },
+
+ </span><span class="jsdoc-comment">/**
+ * Unlock all drag and drop functionality
+ * @method unlock
+ * @static
+ */
+ </span><span class="jsdoc-var">unlock</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() { </span><span class="jsdoc-var">this.locked </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">; },
+
+ </span><span class="jsdoc-comment">/**
+ * Is drag and drop locked?
+ * @method isLocked
+ * @return {boolean} True if drag and drop is locked, false otherwise.
+ * @static
+ */
+ </span><span class="jsdoc-var">isLocked</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() { </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.locked</span><span class="jsdoc-syntax">; },
+
+ </span><span class="jsdoc-comment">/**
+ * Location cache that is set for all drag drop objects when a drag is
+ * initiated, cleared when the drag is finished.
+ * @property locationCache
+ * @private
+ * @static
+ */
+ </span><span class="jsdoc-var">locationCache</span><span class="jsdoc-syntax">: {},
+
+ </span><span class="jsdoc-comment">/**
+ * Set useCache to false if you want to force object the lookup of each
+ * drag and drop linked element constantly during a drag.
+ * @property useCache
+ * @type boolean
+ * @static
+ */
+ </span><span class="jsdoc-var">useCache</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">,
+
+ </span><span class="jsdoc-comment">/**
+ * The number of pixels that the mouse needs to move after the
+ * mousedown before the drag is initiated. Default=3;
+ * @property clickPixelThresh
+ * @type int
+ * @static
+ */
+ </span><span class="jsdoc-var">clickPixelThresh</span><span class="jsdoc-syntax">: 3,
+
+ </span><span class="jsdoc-comment">/**
+ * The number of milliseconds after the mousedown event to initiate the
+ * drag if we don't get a mouseup event. Default=1000
+ * @property clickTimeThresh
+ * @type int
+ * @static
+ */
+ </span><span class="jsdoc-var">clickTimeThresh</span><span class="jsdoc-syntax">: 350,
+
+ </span><span class="jsdoc-comment">/**
+ * Flag that indicates that either the drag pixel threshold or the
+ * mousdown time threshold has been met
+ * @property dragThreshMet
+ * @type boolean
+ * @private
+ * @static
+ */
+ </span><span class="jsdoc-var">dragThreshMet</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">,
+
+ </span><span class="jsdoc-comment">/**
+ * Timeout used for the click time threshold
+ * @property clickTimeout
+ * @type Object
+ * @private
+ * @static
+ */
+ </span><span class="jsdoc-var">clickTimeout</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">,
+
+ </span><span class="jsdoc-comment">/**
+ * The X position of the mousedown event stored for later use when a
+ * drag threshold is met.
+ * @property startX
+ * @type int
+ * @private
+ * @static
+ */
+ </span><span class="jsdoc-var">startX</span><span class="jsdoc-syntax">: 0,
+
+ </span><span class="jsdoc-comment">/**
+ * The Y position of the mousedown event stored for later use when a
+ * drag threshold is met.
+ * @property startY
+ * @type int
+ * @private
+ * @static
+ */
+ </span><span class="jsdoc-var">startY</span><span class="jsdoc-syntax">: 0,
+
+ </span><span class="jsdoc-comment">/**
+ * Each DragDrop instance must be registered with the DragDropMgr.
+ * This is executed in DragDrop.init()
+ * @method regDragDrop
+ * @param {DragDrop} oDD the DragDrop object to register
+ * @param {String} sGroup the name of the group this element belongs to
+ * @static
+ */
+ </span><span class="jsdoc-var">regDragDrop</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">oDD</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">sGroup</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.initialized</span><span class="jsdoc-syntax">) { </span><span class="jsdoc-var">this.init</span><span class="jsdoc-syntax">(); }
+
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.ids</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">sGroup</span><span class="jsdoc-syntax">]) {
+ </span><span class="jsdoc-var">this.ids</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">sGroup</span><span class="jsdoc-syntax">] = {};
+ }
+ </span><span class="jsdoc-var">this.ids</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">sGroup</span><span class="jsdoc-syntax">][</span><span class="jsdoc-var">oDD.id</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">oDD</span><span class="jsdoc-syntax">;
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Removes the supplied dd instance from the supplied group. Executed
+ * by DragDrop.removeFromGroup, so don't call this function directly.
+ * @method removeDDFromGroup
+ * @private
+ * @static
+ */
+ </span><span class="jsdoc-var">removeDDFromGroup</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">oDD</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">sGroup</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.ids</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">sGroup</span><span class="jsdoc-syntax">]) {
+ </span><span class="jsdoc-var">this.ids</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">sGroup</span><span class="jsdoc-syntax">] = {};
+ }
+
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">obj </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.ids</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">sGroup</span><span class="jsdoc-syntax">];
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">obj </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">oDD.id</span><span class="jsdoc-syntax">]) {
+ </span><span class="jsdoc-keyword">delete </span><span class="jsdoc-var">obj</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">oDD.id</span><span class="jsdoc-syntax">];
+ }
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Unregisters a drag and drop item. This is executed in
+ * DragDrop.unreg, use that method instead of calling this directly.
+ * @method _remove
+ * @private
+ * @static
+ */
+ </span><span class="jsdoc-var">_remove</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">oDD</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">g </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">oDD.groups</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">g </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">this.ids</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">g</span><span class="jsdoc-syntax">][</span><span class="jsdoc-var">oDD.id</span><span class="jsdoc-syntax">]) {
+ </span><span class="jsdoc-keyword">delete </span><span class="jsdoc-var">this.ids</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">g</span><span class="jsdoc-syntax">][</span><span class="jsdoc-var">oDD.id</span><span class="jsdoc-syntax">];
+ }
+ }
+ </span><span class="jsdoc-keyword">delete </span><span class="jsdoc-var">this.handleIds</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">oDD.id</span><span class="jsdoc-syntax">];
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Each DragDrop handle element must be registered. This is done
+ * automatically when executing DragDrop.setHandleElId()
+ * @method regHandle
+ * @param {String} sDDId the DragDrop id this element is a handle for
+ * @param {String} sHandleId the id of the element that is the drag
+ * handle
+ * @static
+ */
+ </span><span class="jsdoc-var">regHandle</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sDDId</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">sHandleId</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.handleIds</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">sDDId</span><span class="jsdoc-syntax">]) {
+ </span><span class="jsdoc-var">this.handleIds</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">sDDId</span><span class="jsdoc-syntax">] = {};
+ }
+ </span><span class="jsdoc-var">this.handleIds</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">sDDId</span><span class="jsdoc-syntax">][</span><span class="jsdoc-var">sHandleId</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">sHandleId</span><span class="jsdoc-syntax">;
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Utility function to determine if a given element has been
+ * registered as a drag drop item.
+ * @method isDragDrop
+ * @param {String} id the element id to check
+ * @return {boolean} true if this element is a DragDrop item,
+ * false otherwise
+ * @static
+ */
+ </span><span class="jsdoc-var">isDragDrop</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">( </span><span class="jsdoc-var">this.getDDById</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">) ) ? </span><span class="jsdoc-keyword">true </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Returns the drag and drop instances that are in all groups the
+ * passed in instance belongs to.
+ * @method getRelated
+ * @param {DragDrop} p_oDD the obj to get related data for
+ * @param {boolean} bTargetsOnly if true, only return targetable objs
+ * @return {DragDrop[]} the related instances
+ * @static
+ */
+ </span><span class="jsdoc-var">getRelated</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">p_oDD</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">bTargetsOnly</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">oDDs </span><span class="jsdoc-syntax">= [];
+ </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">p_oDD.groups</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">j </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">this.ids</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]) {
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">dd </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.ids</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">][</span><span class="jsdoc-var">j</span><span class="jsdoc-syntax">];
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(! </span><span class="jsdoc-var">this.isTypeOfDD</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">dd</span><span class="jsdoc-syntax">)) {
+ </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
+ }
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">bTargetsOnly </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">dd.isTarget</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">oDDs</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">oDDs.length</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">dd</span><span class="jsdoc-syntax">;
+ }
+ }
+ }
+
+ </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">oDDs</span><span class="jsdoc-syntax">;
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Returns true if the specified dd target is a legal target for
+ * the specifice drag obj
+ * @method isLegalTarget
+ * @param {DragDrop} the drag obj
+ * @param {DragDrop} the target
+ * @return {boolean} true if the target is a legal target for the
+ * dd obj
+ * @static
+ */
+ </span><span class="jsdoc-var">isLegalTarget</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">oDD</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">oTargetDD</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">targets </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getRelated</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">oDD</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">=0, </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">=</span><span class="jsdoc-var">targets.length</span><span class="jsdoc-syntax">;</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax"><</span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">;++</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">targets</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.id </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">oTargetDD.id</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
+ }
+ }
+
+ </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * My goal is to be able to transparently determine if an object is
+ * typeof DragDrop, and the exact subclass of DragDrop. typeof
+ * returns "object", oDD.constructor.toString() always returns
+ * "DragDrop" and not the name of the subclass. So for now it just
+ * evaluates a well-known variable in DragDrop.
+ * @method isTypeOfDD
+ * @param {Object} the object to evaluate
+ * @return {boolean} true if typeof oDD = DragDrop
+ * @static
+ */
+ </span><span class="jsdoc-var">isTypeOfDD</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">oDD</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">oDD </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">oDD.__ygDragDrop</span><span class="jsdoc-syntax">);
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Utility function to determine if a given element has been
+ * registered as a drag drop handle for the given Drag Drop object.
+ * @method isHandle
+ * @param {String} id the element id to check
+ * @return {boolean} true if this element is a DragDrop handle, false
+ * otherwise
+ * @static
+ */
+ </span><span class="jsdoc-var">isHandle</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">sDDId</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">sHandleId</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">( </span><span class="jsdoc-var">this.handleIds</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">sDDId</span><span class="jsdoc-syntax">] &&
+ </span><span class="jsdoc-var">this.handleIds</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">sDDId</span><span class="jsdoc-syntax">][</span><span class="jsdoc-var">sHandleId</span><span class="jsdoc-syntax">] );
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Returns the DragDrop instance for a given id
+ * @method getDDById
+ * @param {String} id the id of the DragDrop object
+ * @return {DragDrop} the drag drop object, null if it is not found
+ * @static
+ */
+ </span><span class="jsdoc-var">getDDById</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">this.ids</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.ids</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">][</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">]) {
+ </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.ids</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">][</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">];
+ }
+ }
+ </span><span class="jsdoc-keyword">return null</span><span class="jsdoc-syntax">;
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Fired after a registered DragDrop object gets the mousedown event.
+ * Sets up the events required to track the object being dragged
+ * @method handleMouseDown
+ * @param {Event} e the event
+ * @param oDD the DragDrop object being dragged
+ * @private
+ * @static
+ */
+ </span><span class="jsdoc-var">handleMouseDown</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">oDD</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.QuickTips</span><span class="jsdoc-syntax">){
+ </span><span class="jsdoc-var">Roo.QuickTips.disable</span><span class="jsdoc-syntax">();
+ }
+ </span><span class="jsdoc-var">this.currentTarget </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e.getTarget</span><span class="jsdoc-syntax">();
+
+ </span><span class="jsdoc-var">this.dragCurrent </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">oDD</span><span class="jsdoc-syntax">;
+
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">oDD.getEl</span><span class="jsdoc-syntax">();
+
+ </span><span class="jsdoc-comment">// track start position
+ </span><span class="jsdoc-var">this.startX </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e.getPageX</span><span class="jsdoc-syntax">();
+ </span><span class="jsdoc-var">this.startY </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e.getPageY</span><span class="jsdoc-syntax">();
+
+ </span><span class="jsdoc-var">this.deltaX </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.startX </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">el.offsetLeft</span><span class="jsdoc-syntax">;
+ </span><span class="jsdoc-var">this.deltaY </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.startY </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">el.offsetTop</span><span class="jsdoc-syntax">;
+
+ </span><span class="jsdoc-var">this.dragThreshMet </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">;
+
+ </span><span class="jsdoc-var">this.clickTimeout </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">setTimeout</span><span class="jsdoc-syntax">(
+ </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">DDM </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.dd.DDM</span><span class="jsdoc-syntax">;
+ </span><span class="jsdoc-var">DDM.startDrag</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">DDM.startX</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">DDM.startY</span><span class="jsdoc-syntax">);
+ },
+ </span><span class="jsdoc-var">this.clickTimeThresh </span><span class="jsdoc-syntax">);
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Fired when either the drag pixel threshol or the mousedown hold
+ * time threshold has been met.
+ * @method startDrag
+ * @param x {int} the X position of the original mousedown
+ * @param y {int} the Y position of the original mousedown
+ * @static
+ */
+ </span><span class="jsdoc-var">startDrag</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">x</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">y</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">clearTimeout</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.clickTimeout</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.dragCurrent</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">this.dragCurrent.b4StartDrag</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">x</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">y</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-var">this.dragCurrent.startDrag</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">x</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">y</span><span class="jsdoc-syntax">);
+ }
+ </span><span class="jsdoc-var">this.dragThreshMet </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Internal function to handle the mouseup event. Will be invoked
+ * from the context of the document.
+ * @method handleMouseUp
+ * @param {Event} e the event
+ * @private
+ * @static
+ */
+ </span><span class="jsdoc-var">handleMouseUp</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
+
+ </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.QuickTips</span><span class="jsdoc-syntax">){
+ </span><span class="jsdoc-var">Roo.QuickTips.enable</span><span class="jsdoc-syntax">();
+ }
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(! </span><span class="jsdoc-var">this.dragCurrent</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+ }
+
+ </span><span class="jsdoc-var">clearTimeout</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.clickTimeout</span><span class="jsdoc-syntax">);
+
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.dragThreshMet</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">this.fireEvents</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">);
+ } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
+ }
+
+ </span><span class="jsdoc-var">this.stopDrag</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
+
+ </span><span class="jsdoc-var">this.stopEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Utility to stop event propagation and event default, if these
+ * features are turned on.
+ * @method stopEvent
+ * @param {Event} e the event as returned by this.getEvent()
+ * @static
+ */
+ </span><span class="jsdoc-var">stopEvent</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){
+ </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.stopPropagation</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">e.stopPropagation</span><span class="jsdoc-syntax">();
+ }
+
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.preventDefault</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">e.preventDefault</span><span class="jsdoc-syntax">();
+ }
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Internal function to clean up event handlers after the drag
+ * operation is complete
+ * @method stopDrag
+ * @param {Event} e the event
+ * @private
+ * @static
+ */
+ </span><span class="jsdoc-var">stopDrag</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-comment">// Fire the drag end event for the item that was dragged
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.dragCurrent</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.dragThreshMet</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">this.dragCurrent.b4EndDrag</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-var">this.dragCurrent.endDrag</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
+ }
+
+ </span><span class="jsdoc-var">this.dragCurrent.onMouseUp</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
+ }
+
+ </span><span class="jsdoc-var">this.dragCurrent </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
+ </span><span class="jsdoc-var">this.dragOvers </span><span class="jsdoc-syntax">= {};
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Internal function to handle the mousemove event. Will be invoked
+ * from the context of the html element.
+ *
+ * @TODO figure out what we can do about mouse events lost when the
+ * user drags objects beyond the window boundary. Currently we can
+ * detect this in internet explorer by verifying that the mouse is
+ * down during the mousemove event. Firefox doesn't give us the
+ * button state on the mousemove event.
+ * @method handleMouseMove
+ * @param {Event} e the event
+ * @private
+ * @static
+ */
+ </span><span class="jsdoc-var">handleMouseMove</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(! </span><span class="jsdoc-var">this.dragCurrent</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
+ }
+
+ </span><span class="jsdoc-comment">// var button = e.which || e.button;
+
+ // check for IE mouseup outside of page boundary
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isIE </span><span class="jsdoc-syntax">&& (</span><span class="jsdoc-var">e.button </span><span class="jsdoc-syntax">!== 0 && </span><span class="jsdoc-var">e.button </span><span class="jsdoc-syntax">!== 1 && </span><span class="jsdoc-var">e.button </span><span class="jsdoc-syntax">!== 2)) {
+ </span><span class="jsdoc-var">this.stopEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.handleMouseUp</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
+ }
+
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.dragThreshMet</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">diffX </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.abs</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.startX </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">e.getPageX</span><span class="jsdoc-syntax">());
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">diffY </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Math.abs</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.startY </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">e.getPageY</span><span class="jsdoc-syntax">());
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">diffX </span><span class="jsdoc-syntax">> </span><span class="jsdoc-var">this.clickPixelThresh </span><span class="jsdoc-syntax">||
+ </span><span class="jsdoc-var">diffY </span><span class="jsdoc-syntax">> </span><span class="jsdoc-var">this.clickPixelThresh</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">this.startDrag</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.startX</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.startY</span><span class="jsdoc-syntax">);
+ }
+ }
+
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.dragThreshMet</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">this.dragCurrent.b4Drag</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-var">this.dragCurrent.onDrag</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">this.dragCurrent.moveOnly</span><span class="jsdoc-syntax">){
+ </span><span class="jsdoc-var">this.fireEvents</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-keyword">false</span><span class="jsdoc-syntax">);
+ }
+ }
+
+ </span><span class="jsdoc-var">this.stopEvent</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
+
+ </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Iterates over all of the DragDrop elements to find ones we are
+ * hovering over or dropping on
+ * @method fireEvents
+ * @param {Event} e the event
+ * @param {boolean} isDrop is this a drop op or a mouseover op?
+ * @private
+ * @static
+ */
+ </span><span class="jsdoc-var">fireEvents</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">isDrop</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">dc </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.dragCurrent</span><span class="jsdoc-syntax">;
+
+ </span><span class="jsdoc-comment">// If the user did the mouse up outside of the window, we could
+ // get here even though we have ended the drag.
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">dc </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">dc.isLocked</span><span class="jsdoc-syntax">()) {
+ </span><span class="jsdoc-keyword">return</span><span class="jsdoc-syntax">;
+ }
+
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">pt </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">e.getPoint</span><span class="jsdoc-syntax">();
+
+ </span><span class="jsdoc-comment">// cache the previous dragOver array
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">oldOvers </span><span class="jsdoc-syntax">= [];
+
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">outEvts </span><span class="jsdoc-syntax">= [];
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">overEvts </span><span class="jsdoc-syntax">= [];
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">dropEvts </span><span class="jsdoc-syntax">= [];
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">enterEvts </span><span class="jsdoc-syntax">= [];
+
+ </span><span class="jsdoc-comment">// Check to see if the object(s) we were hovering over is no longer
+ // being hovered over so we can fire the onDragOut event
+ </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">this.dragOvers</span><span class="jsdoc-syntax">) {
+
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">ddo </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.dragOvers</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">];
+
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(! </span><span class="jsdoc-var">this.isTypeOfDD</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">ddo</span><span class="jsdoc-syntax">)) {
+ </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
+ }
+
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(! </span><span class="jsdoc-var">this.isOverTarget</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pt</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">ddo</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.mode</span><span class="jsdoc-syntax">)) {
+ </span><span class="jsdoc-var">outEvts.push</span><span class="jsdoc-syntax">( </span><span class="jsdoc-var">ddo </span><span class="jsdoc-syntax">);
+ }
+
+ </span><span class="jsdoc-var">oldOvers</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-keyword">true</span><span class="jsdoc-syntax">;
+ </span><span class="jsdoc-keyword">delete </span><span class="jsdoc-var">this.dragOvers</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">];
+ }
+
+ </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">sGroup </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">dc.groups</span><span class="jsdoc-syntax">) {
+
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"string" </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">sGroup</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
+ }
+
+ </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">this.ids</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">sGroup</span><span class="jsdoc-syntax">]) {
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">oDD </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.ids</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">sGroup</span><span class="jsdoc-syntax">][</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">];
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(! </span><span class="jsdoc-var">this.isTypeOfDD</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">oDD</span><span class="jsdoc-syntax">)) {
+ </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
+ }
+
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">oDD.isTarget </span><span class="jsdoc-syntax">&& !</span><span class="jsdoc-var">oDD.isLocked</span><span class="jsdoc-syntax">() && </span><span class="jsdoc-var">oDD </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-var">dc</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.isOverTarget</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pt</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">oDD</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">this.mode</span><span class="jsdoc-syntax">)) {
+ </span><span class="jsdoc-comment">// look for drop interactions
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">isDrop</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">dropEvts.push</span><span class="jsdoc-syntax">( </span><span class="jsdoc-var">oDD </span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-comment">// look for drag enter and drag over interactions
+ </span><span class="jsdoc-syntax">} </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
+
+ </span><span class="jsdoc-comment">// initial drag over: dragEnter fires
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">oldOvers</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">oDD.id</span><span class="jsdoc-syntax">]) {
+ </span><span class="jsdoc-var">enterEvts.push</span><span class="jsdoc-syntax">( </span><span class="jsdoc-var">oDD </span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-comment">// subsequent drag overs: dragOver fires
+ </span><span class="jsdoc-syntax">} </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
+ </span><span class="jsdoc-var">overEvts.push</span><span class="jsdoc-syntax">( </span><span class="jsdoc-var">oDD </span><span class="jsdoc-syntax">);
+ }
+
+ </span><span class="jsdoc-var">this.dragOvers</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">oDD.id</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">oDD</span><span class="jsdoc-syntax">;
+ }
+ }
+ }
+ }
+ }
+
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.mode</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">outEvts.length</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">dc.b4DragOut</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">outEvts</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-var">dc.onDragOut</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">outEvts</span><span class="jsdoc-syntax">);
+ }
+
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">enterEvts.length</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">dc.onDragEnter</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">enterEvts</span><span class="jsdoc-syntax">);
+ }
+
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">overEvts.length</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">dc.b4DragOver</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">overEvts</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-var">dc.onDragOver</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">overEvts</span><span class="jsdoc-syntax">);
+ }
+
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">dropEvts.length</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">dc.b4DragDrop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">dropEvts</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-var">dc.onDragDrop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">dropEvts</span><span class="jsdoc-syntax">);
+ }
+
+ } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
+ </span><span class="jsdoc-comment">// fire dragout events
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">len </span><span class="jsdoc-syntax">= 0;
+ </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">=0, </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">=</span><span class="jsdoc-var">outEvts.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax"><</span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; ++</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">dc.b4DragOut</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">outEvts</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.id</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-var">dc.onDragOut</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">outEvts</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.id</span><span class="jsdoc-syntax">);
+ }
+
+ </span><span class="jsdoc-comment">// fire enter events
+ </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">=0,</span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">=</span><span class="jsdoc-var">enterEvts.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax"><</span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; ++</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-comment">// dc.b4DragEnter(e, oDD.id);
+ </span><span class="jsdoc-var">dc.onDragEnter</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">enterEvts</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.id</span><span class="jsdoc-syntax">);
+ }
+
+ </span><span class="jsdoc-comment">// fire over events
+ </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">=0,</span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">=</span><span class="jsdoc-var">overEvts.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax"><</span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; ++</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">dc.b4DragOver</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">overEvts</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.id</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-var">dc.onDragOver</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">overEvts</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.id</span><span class="jsdoc-syntax">);
+ }
+
+ </span><span class="jsdoc-comment">// fire drop events
+ </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">=0, </span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">=</span><span class="jsdoc-var">dropEvts.length</span><span class="jsdoc-syntax">; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax"><</span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; ++</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">dc.b4DragDrop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">dropEvts</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.id</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-var">dc.onDragDrop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">dropEvts</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">]</span><span class="jsdoc-var">.id</span><span class="jsdoc-syntax">);
+ }
+
+ }
+
+ </span><span class="jsdoc-comment">// notify about a drop that did not find a target
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">isDrop </span><span class="jsdoc-syntax">&& !</span><span class="jsdoc-var">dropEvts.length</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">dc.onInvalidDrop</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">);
+ }
+
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Helper function for getting the best match from the list of drag
+ * and drop objects returned by the drag and drop events when we are
+ * in INTERSECT mode. It returns either the first object that the
+ * cursor is over, or the object that has the greatest overlap with
+ * the dragged element.
+ * @method getBestMatch
+ * @param {DragDrop[]} dds The array of drag and drop objects
+ * targeted
+ * @return {DragDrop} The best single match
+ * @static
+ */
+ </span><span class="jsdoc-var">getBestMatch</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">dds</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">winner </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
+ </span><span class="jsdoc-comment">// Return null if the input is not what we expect
+ //if (!dds || !dds.length || dds.length == 0) {
+ // winner = null;
+ // If there is only one item, it wins
+ //} else if (dds.length == 1) {
+
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">len </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">dds.length</span><span class="jsdoc-syntax">;
+
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">len </span><span class="jsdoc-syntax">== 1) {
+ </span><span class="jsdoc-var">winner </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">dds</span><span class="jsdoc-syntax">[0];
+ } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
+ </span><span class="jsdoc-comment">// Loop through the targeted items
+ </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">=0; </span><span class="jsdoc-var">i</span><span class="jsdoc-syntax"><</span><span class="jsdoc-var">len</span><span class="jsdoc-syntax">; ++</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">dd </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">dds</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">];
+ </span><span class="jsdoc-comment">// If the cursor is over the object, it wins. If the
+ // cursor is over multiple matches, the first one we come
+ // to wins.
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">dd.cursorIsOver</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">winner </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">dd</span><span class="jsdoc-syntax">;
+ </span><span class="jsdoc-keyword">break</span><span class="jsdoc-syntax">;
+ </span><span class="jsdoc-comment">// Otherwise the object with the most overlap wins
+ </span><span class="jsdoc-syntax">} </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">winner </span><span class="jsdoc-syntax">||
+ </span><span class="jsdoc-var">winner.overlap.getArea</span><span class="jsdoc-syntax">() < </span><span class="jsdoc-var">dd.overlap.getArea</span><span class="jsdoc-syntax">()) {
+ </span><span class="jsdoc-var">winner </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">dd</span><span class="jsdoc-syntax">;
+ }
+ }
+ }
+ }
+
+ </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">winner</span><span class="jsdoc-syntax">;
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Refreshes the cache of the top-left and bottom-right points of the
+ * drag and drop objects in the specified group(s). This is in the
+ * format that is stored in the drag and drop instance, so typical
+ * usage is:
+ * <code>
+ * Roo.dd.DragDropMgr.refreshCache(ddinstance.groups);
+ * </code>
+ * Alternatively:
+ * <code>
+ * Roo.dd.DragDropMgr.refreshCache({group1:true, group2:true});
+ * </code>
+ * @TODO this really should be an indexed array. Alternatively this
+ * method could accept both.
+ * @method refreshCache
+ * @param {Object} groups an associative array of groups to refresh
+ * @static
+ */
+ </span><span class="jsdoc-var">refreshCache</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">groups</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">sGroup </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">groups</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"string" </span><span class="jsdoc-syntax">!= </span><span class="jsdoc-keyword">typeof </span><span class="jsdoc-var">sGroup</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">continue</span><span class="jsdoc-syntax">;
+ }
+ </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">i </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">this.ids</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">sGroup</span><span class="jsdoc-syntax">]) {
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">oDD </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.ids</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">sGroup</span><span class="jsdoc-syntax">][</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">];
+
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.isTypeOfDD</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">oDD</span><span class="jsdoc-syntax">)) {
+ </span><span class="jsdoc-comment">// if (this.isTypeOfDD(oDD) && oDD.isTarget) {
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">loc </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getLocation</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">oDD</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">loc</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">this.locationCache</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">oDD.id</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">loc</span><span class="jsdoc-syntax">;
+ } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
+ </span><span class="jsdoc-keyword">delete </span><span class="jsdoc-var">this.locationCache</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">oDD.id</span><span class="jsdoc-syntax">];
+ </span><span class="jsdoc-comment">// this will unregister the drag and drop object if
+ // the element is not in a usable state
+ // oDD.unreg();
+ </span><span class="jsdoc-syntax">}
+ }
+ }
+ }
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * This checks to make sure an element exists and is in the DOM. The
+ * main purpose is to handle cases where innerHTML is used to remove
+ * drag and drop objects from the DOM. IE provides an 'unspecified
+ * error' when trying to access the offsetParent of such an element
+ * @method verifyEl
+ * @param {HTMLElement} el the element to check
+ * @return {boolean} true if the element looks usable
+ * @static
+ */
+ </span><span class="jsdoc-var">verifyEl</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">parent</span><span class="jsdoc-syntax">;
+ </span><span class="jsdoc-keyword">if</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.isIE</span><span class="jsdoc-syntax">){
+ </span><span class="jsdoc-keyword">try</span><span class="jsdoc-syntax">{
+ </span><span class="jsdoc-var">parent </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">el.offsetParent</span><span class="jsdoc-syntax">;
+ }</span><span class="jsdoc-keyword">catch</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">){}
+ }</span><span class="jsdoc-keyword">else</span><span class="jsdoc-syntax">{
+ </span><span class="jsdoc-var">parent </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">el.offsetParent</span><span class="jsdoc-syntax">;
+ }
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">parent</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
+ }
+ }
+
+ </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Returns a Region object containing the drag and drop element's position
+ * and size, including the padding configured for it
+ * @method getLocation
+ * @param {DragDrop} oDD the drag and drop object to get the
+ * location for
+ * @return {Roo.lib.Region} a Region object representing the total area
+ * the element occupies, including any padding
+ * the instance is configured for.
+ * @static
+ */
+ </span><span class="jsdoc-var">getLocation</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">oDD</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(! </span><span class="jsdoc-var">this.isTypeOfDD</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">oDD</span><span class="jsdoc-syntax">)) {
+ </span><span class="jsdoc-keyword">return null</span><span class="jsdoc-syntax">;
+ }
+
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">oDD.getEl</span><span class="jsdoc-syntax">(), </span><span class="jsdoc-var">pos</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">x1</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">x2</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">y1</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">y2</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">t</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">b</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">l</span><span class="jsdoc-syntax">;
+
+ </span><span class="jsdoc-keyword">try </span><span class="jsdoc-syntax">{
+ </span><span class="jsdoc-var">pos</span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.lib.Dom.getXY</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">);
+ } </span><span class="jsdoc-keyword">catch </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">) { }
+
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">pos</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">return null</span><span class="jsdoc-syntax">;
+ }
+
+ </span><span class="jsdoc-var">x1 </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">pos</span><span class="jsdoc-syntax">[0];
+ </span><span class="jsdoc-var">x2 </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">x1 </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">el.offsetWidth</span><span class="jsdoc-syntax">;
+ </span><span class="jsdoc-var">y1 </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">pos</span><span class="jsdoc-syntax">[1];
+ </span><span class="jsdoc-var">y2 </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">y1 </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">el.offsetHeight</span><span class="jsdoc-syntax">;
+
+ </span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">y1 </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">oDD.padding</span><span class="jsdoc-syntax">[0];
+ </span><span class="jsdoc-var">r </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">x2 </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">oDD.padding</span><span class="jsdoc-syntax">[1];
+ </span><span class="jsdoc-var">b </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">y2 </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">oDD.padding</span><span class="jsdoc-syntax">[2];
+ </span><span class="jsdoc-var">l </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">x1 </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">oDD.padding</span><span class="jsdoc-syntax">[3];
+
+ </span><span class="jsdoc-keyword">return new </span><span class="jsdoc-var">Roo.lib.Region</span><span class="jsdoc-syntax">( </span><span class="jsdoc-var">t</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">r</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">b</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">l </span><span class="jsdoc-syntax">);
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Checks the cursor location to see if it over the target
+ * @method isOverTarget
+ * @param {Roo.lib.Point} pt The point to evaluate
+ * @param {DragDrop} oTarget the DragDrop object we are inspecting
+ * @return {boolean} true if the mouse is over the target
+ * @private
+ * @static
+ */
+ </span><span class="jsdoc-var">isOverTarget</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pt</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">oTarget</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">intersect</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-comment">// use cache if available
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">loc </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.locationCache</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">oTarget.id</span><span class="jsdoc-syntax">];
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">loc </span><span class="jsdoc-syntax">|| !</span><span class="jsdoc-var">this.useCache</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">loc </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.getLocation</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">oTarget</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-var">this.locationCache</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">oTarget.id</span><span class="jsdoc-syntax">] = </span><span class="jsdoc-var">loc</span><span class="jsdoc-syntax">;
+
+ }
+
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">loc</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
+ }
+
+ </span><span class="jsdoc-var">oTarget.cursorIsOver </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">loc.contains</span><span class="jsdoc-syntax">( </span><span class="jsdoc-var">pt </span><span class="jsdoc-syntax">);
+
+ </span><span class="jsdoc-comment">// DragDrop is using this as a sanity check for the initial mousedown
+ // in this case we are done. In POINT mode, if the drag obj has no
+ // contraints, we are also done. Otherwise we need to evaluate the
+ // location of the target as related to the actual location of the
+ // dragged element.
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">dc </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.dragCurrent</span><span class="jsdoc-syntax">;
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">dc </span><span class="jsdoc-syntax">|| !</span><span class="jsdoc-var">dc.getTargetCoord </span><span class="jsdoc-syntax">||
+ (!</span><span class="jsdoc-var">intersect </span><span class="jsdoc-syntax">&& !</span><span class="jsdoc-var">dc.constrainX </span><span class="jsdoc-syntax">&& !</span><span class="jsdoc-var">dc.constrainY</span><span class="jsdoc-syntax">)) {
+ </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">oTarget.cursorIsOver</span><span class="jsdoc-syntax">;
+ }
+
+ </span><span class="jsdoc-var">oTarget.overlap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
+
+ </span><span class="jsdoc-comment">// Get the current location of the drag element, this is the
+ // location of the mouse event less the delta that represents
+ // where the original mousedown happened on the element. We
+ // need to consider constraints and ticks as well.
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">pos </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">dc.getTargetCoord</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">pt.x</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">pt.y</span><span class="jsdoc-syntax">);
+
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">dc.getDragEl</span><span class="jsdoc-syntax">();
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">curRegion </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">Roo.lib.Region</span><span class="jsdoc-syntax">( </span><span class="jsdoc-var">pos.y</span><span class="jsdoc-syntax">,
+ </span><span class="jsdoc-var">pos.x </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">el.offsetWidth</span><span class="jsdoc-syntax">,
+ </span><span class="jsdoc-var">pos.y </span><span class="jsdoc-syntax">+ </span><span class="jsdoc-var">el.offsetHeight</span><span class="jsdoc-syntax">,
+ </span><span class="jsdoc-var">pos.x </span><span class="jsdoc-syntax">);
+
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">overlap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">curRegion.intersect</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">loc</span><span class="jsdoc-syntax">);
+
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">overlap</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">oTarget.overlap </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">overlap</span><span class="jsdoc-syntax">;
+ </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">intersect</span><span class="jsdoc-syntax">) ? </span><span class="jsdoc-keyword">true </span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">oTarget.cursorIsOver</span><span class="jsdoc-syntax">;
+ } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
+ </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
+ }
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * unload event handler
+ * @method _onUnload
+ * @private
+ * @static
+ */
+ </span><span class="jsdoc-var">_onUnload</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">e</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">me</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">Roo.dd.DragDropMgr.unregAll</span><span class="jsdoc-syntax">();
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Cleans up the drag and drop events and objects.
+ * @method unregAll
+ * @private
+ * @static
+ */
+ </span><span class="jsdoc-var">unregAll</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
+
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.dragCurrent</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">this.stopDrag</span><span class="jsdoc-syntax">();
+ </span><span class="jsdoc-var">this.dragCurrent </span><span class="jsdoc-syntax">= </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
+ }
+
+ </span><span class="jsdoc-var">this._execOnAll</span><span class="jsdoc-syntax">(</span><span class="jsdoc-string">"unreg"</span><span class="jsdoc-syntax">, []);
+
+ </span><span class="jsdoc-keyword">for </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">i </span><span class="jsdoc-keyword">in </span><span class="jsdoc-var">this.elementCache</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">delete </span><span class="jsdoc-var">this.elementCache</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">i</span><span class="jsdoc-syntax">];
+ }
+
+ </span><span class="jsdoc-var">this.elementCache </span><span class="jsdoc-syntax">= {};
+ </span><span class="jsdoc-var">this.ids </span><span class="jsdoc-syntax">= {};
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * A cache of DOM elements
+ * @property elementCache
+ * @private
+ * @static
+ */
+ </span><span class="jsdoc-var">elementCache</span><span class="jsdoc-syntax">: {},
+
+ </span><span class="jsdoc-comment">/**
+ * Get the wrapper for the DOM element specified
+ * @method getElWrapper
+ * @param {String} id the id of the element to get
+ * @return {Roo.dd.DDM.ElementWrapper} the wrapped element
+ * @private
+ * @deprecated This wrapper isn't that useful
+ * @static
+ */
+ </span><span class="jsdoc-var">getElWrapper</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">oWrapper </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.elementCache</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">];
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(!</span><span class="jsdoc-var">oWrapper </span><span class="jsdoc-syntax">|| !</span><span class="jsdoc-var">oWrapper.el</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">oWrapper </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.elementCache</span><span class="jsdoc-syntax">[</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">] =
+ </span><span class="jsdoc-keyword">new </span><span class="jsdoc-var">this.ElementWrapper</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">Roo.getDom</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">));
+ }
+ </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">oWrapper</span><span class="jsdoc-syntax">;
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Returns the actual DOM element
+ * @method getElement
+ * @param {String} id the id of the elment to get
+ * @return {Object} The element
+ * @deprecated use Roo.getDom instead
+ * @static
+ */
+ </span><span class="jsdoc-var">getElement</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">Roo.getDom</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">);
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Returns the style property for the DOM element (i.e.,
+ * document.getElById(id).style)
+ * @method getCss
+ * @param {String} id the id of the elment to get
+ * @return {Object} The style property of the element
+ * @deprecated use Roo.getDom instead
+ * @static
+ */
+ </span><span class="jsdoc-var">getCss</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.getDom</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">) ? </span><span class="jsdoc-var">el.style </span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Inner class for cached elements
+ * @class DragDropMgr.ElementWrapper
+ * @for DragDropMgr
+ * @private
+ * @deprecated
+ */
+ </span><span class="jsdoc-var">ElementWrapper</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-comment">/**
+ * The element
+ * @property el
+ */
+ </span><span class="jsdoc-var">this.el </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">el </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-keyword">null</span><span class="jsdoc-syntax">;
+ </span><span class="jsdoc-comment">/**
+ * The element id
+ * @property id
+ */
+ </span><span class="jsdoc-var">this.id </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">el.id</span><span class="jsdoc-syntax">;
+ </span><span class="jsdoc-comment">/**
+ * A reference to the style property
+ * @property css
+ */
+ </span><span class="jsdoc-var">this.css </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">this.el </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">el.style</span><span class="jsdoc-syntax">;
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Returns the X position of an html element
+ * @method getPosX
+ * @param el the element for which to get the position
+ * @return {int} the X coordinate
+ * @for DragDropMgr
+ * @deprecated use Roo.lib.Dom.getX instead
+ * @static
+ */
+ </span><span class="jsdoc-var">getPosX</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">Roo.lib.Dom.getX</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">);
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Returns the Y position of an html element
+ * @method getPosY
+ * @param el the element for which to get the position
+ * @return {int} the Y coordinate
+ * @deprecated use Roo.lib.Dom.getY instead
+ * @static
+ */
+ </span><span class="jsdoc-var">getPosY</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">Roo.lib.Dom.getY</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">);
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Swap two nodes. In IE, we use the native method, for others we
+ * emulate the IE behavior
+ * @method swapNode
+ * @param n1 the first node to swap
+ * @param n2 the other node to swap
+ * @static
+ */
+ </span><span class="jsdoc-var">swapNode</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n1</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">n2</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n1.swapNode</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">n1.swapNode</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n2</span><span class="jsdoc-syntax">);
+ } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">p </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">n2.parentNode</span><span class="jsdoc-syntax">;
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">s </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">n2.nextSibling</span><span class="jsdoc-syntax">;
+
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">s </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">n1</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">p.insertBefore</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n1</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">n2</span><span class="jsdoc-syntax">);
+ } </span><span class="jsdoc-keyword">else if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n2 </span><span class="jsdoc-syntax">== </span><span class="jsdoc-var">n1.nextSibling</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">p.insertBefore</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n2</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">n1</span><span class="jsdoc-syntax">);
+ } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
+ </span><span class="jsdoc-var">n1.parentNode.replaceChild</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n2</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">n1</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-var">p.insertBefore</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">n1</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">s</span><span class="jsdoc-syntax">);
+ }
+ }
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Returns the current scroll position
+ * @method getScroll
+ * @private
+ * @static
+ */
+ </span><span class="jsdoc-var">getScroll</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">() {
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">t</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">l</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">dde</span><span class="jsdoc-syntax">=</span><span class="jsdoc-var">document.documentElement</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">db</span><span class="jsdoc-syntax">=</span><span class="jsdoc-var">document.body</span><span class="jsdoc-syntax">;
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">dde </span><span class="jsdoc-syntax">&& (</span><span class="jsdoc-var">dde.scrollTop </span><span class="jsdoc-syntax">|| </span><span class="jsdoc-var">dde.scrollLeft</span><span class="jsdoc-syntax">)) {
+ </span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">dde.scrollTop</span><span class="jsdoc-syntax">;
+ </span><span class="jsdoc-var">l </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">dde.scrollLeft</span><span class="jsdoc-syntax">;
+ } </span><span class="jsdoc-keyword">else if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">db</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">t </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">db.scrollTop</span><span class="jsdoc-syntax">;
+ </span><span class="jsdoc-var">l </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">db.scrollLeft</span><span class="jsdoc-syntax">;
+ } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
+
+ }
+ </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">{ </span><span class="jsdoc-var">top</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">t</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">left</span><span class="jsdoc-syntax">: </span><span class="jsdoc-var">l </span><span class="jsdoc-syntax">};
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Returns the specified element style property
+ * @method getStyle
+ * @param {HTMLElement} el the element
+ * @param {string} styleProp the style property
+ * @return {string} The value of the style property
+ * @deprecated use Roo.lib.Dom.getStyle
+ * @static
+ */
+ </span><span class="jsdoc-var">getStyle</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">styleProp</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">Roo.fly</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">el</span><span class="jsdoc-syntax">)</span><span class="jsdoc-var">.getStyle</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">styleProp</span><span class="jsdoc-syntax">);
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Gets the scrollTop
+ * @method getScrollTop
+ * @return {int} the document's scrollTop
+ * @static
+ */
+ </span><span class="jsdoc-var">getScrollTop</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">() { </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.getScroll</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.top</span><span class="jsdoc-syntax">; },
+
+ </span><span class="jsdoc-comment">/**
+ * Gets the scrollLeft
+ * @method getScrollLeft
+ * @return {int} the document's scrollTop
+ * @static
+ */
+ </span><span class="jsdoc-var">getScrollLeft</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">() { </span><span class="jsdoc-keyword">return </span><span class="jsdoc-var">this.getScroll</span><span class="jsdoc-syntax">()</span><span class="jsdoc-var">.left</span><span class="jsdoc-syntax">; },
+
+ </span><span class="jsdoc-comment">/**
+ * Sets the x/y position of an element to the location of the
+ * target element.
+ * @method moveToEl
+ * @param {HTMLElement} moveEl The element to move
+ * @param {HTMLElement} targetEl The position reference element
+ * @static
+ */
+ </span><span class="jsdoc-var">moveToEl</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">moveEl</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">targetEl</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">aCoord </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.lib.Dom.getXY</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">targetEl</span><span class="jsdoc-syntax">);
+ </span><span class="jsdoc-var">Roo.lib.Dom.setXY</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">moveEl</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">aCoord</span><span class="jsdoc-syntax">);
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Numeric array sort function
+ * @method numericSort
+ * @static
+ */
+ </span><span class="jsdoc-var">numericSort</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">a</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">b</span><span class="jsdoc-syntax">) { </span><span class="jsdoc-keyword">return </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">a </span><span class="jsdoc-syntax">- </span><span class="jsdoc-var">b</span><span class="jsdoc-syntax">); },
+
+ </span><span class="jsdoc-comment">/**
+ * Internal counter
+ * @property _timeoutCount
+ * @private
+ * @static
+ */
+ </span><span class="jsdoc-var">_timeoutCount</span><span class="jsdoc-syntax">: 0,
+
+ </span><span class="jsdoc-comment">/**
+ * Trying to make the load order less important. Without this we get
+ * an error if this file is loaded before the Event Utility.
+ * @method _addListeners
+ * @private
+ * @static
+ */
+ </span><span class="jsdoc-var">_addListeners</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">() {
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">DDM </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.dd.DDM</span><span class="jsdoc-syntax">;
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">( </span><span class="jsdoc-var">Roo.lib.Event </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">document </span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">DDM._onLoad</span><span class="jsdoc-syntax">();
+ } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">DDM._timeoutCount </span><span class="jsdoc-syntax">> 2000) {
+ } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
+ </span><span class="jsdoc-var">setTimeout</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">DDM._addListeners</span><span class="jsdoc-syntax">, 10);
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">document </span><span class="jsdoc-syntax">&& </span><span class="jsdoc-var">document.body</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-var">DDM._timeoutCount </span><span class="jsdoc-syntax">+= 1;
+ }
+ }
+ }
+ },
+
+ </span><span class="jsdoc-comment">/**
+ * Recursively searches the immediate parent and all child nodes for
+ * the handle element in order to determine wheter or not it was
+ * clicked.
+ * @method handleWasClicked
+ * @param node the html element to inspect
+ * @static
+ */
+ </span><span class="jsdoc-var">handleWasClicked</span><span class="jsdoc-syntax">: </span><span class="jsdoc-keyword">function</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">node</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.isHandle</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">node.id</span><span class="jsdoc-syntax">)) {
+ </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
+ } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
+ </span><span class="jsdoc-comment">// check to see if this is a text node child of the one we want
+ </span><span class="jsdoc-keyword">var </span><span class="jsdoc-var">p </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">node.parentNode</span><span class="jsdoc-syntax">;
+
+ </span><span class="jsdoc-keyword">while </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">p</span><span class="jsdoc-syntax">) {
+ </span><span class="jsdoc-keyword">if </span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">this.isHandle</span><span class="jsdoc-syntax">(</span><span class="jsdoc-var">id</span><span class="jsdoc-syntax">, </span><span class="jsdoc-var">p.id</span><span class="jsdoc-syntax">)) {
+ </span><span class="jsdoc-keyword">return true</span><span class="jsdoc-syntax">;
+ } </span><span class="jsdoc-keyword">else </span><span class="jsdoc-syntax">{
+ </span><span class="jsdoc-var">p </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">p.parentNode</span><span class="jsdoc-syntax">;
+ }
+ }
+ }
+
+ </span><span class="jsdoc-keyword">return false</span><span class="jsdoc-syntax">;
+ }
+
+ };
+
+}();
+
+</span><span class="jsdoc-comment">// shorter alias, save a few bytes
+</span><span class="jsdoc-var">Roo.dd.DDM </span><span class="jsdoc-syntax">= </span><span class="jsdoc-var">Roo.dd.DragDropMgr</span><span class="jsdoc-syntax">;
+</span><span class="jsdoc-var">Roo.dd.DDM._addListeners</span><span class="jsdoc-syntax">();
+
+}</span></code></body></html>
\ No newline at end of file