fixing defaults/options for enhanced widgets

This commit is contained in:
Rolux 2010-02-20 15:26:33 +05:30
parent 4f2dc7dd53
commit ef8c8eed37
2 changed files with 75 additions and 5 deletions

View file

@ -871,6 +871,7 @@ requires
that.defaults({foo: x}) sets self.defaults that.defaults({foo: x}) sets self.defaults
*/ */
self.defaults = defaults; self.defaults = defaults;
delete self.options; // fixme: hackish fix for that = OxFoo({}, self).defaults({...}).options({...})
return that; return that;
}; };
that.gainFocus = function() { that.gainFocus = function() {
@ -907,11 +908,11 @@ requires
// options (str, val) or options({str: val, ...}) // options (str, val) or options({str: val, ...})
// translate (str, val) to ({str: val}) // translate (str, val) to ({str: val})
args = Ox.makeObject.apply(that, arguments); args = Ox.makeObject.apply(that, arguments);
// if options have not been set, extend defaults,
// otherwise, extend options
/* /*
options = self.options; options = self.options;
*/ */
// if options have not been set, extend defaults,
// otherwise, extend options
self.options = $.extend(self.options || self.defaults, args); self.options = $.extend(self.options || self.defaults, args);
$.each(args, function(key, value) { $.each(args, function(key, value) {
self.onChange(key, value); self.onChange(key, value);
@ -1322,7 +1323,8 @@ requires
that.remove(); that.remove();
that.$layer.remove(); that.$layer.remove();
callback(); callback();
}) });
return that;
} }
that.disable = function() { that.disable = function() {
@ -1335,7 +1337,9 @@ requires
} }
that.open = function() { that.open = function() {
Ox.print("opening...")
that.$layer.appendTo($body); that.$layer.appendTo($body);
Ox.print("opening...")
that.css({ that.css({
opacity: 0 opacity: 0
}).appendTo(that.$layer).animate({ }).appendTo(that.$layer).animate({
@ -1358,11 +1362,52 @@ requires
var self = self || {}, var self = self || {},
that = new Ox.Element("div", self) that = new Ox.Element("div", self)
.defaults() .defaults({
.options(); items: []
})
.options(options || {}); // fixme: the || {} can be done once, in the options function
$.each(self.options.items, function(i, item) {
});
that.values = function() {
var values = {};
if (arguments.length == 0) {
$.each(self.options.items, function(i, item) {
values[item.id] = item.val();
});
return values;
} else {
$.each(arguments[0], function(key, value) {
});
return that;
}
};
return that;
}; };
Ox.FormItem = function(options, self) {
var self = self || {},
that = new Ox.Element("", self)
.defaults({
error: "",
regexp: / /,
size: "medium",
type: "text"
})
.options(options || {});
that.$input = new OxInput();
return that;
}
/* /*
---------------------------------------------------------------------------- ----------------------------------------------------------------------------
Ox.Button Ox.Button
@ -2225,6 +2270,7 @@ requires
that.bindEvent("hide_" + that.menus[position].options("id"), onHideMenu); that.bindEvent("hide_" + that.menus[position].options("id"), onHideMenu);
}); });
Ox.print(self.options)
if (self.options.extras.length) { if (self.options.extras.length) {
that.extras = $("<div>") that.extras = $("<div>")
.addClass("OxExtras") .addClass("OxExtras")

View file

@ -127,6 +127,15 @@
{ id: "contact", title: "Contact"} { id: "contact", title: "Contact"}
] ]
}, },
{
id: "user",
title: "User",
items: [
{ disabled: true, id: "user", title: "User: not logged in"},
{},
{ id: "login", title: "Login" }
]
},
{ {
id: "file", id: "file",
title: "File", title: "File",
@ -183,6 +192,21 @@
loadingIcon.stop(); loadingIcon.stop();
}, 5000); }, 5000);
}); });
var loginDialog = new Ox.Dialog({
buttons: [
{ value: "Register", click: function() { loginDialog.close(); } },
{ value: "Reset Password", click: function() { loginDialog.close(); } },
{ value: "Cancel", click: function() { loginDialog.close(); } },
{ value: "Login", click: function() { loginDialog.close(); } }
],
title: "Login"
});
Ox.Event.bind(null, "click_login", function() {
loginDialog.open();
});
var bottomPanel = Ox.Bar({size: "small"}) var bottomPanel = Ox.Bar({size: "small"})
.css({ .css({
zIndex: 2, zIndex: 2,