| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427 | 
							- <!DOCTYPE html>
 
- <html>
 
- <head>
 
-   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 
-   <title>The source code</title>
 
-   <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
 
-   <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
 
-   <style type="text/css">
 
-     .highlight { display: block; background-color: #ddd; }
 
-   </style>
 
-   <script type="text/javascript">
 
-     function highlight() {
 
-       document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
 
-     }
 
-   </script>
 
- </head>
 
- <body onload="prettyPrint(); highlight();">
 
-   <pre class="prettyprint lang-js"><span id='Ext-dd-DragSource'>/**
 
- </span> * A simple class that provides the basic implementation needed to make any element draggable.
 
-  */
 
- Ext.define('Ext.dd.DragSource', {
 
-     extend: 'Ext.dd.DDProxy',
 
-     requires: [
 
-         'Ext.dd.StatusProxy',
 
-         'Ext.dd.DragDropManager'
 
-     ],
 
- <span id='Ext-dd-DragSource-cfg-ddGroup'>    /**
 
- </span>     * @cfg {String} ddGroup
 
-      * A named drag drop group to which this object belongs.  If a group is specified, then this object will only
 
-      * interact with other drag drop objects in the same group.
 
-      */
 
- <span id='Ext-dd-DragSource-cfg-dropAllowed'>    /**
 
- </span>     * @cfg {String} dropAllowed
 
-      * The CSS class returned to the drag source when drop is allowed.
 
-      */
 
-     dropAllowed : Ext.baseCSSPrefix + 'dd-drop-ok',
 
- <span id='Ext-dd-DragSource-cfg-dropNotAllowed'>    /**
 
- </span>     * @cfg {String} dropNotAllowed
 
-      * The CSS class returned to the drag source when drop is not allowed.
 
-      */
 
-     dropNotAllowed : Ext.baseCSSPrefix + 'dd-drop-nodrop',
 
- <span id='Ext-dd-DragSource-cfg-animRepair'>    /**
 
- </span>     * @cfg {Boolean} animRepair
 
-      * If true, animates the proxy element back to the position of the handle element used to trigger the drag.
 
-      */
 
-     animRepair: true,
 
- <span id='Ext-dd-DragSource-cfg-repairHighlightColor'>    /**
 
- </span>     * @cfg {String} repairHighlightColor
 
-      * The color to use when visually highlighting the drag source in the afterRepair
 
-      * method after a failed drop (defaults to light blue). The color must be a 6 digit hex value, without
 
-      * a preceding '#'.
 
-      */
 
-     repairHighlightColor: 'c3daf9',
 
- <span id='Ext-dd-DragSource-method-constructor'>    /**
 
- </span>     * Creates new drag-source.
 
-      * @param {String/HTMLElement/Ext.Element} el The container element or ID of it.
 
-      * @param {Object} config (optional) Config object.
 
-      */
 
-     constructor: function(el, config) {
 
-         this.el = Ext.get(el);
 
-         if(!this.dragData){
 
-             this.dragData = {};
 
-         }
 
-         Ext.apply(this, config);
 
-         if(!this.proxy){
 
-             this.proxy = new Ext.dd.StatusProxy({
 
-                 id: this.el.id + '-drag-status-proxy',
 
-                 animRepair: this.animRepair
 
-             });
 
-         }
 
-         this.callParent([this.el.dom, this.ddGroup || this.group,
 
-               {dragElId : this.proxy.id, resizeFrame: false, isTarget: false, scroll: this.scroll === true}]);
 
-         this.dragging = false;
 
-     },
 
- <span id='Ext-dd-DragSource-method-getDragData'>    /**
 
- </span>     * Returns the data object associated with this drag source
 
-      * @return {Object} data An object containing arbitrary data
 
-      */
 
-     getDragData : function(e){
 
-         return this.dragData;
 
-     },
 
-     // private
 
-     onDragEnter : function(e, id){
 
-         var target = Ext.dd.DragDropManager.getDDById(id),
 
-             status;
 
-         this.cachedTarget = target;
 
-         if (this.beforeDragEnter(target, e, id) !== false) {
 
-             if (target.isNotifyTarget) {
 
-                 status = target.notifyEnter(this, e, this.dragData);
 
-                 this.proxy.setStatus(status);
 
-             } else {
 
-                 this.proxy.setStatus(this.dropAllowed);
 
-             }
 
-             if (this.afterDragEnter) {
 
- <span id='Ext-dd-DragSource-method-afterDragEnter'>                /**
 
- </span>                 * An empty function by default, but provided so that you can perform a custom action
 
-                  * when the dragged item enters the drop target by providing an implementation.
 
-                  * @param {Ext.dd.DragDrop} target The drop target
 
-                  * @param {Event} e The event object
 
-                  * @param {String} id The id of the dragged element
 
-                  * @method afterDragEnter
 
-                  */
 
-                 this.afterDragEnter(target, e, id);
 
-             }
 
-         }
 
-     },
 
- <span id='Ext-dd-DragSource-method-beforeDragEnter'>    /**
 
- </span>     * An empty function by default, but provided so that you can perform a custom action
 
-      * before the dragged item enters the drop target and optionally cancel the onDragEnter.
 
-      * @param {Ext.dd.DragDrop} target The drop target
 
-      * @param {Event} e The event object
 
-      * @param {String} id The id of the dragged element
 
-      * @return {Boolean} isValid True if the drag event is valid, else false to cancel
 
-      * @template
 
-      */
 
-     beforeDragEnter: function(target, e, id) {
 
-         return true;
 
-     },
 
-     // private
 
-     onDragOver: function(e, id) {
 
-         var target = this.cachedTarget || Ext.dd.DragDropManager.getDDById(id),
 
-             status;
 
-         if (this.beforeDragOver(target, e, id) !== false) {
 
-             if(target.isNotifyTarget){
 
-                 status = target.notifyOver(this, e, this.dragData);
 
-                 this.proxy.setStatus(status);
 
-             }
 
-             if (this.afterDragOver) {
 
- <span id='Ext-dd-DragSource-method-afterDragOver'>                /**
 
- </span>                 * An empty function by default, but provided so that you can perform a custom action
 
-                  * while the dragged item is over the drop target by providing an implementation.
 
-                  * @param {Ext.dd.DragDrop} target The drop target
 
-                  * @param {Event} e The event object
 
-                  * @param {String} id The id of the dragged element
 
-                  * @method afterDragOver
 
-                  */
 
-                 this.afterDragOver(target, e, id);
 
-             }
 
-         }
 
-     },
 
- <span id='Ext-dd-DragSource-method-beforeDragOver'>    /**
 
- </span>     * An empty function by default, but provided so that you can perform a custom action
 
-      * while the dragged item is over the drop target and optionally cancel the onDragOver.
 
-      * @param {Ext.dd.DragDrop} target The drop target
 
-      * @param {Event} e The event object
 
-      * @param {String} id The id of the dragged element
 
-      * @return {Boolean} isValid True if the drag event is valid, else false to cancel
 
-      * @template
 
-      */
 
-     beforeDragOver: function(target, e, id) {
 
-         return true;
 
-     },
 
-     // private
 
-     onDragOut: function(e, id) {
 
-         var target = this.cachedTarget || Ext.dd.DragDropManager.getDDById(id);
 
-         if (this.beforeDragOut(target, e, id) !== false) {
 
-             if (target.isNotifyTarget) {
 
-                 target.notifyOut(this, e, this.dragData);
 
-             }
 
-             this.proxy.reset();
 
-             if (this.afterDragOut) {
 
- <span id='Ext-dd-DragSource-method-afterDragOut'>                /**
 
- </span>                 * An empty function by default, but provided so that you can perform a custom action
 
-                  * after the dragged item is dragged out of the target without dropping.
 
-                  * @param {Ext.dd.DragDrop} target The drop target
 
-                  * @param {Event} e The event object
 
-                  * @param {String} id The id of the dragged element
 
-                  * @method afterDragOut
 
-                  */
 
-                 this.afterDragOut(target, e, id);
 
-             }
 
-         }
 
-         this.cachedTarget = null;
 
-     },
 
- <span id='Ext-dd-DragSource-method-beforeDragOut'>    /**
 
- </span>     * An empty function by default, but provided so that you can perform a custom action before the dragged
 
-      * item is dragged out of the target without dropping, and optionally cancel the onDragOut.
 
-      * @param {Ext.dd.DragDrop} target The drop target
 
-      * @param {Event} e The event object
 
-      * @param {String} id The id of the dragged element
 
-      * @return {Boolean} isValid True if the drag event is valid, else false to cancel
 
-      * @template
 
-      */
 
-     beforeDragOut: function(target, e, id){
 
-         return true;
 
-     },
 
-     // private
 
-     onDragDrop: function(e, id){
 
-         var target = this.cachedTarget || Ext.dd.DragDropManager.getDDById(id);
 
-         if (this.beforeDragDrop(target, e, id) !== false) {
 
-             if (target.isNotifyTarget) {
 
-                 if (target.notifyDrop(this, e, this.dragData) !== false) { // valid drop?
 
-                     this.onValidDrop(target, e, id);
 
-                 } else {
 
-                     this.onInvalidDrop(target, e, id);
 
-                 }
 
-             } else {
 
-                 this.onValidDrop(target, e, id);
 
-             }
 
-             if (this.afterDragDrop) {
 
- <span id='Ext-dd-DragSource-method-afterDragDrop'>                /**
 
- </span>                 * An empty function by default, but provided so that you can perform a custom action
 
-                  * after a valid drag drop has occurred by providing an implementation.
 
-                  * @param {Ext.dd.DragDrop} target The drop target
 
-                  * @param {Event} e The event object
 
-                  * @param {String} id The id of the dropped element
 
-                  * @method afterDragDrop
 
-                  */
 
-                 this.afterDragDrop(target, e, id);
 
-             }
 
-         }
 
-         delete this.cachedTarget;
 
-     },
 
- <span id='Ext-dd-DragSource-method-beforeDragDrop'>    /**
 
- </span>     * An empty function by default, but provided so that you can perform a custom action before the dragged
 
-      * item is dropped onto the target and optionally cancel the onDragDrop.
 
-      * @param {Ext.dd.DragDrop} target The drop target
 
-      * @param {Event} e The event object
 
-      * @param {String} id The id of the dragged element
 
-      * @return {Boolean} isValid True if the drag drop event is valid, else false to cancel
 
-      * @template
 
-      */
 
-     beforeDragDrop: function(target, e, id){
 
-         return true;
 
-     },
 
-     // private
 
-     onValidDrop: function(target, e, id){
 
-         this.hideProxy();
 
-         if(this.afterValidDrop){
 
- <span id='Ext-dd-DragSource-method-afterValidDrop'>            /**
 
- </span>             * An empty function by default, but provided so that you can perform a custom action
 
-              * after a valid drop has occurred by providing an implementation.
 
-              * @param {Object} target The target DD
 
-              * @param {Event} e The event object
 
-              * @param {String} id The id of the dropped element
 
-              * @method afterValidDrop
 
-              */
 
-             this.afterValidDrop(target, e, id);
 
-         }
 
-     },
 
-     // private
 
-     getRepairXY: function(e, data){
 
-         return this.el.getXY();
 
-     },
 
-     // private
 
-     onInvalidDrop: function(target, e, id) {
 
-         // This method may be called by the DragDropManager.
 
-         // To preserve backwards compat, it only passes the event object
 
-         // Here we correct the arguments.
 
-         if (!e) {
 
-             e = target;
 
-             target = null;
 
-             id = e.getTarget().id;
 
-         }
 
-         this.beforeInvalidDrop(target, e, id);
 
-         if (this.cachedTarget) {
 
-             if(this.cachedTarget.isNotifyTarget){
 
-                 this.cachedTarget.notifyOut(this, e, this.dragData);
 
-             }
 
-             this.cacheTarget = null;
 
-         }
 
-         this.proxy.repair(this.getRepairXY(e, this.dragData), this.afterRepair, this);
 
-         if (this.afterInvalidDrop) {
 
- <span id='Ext-dd-DragSource-method-afterInvalidDrop'>            /**
 
- </span>             * An empty function by default, but provided so that you can perform a custom action
 
-              * after an invalid drop has occurred by providing an implementation.
 
-              * @param {Event} e The event object
 
-              * @param {String} id The id of the dropped element
 
-              * @method afterInvalidDrop
 
-              */
 
-             this.afterInvalidDrop(e, id);
 
-         }
 
-     },
 
-     // private
 
-     afterRepair: function() {
 
-         var me = this;
 
-         if (Ext.enableFx) {
 
-             me.el.highlight(me.repairHighlightColor);
 
-         }
 
-         me.dragging = false;
 
-     },
 
- <span id='Ext-dd-DragSource-method-beforeInvalidDrop'>    /**
 
- </span>     * An empty function by default, but provided so that you can perform a custom action after an invalid
 
-      * drop has occurred.
 
-      * @param {Ext.dd.DragDrop} target The drop target
 
-      * @param {Event} e The event object
 
-      * @param {String} id The id of the dragged element
 
-      * @return {Boolean} isValid True if the invalid drop should proceed, else false to cancel
 
-      * @template
 
-      */
 
-     beforeInvalidDrop: function(target, e, id) {
 
-         return true;
 
-     },
 
-     // private
 
-     handleMouseDown: function(e) {
 
-         if (this.dragging) {
 
-             return;
 
-         }
 
-         var data = this.getDragData(e);
 
-         if (data && this.onBeforeDrag(data, e) !== false) {
 
-             this.dragData = data;
 
-             this.proxy.stop();
 
-             this.callParent(arguments);
 
-         }
 
-     },
 
- <span id='Ext-dd-DragSource-method-onBeforeDrag'>    /**
 
- </span>     * An empty function by default, but provided so that you can perform a custom action before the initial
 
-      * drag event begins and optionally cancel it.
 
-      * @param {Object} data An object containing arbitrary data to be shared with drop targets
 
-      * @param {Event} e The event object
 
-      * @return {Boolean} isValid True if the drag event is valid, else false to cancel
 
-      * @template
 
-      */
 
-     onBeforeDrag: function(data, e){
 
-         return true;
 
-     },
 
- <span id='Ext-dd-DragSource-method-onStartDrag'>    /**
 
- </span>     * An empty function by default, but provided so that you can perform a custom action once the initial
 
-      * drag event has begun.  The drag cannot be canceled from this function.
 
-      * @param {Number} x The x position of the click on the dragged object
 
-      * @param {Number} y The y position of the click on the dragged object
 
-      * @method
 
-      * @template
 
-      */
 
-     onStartDrag: Ext.emptyFn,
 
-     alignElWithMouse: function() {
 
-         this.proxy.ensureAttachedToBody(true);
 
-         return this.callParent(arguments);
 
-     },
 
-     // private override
 
-     startDrag: function(x, y) {
 
-         this.proxy.reset();
 
-         this.proxy.hidden = false;
 
-         this.dragging = true;
 
-         this.proxy.update("");
 
-         this.onInitDrag(x, y);
 
-         this.proxy.show();
 
-     },
 
-     // private
 
-     onInitDrag: function(x, y) {
 
-         var clone = this.el.dom.cloneNode(true);
 
-         clone.id = Ext.id(); // prevent duplicate ids
 
-         this.proxy.update(clone);
 
-         this.onStartDrag(x, y);
 
-         return true;
 
-     },
 
- <span id='Ext-dd-DragSource-method-getProxy'>    /**
 
- </span>     * Returns the drag source's underlying {@link Ext.dd.StatusProxy}
 
-      * @return {Ext.dd.StatusProxy} proxy The StatusProxy
 
-      */
 
-     getProxy: function() {
 
-         return this.proxy;
 
-     },
 
- <span id='Ext-dd-DragSource-method-hideProxy'>    /**
 
- </span>     * Hides the drag source's {@link Ext.dd.StatusProxy}
 
-      */
 
-     hideProxy: function() {
 
-         this.proxy.hide();
 
-         this.proxy.reset(true);
 
-         this.dragging = false;
 
-     },
 
-     // private
 
-     triggerCacheRefresh: function() {
 
-         Ext.dd.DDM.refreshCache(this.groups);
 
-     },
 
-     // private - override to prevent hiding
 
-     b4EndDrag: function(e) {
 
-     },
 
-     // private - override to prevent moving
 
-     endDrag : function(e){
 
-         this.onEndDrag(this.dragData, e);
 
-     },
 
-     // private
 
-     onEndDrag : function(data, e){
 
-     },
 
-     // private - pin to cursor
 
-     autoOffset : function(x, y) {
 
-         this.setDelta(-12, -20);
 
-     },
 
-     destroy: function(){
 
-         this.callParent();
 
-         Ext.destroy(this.proxy);
 
-     }
 
- });
 
- </pre>
 
- </body>
 
- </html>
 
 
  |