X-Git-Url: http://git.roojs.org/?a=blobdiff_plain;f=roojs-ui-debug.js;h=88b86114a5b961c4520389bea6dee6d4254cabd7;hb=refs%2Fheads%2Fgithub.com.roojs1.master;hp=3be36c1ce67363236788a2b2866fa6b6bff845f3;hpb=97e6f7c740cc7b62e97e869280257e751fd44b84;p=roojs1 diff --git a/roojs-ui-debug.js b/roojs-ui-debug.js index 3be36c1ce6..88b86114a5 100644 --- a/roojs-ui-debug.js +++ b/roojs-ui-debug.js @@ -26,6 +26,7 @@ var Dom=Roo.lib.Dom; /** * @class Roo.dd.DragDrop + * @extends Roo.util.Observable * Defines the interface and base operation of items that that can be * dragged or can be drop targets. It was designed to be extended, overriding * the event handlers for startDrag, onDrag, onDragOver and onDragOut. @@ -72,9 +73,10 @@ Roo.dd.DragDrop = function(id, sGroup, config) { if (id) { this.init(id, sGroup, config); } + }; -Roo.dd.DragDrop.prototype = { +Roo.extend(Roo.dd.DragDrop, Roo.util.Observable , { /** * The id of the element associated with this object. This is what we @@ -1157,7 +1159,7 @@ Roo.dd.DragDrop.prototype = { return ("DragDrop " + this.id); } -}; +}); })(); /* @@ -3000,6 +3002,12 @@ Roo.dd.DDTarget = function(id, sGroup, config) { if (id) { this.initTarget(id, sGroup, config); } + if (config.listeners || config.events) { + Roo.dd.DragDrop.superclass.constructor.call(this, { + listeners : config.listeners || {}, + events : config.events || {} + }); + } }; // Roo.dd.DDTarget.prototype = new Roo.dd.DragDrop(); @@ -3884,14 +3892,87 @@ Roo.extend(Roo.dd.DragSource, Roo.dd.DDProxy, { Roo.dd.DropTarget = function(el, config){ this.el = Roo.get(el); + var listeners = false; ; + if (config && config.listeners) { + listeners= config.listeners; + delete config.listeners; + } Roo.apply(this, config); if(this.containerScroll){ Roo.dd.ScrollManager.register(this.el); } - - Roo.dd.DropTarget.superclass.constructor.call(this, this.el.dom, this.ddGroup || this.group, - {isTarget: true}); + this.addEvents( { + /** + * @scope Roo.dd.DropTarget + */ + + /** + * @event enter + * The function a {@link Roo.dd.DragSource} calls once to notify this drop target that the source is now over the + * target. This default implementation adds the CSS class specified by overClass (if any) to the drop element + * and returns the dropAllowed config value. This method should be overridden if drop validation is required. + * + * IMPORTANT : it should set this.overClass and this.dropAllowed + * + * @param {Roo.dd.DragSource} source The drag source that was dragged over this drop target + * @param {Event} e The event + * @param {Object} data An object containing arbitrary data supplied by the drag source + */ + "enter" : true, + + /** + * @event over + * The function a {@link Roo.dd.DragSource} calls continuously while it is being dragged over the target. + * This method will be called on every mouse movement while the drag source is over the drop target. + * This default implementation simply returns the dropAllowed config value. + * + * IMPORTANT : it should set this.dropAllowed + * + * @param {Roo.dd.DragSource} source The drag source that was dragged over this drop target + * @param {Event} e The event + * @param {Object} data An object containing arbitrary data supplied by the drag source + + */ + "over" : true, + /** + * @event out + * The function a {@link Roo.dd.DragSource} calls once to notify this drop target that the source has been dragged + * out of the target without dropping. This default implementation simply removes the CSS class specified by + * overClass (if any) from the drop element. + * @param {Roo.dd.DragSource} source The drag source that was dragged over this drop target + * @param {Event} e The event + * @param {Object} data An object containing arbitrary data supplied by the drag source + */ + "out" : true, + + /** + * @event drop + * The function a {@link Roo.dd.DragSource} calls once to notify this drop target that the dragged item has + * been dropped on it. This method has no default implementation and returns false, so you must provide an + * implementation that does something to process the drop event and returns true so that the drag source's + * repair action does not run. + * + * IMPORTANT : it should set this.success + * + * @param {Roo.dd.DragSource} source The drag source that was dragged over this drop target + * @param {Event} e The event + * @param {Object} data An object containing arbitrary data supplied by the drag source + */ + "drop" : true + }); + + + Roo.dd.DropTarget.superclass.constructor.call( this, + this.el.dom, + this.ddGroup || this.group, + { + isTarget: true, + listeners : listeners || {} + + + } + ); }; @@ -3900,6 +3981,11 @@ Roo.extend(Roo.dd.DropTarget, Roo.dd.DDTarget, { * @cfg {String} overClass * The CSS class applied to the drop target element while the drag source is over it (defaults to ""). */ + /** + * @cfg {String} ddGroup + * The drag drop group to handle drop events for + */ + /** * @cfg {String} dropAllowed * The CSS class returned to the drag source when drop is allowed (defaults to "x-dd-drop-ok"). @@ -3910,70 +3996,68 @@ Roo.extend(Roo.dd.DropTarget, Roo.dd.DDTarget, { * The CSS class returned to the drag source when drop is not allowed (defaults to "x-dd-drop-nodrop"). */ dropNotAllowed : "x-dd-drop-nodrop", - + /** + * @cfg {boolean} success + * set this after drop listener.. + */ + success : false, + /** + * @cfg {boolean|String} valid true/false or string (ok-add/ok-sub/ok/nodrop) + * if the drop point is valid for over/enter.. + */ + valid : false, // private isTarget : true, // private isNotifyTarget : true, - + /** - * The function a {@link Roo.dd.DragSource} calls once to notify this drop target that the source is now over the - * target. This default implementation adds the CSS class specified by overClass (if any) to the drop element - * and returns the dropAllowed config value. This method should be overridden if drop validation is required. - * @param {Roo.dd.DragSource} source The drag source that was dragged over this drop target - * @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 Roo.dd.StatusProxy} can be updated + * @hide */ - notifyEnter : function(dd, e, data){ + notifyEnter : function(dd, e, data) + { + this.valid = true; + this.fireEvent('enter', dd, e, data); if(this.overClass){ this.el.addClass(this.overClass); } - return this.dropAllowed; + return typeof(this.valid) == 'string' ? 'x-dd-drop-' + this.valid : ( + this.valid ? this.dropAllowed : this.dropNotAllowed + ); }, /** - * The function a {@link Roo.dd.DragSource} calls continuously while it is being dragged over the target. - * This method will be called on every mouse movement while the drag source is over the drop target. - * This default implementation simply returns the dropAllowed config value. - * @param {Roo.dd.DragSource} source The drag source that was dragged over this drop target - * @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 Roo.dd.StatusProxy} can be updated + * @hide */ - notifyOver : function(dd, e, data){ - return this.dropAllowed; + notifyOver : function(dd, e, data) + { + this.valid = true; + this.fireEvent('over', dd, e, data); + return typeof(this.valid) == 'string' ? 'x-dd-drop-' + this.valid : ( + this.valid ? this.dropAllowed : this.dropNotAllowed + ); }, /** - * The function a {@link Roo.dd.DragSource} calls once to notify this drop target that the source has been dragged - * out of the target without dropping. This default implementation simply removes the CSS class specified by - * overClass (if any) from the drop element. - * @param {Roo.dd.DragSource} source The drag source that was dragged over this drop target - * @param {Event} e The event - * @param {Object} data An object containing arbitrary data supplied by the drag source + * @hide */ - notifyOut : function(dd, e, data){ + notifyOut : function(dd, e, data) + { + this.fireEvent('out', dd, e, data); if(this.overClass){ this.el.removeClass(this.overClass); } }, /** - * The function a {@link Roo.dd.DragSource} calls once to notify this drop target that the dragged item has - * been dropped on it. This method has no default implementation and returns false, so you must provide an - * implementation that does something to process the drop event and returns true so that the drag source's - * repair action does not run. - * @param {Roo.dd.DragSource} source The drag source that was dragged over this drop target - * @param {Event} e The event - * @param {Object} data An object containing arbitrary data supplied by the drag source - * @return {Boolean} True if the drop was valid, else false + * @hide */ - notifyDrop : function(dd, e, data){ - return false; + notifyDrop : function(dd, e, data) + { + this.success = false; + this.fireEvent('drop', dd, e, data); + return this.success; } });/* * Based on: @@ -12742,7 +12826,7 @@ Roo.PagingToolbar = function(el, ds, config) } var items = []; if (config.items) { - items = this.items; + items = config.items; config.items = []; } @@ -12753,10 +12837,10 @@ Roo.PagingToolbar = function(el, ds, config) this.bind(ds); // supprot items array. - var _this = this; + Roo.each(items, function(e) { - _this.add(Roo.factory(e)); - }); + this.add(Roo.factory(e)); + },this); }; @@ -13836,16 +13920,24 @@ Roo.extend(Roo.Editor, Roo.Component, { } }, - onSpecialKey : function(field, e){ + onSpecialKey : function(field, e) + { //Roo.log('editor onSpecialKey'); if(this.completeOnEnter && e.getKey() == e.ENTER){ e.stopEvent(); this.completeEdit(); - }else if(this.cancelOnEsc && e.getKey() == e.ESC){ - this.cancelEdit(); - }else{ - this.fireEvent('specialkey', field, e); + return; } + // do not fire special key otherwise it might hide close the editor... + if(e.getKey() == e.ENTER){ + return; + } + if(this.cancelOnEsc && e.getKey() == e.ESC){ + this.cancelEdit(); + return; + } + this.fireEvent('specialkey', field, e); + }, /** @@ -15195,7 +15287,8 @@ Roo.LayoutDialog = function(el, cfg){ config = Roo.apply({}, el); // not sure why we use documentElement here.. - it should always be body. // IE7 borks horribly if we use documentElement. - el = Roo.get( Roo.isIE ? (document.body || document.documentElement) : (document.documentElement || document.body) ).createChild(); + // webkit also does not like documentElement - it creates a body element... + el = Roo.get( document.body || document.documentElement ).createChild(); //config.autoCreate = true; } @@ -25899,10 +25992,13 @@ Roo.extend(Roo.form.BasicForm, Roo.util.Observable, { * @cfg {Boolean} fileUpload * Set to true if this form is a file upload. */ + /** * @cfg {Object} baseParams * Parameters to pass with all requests. e.g. baseParams: {id: '123', foo: 'bar'}. */ + /** + /** * @cfg {Number} timeout Timeout for form actions in seconds (default is 30 seconds). */ @@ -25935,7 +26031,7 @@ Roo.extend(Roo.form.BasicForm, Roo.util.Observable, { * element by passing it or its id or mask the form itself by passing in true. * @type Mixed */ - waitMsgTarget : undefined, + waitMsgTarget : false, // private initEl : function(el){ @@ -26058,42 +26154,50 @@ clientValidation Boolean Applies to submit only. Pass true to call fo // private beforeAction : function(action){ var o = action.options; - if(o.waitMsg){ - if(this.waitMsgTarget === true){ - this.el.mask(o.waitMsg, 'x-mask-loading'); - }else if(this.waitMsgTarget){ - this.waitMsgTarget = Roo.get(this.waitMsgTarget); - this.waitMsgTarget.mask(o.waitMsg, 'x-mask-loading'); - }else{ - Roo.MessageBox.wait(o.waitMsg, o.waitTitle || this.waitTitle || 'Please Wait...'); - } + + + if(this.waitMsgTarget === true){ + this.el.mask(o.waitMsg || "Sending", 'x-mask-loading'); + }else if(this.waitMsgTarget){ + this.waitMsgTarget = Roo.get(this.waitMsgTarget); + this.waitMsgTarget.mask(o.waitMsg || "Sending", 'x-mask-loading'); + }else { + Roo.MessageBox.wait(o.waitMsg || "Sending", o.waitTitle || this.waitTitle || 'Please Wait...'); } + }, // private afterAction : function(action, success){ this.activeAction = null; var o = action.options; - if(o.waitMsg){ - if(this.waitMsgTarget === true){ - this.el.unmask(); - }else if(this.waitMsgTarget){ - this.waitMsgTarget.unmask(); - }else{ - Roo.MessageBox.updateProgress(1); - Roo.MessageBox.hide(); - } + + if(this.waitMsgTarget === true){ + this.el.unmask(); + }else if(this.waitMsgTarget){ + this.waitMsgTarget.unmask(); + }else{ + Roo.MessageBox.updateProgress(1); + Roo.MessageBox.hide(); } + if(success){ if(o.reset){ this.reset(); } Roo.callback(o.success, o.scope, [this, action]); this.fireEvent('actioncomplete', this, action); + }else{ Roo.callback(o.failure, o.scope, [this, action]); + // show an error message if no failed handler is set.. + if (!this.hasListener('actionfailed')) { + Roo.MessageBox.alert("Error", "Saving Failed, please check your entries"); + } + this.fireEvent('actionfailed', this, action); } + }, /** @@ -26888,6 +26992,7 @@ Roo.form.Action.prototype = { // default connection failure failure : function(response){ + this.response = response; this.failureType = Roo.form.Action.CONNECT_FAILURE; this.form.afterAction(this, false); @@ -27036,6 +27141,7 @@ Roo.extend(Roo.form.Action.Submit, Roo.form.Action, { } + Roo.Ajax.request(Roo.apply(this.createCallback(), { form:this.form.el.dom, url:this.getUrl(!isPost), @@ -27059,6 +27165,7 @@ Roo.extend(Roo.form.Action.Submit, Roo.form.Action, { Roo.MessageBox.hide(); } + var result = this.processResponse(response); if(result === true || result.success){ this.form.afterAction(this, true); @@ -27077,6 +27184,7 @@ Roo.extend(Roo.form.Action.Submit, Roo.form.Action, { Roo.MessageBox.hide(); } + this.response = response; this.failureType = Roo.form.Action.CONNECT_FAILURE; this.form.afterAction(this, false); @@ -27125,6 +27233,7 @@ Roo.extend(Roo.form.Action.Load, Roo.form.Action, { type : 'load', run : function(){ + Roo.Ajax.request(Roo.apply( this.createCallback(), { method:this.getMethod(), @@ -27134,6 +27243,7 @@ Roo.extend(Roo.form.Action.Load, Roo.form.Action, { }, success : function(response){ + var result = this.processResponse(response); if(result === true || !result.success || !result.data){ this.failureType = Roo.form.Action.LOAD_FAILURE; @@ -30536,4 +30646,6844 @@ Roo.extend(Roo.SplitLayoutRegion, Roo.LayoutRegion, { break; } } -}); \ No newline at end of file +});/* + * 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 + *