Ext.namespace('Zarafa.common.ui'); /** * @class Zarafa.common.ui.BoxFieldDropZone * @extends Ext.dd.DropZone * @xtype zarafa.boxfielddropzone * * A {@link Ext.dd.DropZone DropZone} installed on a {@link Zarafa.common.ui.BoxField BoxField} * Ensures cooperation between different BoxFields' drag and drop zones in order to enable the dragging * of boxes */ Zarafa.common.ui.BoxFieldDropZone = Ext.extend(Ext.dd.DropZone, { /** * @cfg {Zarafa.common.ui.BoxField} field The field on which this drag zone is installed */ field : undefined, /** * Returns a custom data object associated with the DOM node that is the target of the event. * @param {Event} e The event * @return {Object} data The custom data */ getTargetFromEvent : function(e) { return e.getTarget('.x-zarafa-boxfield'); }, /** * Called when the DropZone determines that a {@link Ext.dd.DragSource} has entered a drop node * that has either been registered or detected by a configured implementation of {@link #getTargetFromEvent}. * Override highlights the drop field, adding wrapFocusClass to it. * * @param {Object} nodeData The custom data associated with the drop node (this is the same value returned from * {@link #getTargetFromEvent} for this node) * @param {Ext.dd.DragSource} source The drag source that was dragged over this drop zone * @param {Event} e The event * @param {Object} data An object containing arbitrary data supplied by the drag source */ onNodeEnter : function(target, dd, e, data) { Ext.get(target).addClass(this.wrapFocusClass); }, /** * Called when the DropZone determines that a {@link Ext.dd.DragSource} has been dragged out of * the drop node without dropping. * Override removes the focus class, 'unhighlighting' the field. * * @param {Object} nodeData The custom data associated with the drop node (this is the same value returned from * {@link #getTargetFromEvent} for this node) * @param {Ext.dd.DragSource} source The drag source that was dragged over this drop zone * @param {Event} e The event * @param {Object} data An object containing arbitrary data supplied by the drag source */ onNodeOut : function(target , dd, e, data) { Ext.get(target).removeClass(this.wrapFocusClass); }, /** * Called while the DropZone determines that a {@link Ext.dd.DragSource} is over a drop node * that has either been registered or detected by a configured implementation of {@link #getTargetFromEvent}. * The default implementation returns this.dropNotAllowed, so it should be * overridden to provide the proper feedback. * @param {Object} nodeData The custom data associated with the drop node (this is the same value returned from * {@link #getTargetFromEvent} for this node) * @param {Ext.dd.DragSource} source The drag source that was dragged over this drop zone * @param {Event} e The event * @param {Object} data An object containing arbitrary data supplied by the drag source * @return {String} status The CSS class that communicates the drop status back to the source so that the * underlying {@link Ext.dd.StatusProxy} can be updated */ onNodeOver : function(target, dd, e, data) { return Ext.dd.DropZone.prototype.dropAllowed; } }); Ext.reg('zarafa.boxfielddropzone', Zarafa.common.ui.BoxFieldDropZone);