Core: Exposed the base widget prototype; Adding/removing disabled classes automatically.

Draggable, Droppable, Resizable, Selectable, Sortable: Removed unneeded enable/disable methods.
Dialog: Delegating standard functionality for setData to the widget prototype.
This commit is contained in:
Scott González 2008-06-04 19:51:59 +00:00
parent f17737b2d4
commit 98f42fc802
7 changed files with 31 additions and 59 deletions

View File

@ -84,30 +84,10 @@ function getter(namespace, plugin, method) {
return ($.inArray(method, methods) != -1); return ($.inArray(method, methods) != -1);
} }
var widgetPrototype = {
init: function() {},
destroy: function() {
this.element.removeData(this.widgetName);
},
getData: function(key) {
return this.options[key];
},
setData: function(key, value) {
this.options[key] = value;
},
enable: function() {
this.setData('disabled', false);
},
disable: function() {
this.setData('disabled', true);
}
};
$.widget = function(name, prototype) { $.widget = function(name, prototype) {
var namespace = name.split(".")[0]; var namespace = name.split(".")[0];
name = name.split(".")[1]; name = name.split(".")[1];
// create plugin method // create plugin method
$.fn[name] = function(options) { $.fn[name] = function(options) {
var isMethodCall = (typeof options == 'string'), var isMethodCall = (typeof options == 'string'),
@ -134,6 +114,7 @@ $.widget = function(name, prototype) {
var self = this; var self = this;
this.widgetName = name; this.widgetName = name;
this.widgetBaseClass = namespace + '-' + name;
this.options = $.extend({}, $[namespace][name].defaults, options); this.options = $.extend({}, $[namespace][name].defaults, options);
this.element = $(element) this.element = $(element)
@ -150,7 +131,33 @@ $.widget = function(name, prototype) {
}; };
// add widget prototype // add widget prototype
$[namespace][name].prototype = $.extend({}, widgetPrototype, prototype); $[namespace][name].prototype = $.extend({}, $.widget.prototype, prototype);
};
$.widget.prototype = {
init: function() {},
destroy: function() {
this.element.removeData(this.widgetName);
},
getData: function(key) {
return this.options[key];
},
setData: function(key, value) {
this.options[key] = value;
if (key == 'disabled') {
this.element[value ? 'addClass' : 'removeClass'](
this.widgetBaseClass + '-disabled');
}
},
enable: function() {
this.setData('disabled', false);
},
disable: function() {
this.setData('disabled', true);
}
}; };

View File

@ -171,7 +171,8 @@ $.widget("ui.dialog", {
this.uiDialog.width(value); this.uiDialog.width(value);
break; break;
} }
this.options[key] = value;
$.widget.prototype.setData.apply(this, arguments);
}, },
position: function(pos) { position: function(pos) {

View File

@ -30,10 +30,6 @@ $.widget("ui.draggable", $.extend($.ui.mouse, {
this.mouseInit(); this.mouseInit();
}, },
setData: function(key, value) {
(key == 'disabled' && this.element[(value ? 'add' : 'remove') + 'Class']('ui-draggable-disabled'));
this.options[key] = value;
},
mouseStart: function(e) { mouseStart: function(e) {
var o = this.options; var o = this.options;

View File

@ -59,14 +59,6 @@ $.widget("ui.droppable", {
.removeData("droppable") .removeData("droppable")
.unbind(".droppable"); .unbind(".droppable");
}, },
enable: function() {
this.element.removeClass("ui-droppable-disabled");
this.options.disabled = false;
},
disable: function() {
this.element.addClass("ui-droppable-disabled");
this.options.disabled = true;
},
over: function(e) { over: function(e) {
var draggable = $.ui.ddmanager.current; var draggable = $.ui.ddmanager.current;

View File

@ -248,14 +248,6 @@ $.widget("ui.resizable", $.extend($.ui.mouse, {
_destroy(wrapped); _destroy(wrapped);
} }
}, },
enable: function() {
this.element.removeClass("ui-resizable-disabled");
this.options.disabled = false;
},
disable: function() {
this.element.addClass("ui-resizable-disabled");
this.options.disabled = true;
},
mouseStart: function(e) { mouseStart: function(e) {
if(this.options.disabled) return false; if(this.options.disabled) return false;

View File

@ -65,14 +65,6 @@ $.widget("ui.selectable", $.extend($.ui.mouse, {
.unbind(".selectable"); .unbind(".selectable");
this.mouseDestroy(); this.mouseDestroy();
}, },
enable: function() {
this.element.removeClass("ui-selectable-disabled");
this.options.disabled = false;
},
disable: function() {
this.element.addClass("ui-selectable-disabled");
this.options.disabled = true;
},
mouseStart: function(e) { mouseStart: function(e) {
var self = this; var self = this;

View File

@ -86,14 +86,6 @@ $.widget("ui.sortable", $.extend($.ui.mouse, {
items.each(function() { ret.push($(this).attr(attr || 'id')); }); items.each(function() { ret.push($(this).attr(attr || 'id')); });
return ret; return ret;
}, },
enable: function() {
this.element.removeClass("ui-sortable-disabled");
this.options.disabled = false;
},
disable: function() {
this.element.addClass("ui-sortable-disabled");
this.options.disabled = true;
},
/* Be careful with the following core functions */ /* Be careful with the following core functions */
intersectsWith: function(item) { intersectsWith: function(item) {