Search and Top Navigation
Ticket #2999: ui.dialog.js.patch
File ui.dialog.js.patch, 3.5 KB (added by ivan, June 13, 2008 12:24AM UTC)
--- a/ui.dialog.js
+++ b/ui.dialog.js
@@ -47,9 +47,11 @@ $.widget("ui.dialog", {
title = options.title || uiDialogContent.attr('title') || '',
uiDialogTitlebar = (this.uiDialogTitlebar =
$(''))
- .append('' + title + '')
- .append('X')
- .prependTo(uiDialogContainer),
+ .append('' + title + '');
+ if (options.maximizable)
+ uiDialogTitlebar.append('+');
+ uiDialogTitlebar.append('X')
+ .prependTo(uiDialogContainer);
uiDialog = (this.uiDialog = uiDialogContainer.parent())
.appendTo(document.body)
@@ -95,6 +97,23 @@ $.widget("ui.dialog", {
self.close();
return false;
});
+ if (options.maximizable){
+ this.uiDialogTitlebarMaximize = $('.ui-dialog-titlebar-maximize', uiDialogTitlebar)
+ .hover(
+ function() {
+ $(this).addClass('ui-dialog-titlebar-maximize-hover');
+ },
+ function() {
+ $(this).removeClass('ui-dialog-titlebar-maximize-hover');
+ }
+ )
+ .mousedown(function(ev){ ev.stopPropagation(); })
+ .click(function() {
+ self.toggleMaximize();
+ return false;
+ });
+ }
+
var hasButtons = false;
$.each(options.buttons, function() { return !(hasButtons = true); });
@@ -266,6 +285,49 @@ $.widget("ui.dialog", {
$.ui.dialog.overlay.resize();
},
+ toggleMaximize: function(){
+ this.maximized ? this.unMaximize() : this.maximize();
+ },
+
+ maximize: function(){
+ var self = this;
+ this.uiDialog.addClass('maximized');
+ this.preMaximize = {
+ top: this.uiDialog.css('top'),
+ left: this.uiDialog.css('left'),
+ width: this.uiDialog.width(),
+ height: this.uiDialog.height()
+ };
+ $.each(['margin-left', 'margin-right', 'margin-top', 'margin-bottom', 'margin',
+ 'padding-left', 'padding-right', 'padding-top', 'padding-bottom', 'padding'], function(i, attr){
+ self.preMaximize[attr] = self.uiDialog.css(attr);
+ self.uiDialog.css(attr, 0);
+ });
+ this.position(['left', 'top']);
+ var wnd = $(window);
+ this.uiDialog.width(wnd.width()).height(wnd.height())
+ .resizable('disable').draggable('disable');
+ $.ui.dialog.overlay.resize();
+ this.uiDialog.trigger('resize');
+ this.maximized = true;
+ },
+
+ unMaximize: function(){
+ var self = this;
+ this.uiDialog.removeClass('maximized');
+ this.uiDialog.width(this.preMaximize.width).height(this.preMaximize.height);
+ this.position([this.preMaximize.left, this.preMaximize.top]);
+ $.each(['margin-left', 'margin-right', 'margin-top', 'margin-bottom', 'margin',
+ 'padding-left', 'padding-right', 'padding-top', 'padding-bottom', 'padding'], function(i, attr){
+ self.uiDialog.css(attr, self.preMaximize[attr]);
+ });
+ (this.options.resizable && this.uiDialog.resizable('enable'));
+ (this.options.draggable && this.uiDialog.draggable('enable'));
+ $.ui.dialog.overlay.resize();
+ this.uiDialog.trigger('resize');
+ this.maximized = false;
+ },
+
destroy: function() {
(this.overlay && this.overlay.destroy());
this.uiDialog.hide();
Download in other formats:
Original Format
File ui.dialog.js.patch, 3.5 KB (added by ivan, June 13, 2008 12:24AM UTC)
--- a/ui.dialog.js
+++ b/ui.dialog.js
@@ -47,9 +47,11 @@ $.widget("ui.dialog", {
title = options.title || uiDialogContent.attr('title') || '',
uiDialogTitlebar = (this.uiDialogTitlebar =
$(''))
- .append('' + title + '')
- .append('X')
- .prependTo(uiDialogContainer),
+ .append('' + title + '');
+ if (options.maximizable)
+ uiDialogTitlebar.append('+');
+ uiDialogTitlebar.append('X')
+ .prependTo(uiDialogContainer);
uiDialog = (this.uiDialog = uiDialogContainer.parent())
.appendTo(document.body)
@@ -95,6 +97,23 @@ $.widget("ui.dialog", {
self.close();
return false;
});
+ if (options.maximizable){
+ this.uiDialogTitlebarMaximize = $('.ui-dialog-titlebar-maximize', uiDialogTitlebar)
+ .hover(
+ function() {
+ $(this).addClass('ui-dialog-titlebar-maximize-hover');
+ },
+ function() {
+ $(this).removeClass('ui-dialog-titlebar-maximize-hover');
+ }
+ )
+ .mousedown(function(ev){ ev.stopPropagation(); })
+ .click(function() {
+ self.toggleMaximize();
+ return false;
+ });
+ }
+
var hasButtons = false;
$.each(options.buttons, function() { return !(hasButtons = true); });
@@ -266,6 +285,49 @@ $.widget("ui.dialog", {
$.ui.dialog.overlay.resize();
},
+ toggleMaximize: function(){
+ this.maximized ? this.unMaximize() : this.maximize();
+ },
+
+ maximize: function(){
+ var self = this;
+ this.uiDialog.addClass('maximized');
+ this.preMaximize = {
+ top: this.uiDialog.css('top'),
+ left: this.uiDialog.css('left'),
+ width: this.uiDialog.width(),
+ height: this.uiDialog.height()
+ };
+ $.each(['margin-left', 'margin-right', 'margin-top', 'margin-bottom', 'margin',
+ 'padding-left', 'padding-right', 'padding-top', 'padding-bottom', 'padding'], function(i, attr){
+ self.preMaximize[attr] = self.uiDialog.css(attr);
+ self.uiDialog.css(attr, 0);
+ });
+ this.position(['left', 'top']);
+ var wnd = $(window);
+ this.uiDialog.width(wnd.width()).height(wnd.height())
+ .resizable('disable').draggable('disable');
+ $.ui.dialog.overlay.resize();
+ this.uiDialog.trigger('resize');
+ this.maximized = true;
+ },
+
+ unMaximize: function(){
+ var self = this;
+ this.uiDialog.removeClass('maximized');
+ this.uiDialog.width(this.preMaximize.width).height(this.preMaximize.height);
+ this.position([this.preMaximize.left, this.preMaximize.top]);
+ $.each(['margin-left', 'margin-right', 'margin-top', 'margin-bottom', 'margin',
+ 'padding-left', 'padding-right', 'padding-top', 'padding-bottom', 'padding'], function(i, attr){
+ self.uiDialog.css(attr, self.preMaximize[attr]);
+ });
+ (this.options.resizable && this.uiDialog.resizable('enable'));
+ (this.options.draggable && this.uiDialog.draggable('enable'));
+ $.ui.dialog.overlay.resize();
+ this.uiDialog.trigger('resize');
+ this.maximized = false;
+ },
+
destroy: function() {
(this.overlay && this.overlay.destroy());
this.uiDialog.hide();