Skip to content
Permalink
Browse files

Dialog: Restructured button creation and fixed the problem with not b…

…eing able to change the buttons after instantiation.
  • Loading branch information
scottgonzalez committed Jun 26, 2008
1 parent 173edda commit 93c2dfff7194fe7e45e6bd0bf4863d8604dab0bb
Showing with 30 additions and 14 deletions.
  1. +30 −14 ui/ui.dialog.js
@@ -77,7 +77,11 @@ $.widget("ui.dialog", {
})
.mousedown(function() {
self.moveToTop();
});
}),

uiDialogButtonPane = (this.uiDialogButtonPane = $('<div/>'))
.addClass('ui-dialog-buttonpane')
.appendTo(uiDialog);

this.uiDialogTitlebarClose = $('.ui-dialog-titlebar-close', uiDialogTitlebar)
.hover(
@@ -96,19 +100,6 @@ $.widget("ui.dialog", {
return false;
});

var hasButtons = false;
$.each(options.buttons, function() { return !(hasButtons = true); });
if (hasButtons) {
var uiDialogButtonPane = $('<div class="ui-dialog-buttonpane"/>')
.appendTo(uiDialog);
$.each(options.buttons, function(name, fn) {
$('<button/>')
.text(name)
.click(function() { fn.apply(self.element[0], arguments); })
.appendTo(uiDialogButtonPane);
});
}

if ($.fn.draggable) {
uiDialog.draggable({
helper: options.dragHelper,
@@ -152,13 +143,18 @@ $.widget("ui.dialog", {
(options.resizable || uiDialog.resizable('disable'));
}

this.createButtons(options.buttons);

(options.bgiframe && $.fn.bgiframe && uiDialog.bgiframe());
(options.autoOpen && this.open());
},

setData: function(key, value){
(setDataSwitch[key] && this.uiDialog.data(setDataSwitch[key], value));
switch (key) {
case "buttons":
this.createButtons(value);
break;
case "draggable":
this.uiDialog.draggable(value ? 'enable' : 'disable');
break;
@@ -296,6 +292,26 @@ $.widget("ui.dialog", {
.removeClass('ui-dialog-content')
.hide().appendTo('body');
this.uiDialog.remove();
},

createButtons: function(buttons) {
var self = this,
hasButtons = false,
uiDialogButtonPane = this.uiDialogButtonPane;

// remove any existing buttons
uiDialogButtonPane.empty().hide();

$.each(buttons, function() { return !(hasButtons = true); });
if (hasButtons) {
uiDialogButtonPane.show();
$.each(buttons, function(name, fn) {
$('<button/>')
.text(name)
.click(function() { fn.apply(self.element[0], arguments); })
.appendTo(uiDialogButtonPane);
});
}
}
});

0 comments on commit 93c2dff

Please sign in to comment.
You can’t perform that action at this time.