aboutsummaryrefslogtreecommitdiffstats
path: root/ui/ui.dialog.js
diff options
context:
space:
mode:
authorScott González <scott.gonzalez@gmail.com>2008-09-14 14:49:28 +0000
committerScott González <scott.gonzalez@gmail.com>2008-09-14 14:49:28 +0000
commitee30dbbd216065aeee60cddf3ab04e9fa3eee564 (patch)
tree9720b06c050fd835cf6a12b0fe324dc3eacdc0e6 /ui/ui.dialog.js
parent608cab6e3bc43475305cddd4bc50cba6e18069a8 (diff)
downloadjquery-ui-ee30dbbd216065aeee60cddf3ab04e9fa3eee564.tar.gz
jquery-ui-ee30dbbd216065aeee60cddf3ab04e9fa3eee564.zip
Dialog: Reordered functions.
Diffstat (limited to 'ui/ui.dialog.js')
-rw-r--r--ui/ui.dialog.js328
1 files changed, 164 insertions, 164 deletions
diff --git a/ui/ui.dialog.js b/ui/ui.dialog.js
index ec38a983d..57bad1193 100644
--- a/ui/ui.dialog.js
+++ b/ui/ui.dialog.js
@@ -121,6 +121,113 @@ $.widget("ui.dialog", {
(options.autoOpen && this.open());
},
+ destroy: function() {
+ (this.overlay && this.overlay.destroy());
+ this.uiDialog.hide();
+ this.element
+ .unbind('.dialog')
+ .removeData('dialog')
+ .removeClass('ui-dialog-content')
+ .hide().appendTo('body');
+ this.uiDialog.remove();
+
+ (this.originalTitle && this.element.attr('title', this.originalTitle));
+ },
+
+ close: function() {
+ (this.overlay && this.overlay.destroy());
+ this.uiDialog
+ .hide(this.options.hide)
+ .unbind('keypress.ui-dialog');
+
+ this._trigger('close', null, { options: this.options });
+ $.ui.dialog.overlay.resize();
+
+ this._isOpen = false;
+ },
+
+ isOpen: function() {
+ return this._isOpen;
+ },
+
+ open: function() {
+ if (this._isOpen) { return; }
+
+ this.overlay = this.options.modal ? new $.ui.dialog.overlay(this) : null;
+ (this.uiDialog.next().length && this.uiDialog.appendTo('body'));
+ this._position(this.options.position);
+ this.uiDialog.show(this.options.show);
+ (this.options.autoResize && this._size());
+ this._moveToTop(true);
+
+ // prevent tabbing out of modal dialogs
+ (this.options.modal && this.uiDialog.bind('keypress.ui-dialog', function(e) {
+ if (e.keyCode != $.keyCode.TAB) {
+ return;
+ }
+
+ var tabbables = $(':tabbable', this),
+ first = tabbables.filter(':first')[0],
+ last = tabbables.filter(':last')[0];
+
+ if (e.target == last && !e.shiftKey) {
+ setTimeout(function() {
+ first.focus();
+ }, 1);
+ } else if (e.target == first && e.shiftKey) {
+ setTimeout(function() {
+ last.focus();
+ }, 1);
+ }
+ }));
+
+ this.uiDialog.find(':tabbable:first').focus();
+ this._trigger('open', null, { options: this.options });
+ this._isOpen = true;
+ },
+
+ _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 type="button"></button>')
+ .text(name)
+ .click(function() { fn.apply(self.element[0], arguments); })
+ .appendTo(uiDialogButtonPane);
+ });
+ }
+ },
+
+ _makeDraggable: function() {
+ var self = this,
+ options = this.options;
+
+ this.uiDialog.draggable({
+ cancel: '.ui-dialog-content',
+ helper: options.dragHelper,
+ handle: '.ui-dialog-titlebar',
+ start: function() {
+ self._moveToTop();
+ (options.dragStart && options.dragStart.apply(self.element[0], arguments));
+ },
+ drag: function() {
+ (options.drag && options.drag.apply(self.element[0], arguments));
+ },
+ stop: function() {
+ (options.dragStop && options.dragStop.apply(self.element[0], arguments));
+ $.ui.dialog.overlay.resize();
+ }
+ });
+ },
+
_makeResizable: function(handles) {
handles = (handles === undefined ? this.options.resizable : handles);
var self = this,
@@ -152,69 +259,23 @@ $.widget("ui.dialog", {
});
},
- _makeDraggable: function() {
- var self = this,
- options = this.options;
+ // the force parameter allows us to move modal dialogs to their correct
+ // position on open
+ _moveToTop: function(force) {
- this.uiDialog.draggable({
- cancel: '.ui-dialog-content',
- helper: options.dragHelper,
- handle: '.ui-dialog-titlebar',
- start: function() {
- self._moveToTop();
- (options.dragStart && options.dragStart.apply(self.element[0], arguments));
- },
- drag: function() {
- (options.drag && options.drag.apply(self.element[0], arguments));
- },
- stop: function() {
- (options.dragStop && options.dragStop.apply(self.element[0], arguments));
- $.ui.dialog.overlay.resize();
- }
- });
- },
-
- _setData: function(key, value){
- (setDataSwitch[key] && this.uiDialog.data(setDataSwitch[key], value));
- switch (key) {
- case "buttons":
- this._createButtons(value);
- break;
- case "draggable":
- (value
- ? this._makeDraggable()
- : this.uiDialog.draggable('destroy'));
- break;
- case "height":
- this.uiDialog.height(value);
- break;
- case "position":
- this._position(value);
- break;
- case "resizable":
- var uiDialog = this.uiDialog,
- isResizable = this.uiDialog.is(':data(resizable)');
-
- // currently resizable, becoming non-resizable
- (isResizable && !value && uiDialog.resizable('destroy'));
-
- // currently resizable, changing handles
- (isResizable && typeof value == 'string' &&
- uiDialog.resizable('option', 'handles', value));
-
- // currently non-resizable, becoming resizable
- (isResizable || this._makeResizable(value));
-
- break;
- case "title":
- $(".ui-dialog-title", this.uiDialogTitlebar).html(value || '&nbsp;');
- break;
- case "width":
- this.uiDialog.width(value);
- break;
+ if ((this.options.modal && !force)
+ || (!this.options.stack && !this.options.modal)) {
+ return this._trigger('focus', null, { options: this.options });
}
- $.widget.prototype._setData.apply(this, arguments);
+ var maxZ = this.options.zIndex, options = this.options;
+ $('.ui-dialog:visible').each(function() {
+ maxZ = Math.max(maxZ, parseInt($(this).css('z-index'), 10) || options.zIndex);
+ });
+ (this.overlay && this.overlay.$el.css('z-index', ++maxZ));
+ this.uiDialog.css('z-index', ++maxZ);
+
+ this._trigger('focus', null, { options: this.options });
},
_position: function(pos) {
@@ -268,6 +329,49 @@ $.widget("ui.dialog", {
this.uiDialog.css({top: pTop, left: pLeft});
},
+ _setData: function(key, value){
+ (setDataSwitch[key] && this.uiDialog.data(setDataSwitch[key], value));
+ switch (key) {
+ case "buttons":
+ this._createButtons(value);
+ break;
+ case "draggable":
+ (value
+ ? this._makeDraggable()
+ : this.uiDialog.draggable('destroy'));
+ break;
+ case "height":
+ this.uiDialog.height(value);
+ break;
+ case "position":
+ this._position(value);
+ break;
+ case "resizable":
+ var uiDialog = this.uiDialog,
+ isResizable = this.uiDialog.is(':data(resizable)');
+
+ // currently resizable, becoming non-resizable
+ (isResizable && !value && uiDialog.resizable('destroy'));
+
+ // currently resizable, changing handles
+ (isResizable && typeof value == 'string' &&
+ uiDialog.resizable('option', 'handles', value));
+
+ // currently non-resizable, becoming resizable
+ (isResizable || this._makeResizable(value));
+
+ break;
+ case "title":
+ $(".ui-dialog-title", this.uiDialogTitlebar).html(value || '&nbsp;');
+ break;
+ case "width":
+ this.uiDialog.width(value);
+ break;
+ }
+
+ $.widget.prototype._setData.apply(this, arguments);
+ },
+
_size: function() {
var container = this.uiDialogContainer,
titlebar = this.uiDialogTitlebar,
@@ -278,110 +382,6 @@ $.widget("ui.dialog", {
+ (parseInt(content.css('margin-right'), 10) || 0);
content.height(container.height() - titlebar.outerHeight() - tbMargin);
content.width(container.width() - lrMargin);
- },
-
- open: function() {
- if (this._isOpen) { return; }
-
- this.overlay = this.options.modal ? new $.ui.dialog.overlay(this) : null;
- (this.uiDialog.next().length && this.uiDialog.appendTo('body'));
- this._position(this.options.position);
- this.uiDialog.show(this.options.show);
- (this.options.autoResize && this._size());
- this._moveToTop(true);
-
- // prevent tabbing out of modal dialogs
- (this.options.modal && this.uiDialog.bind('keypress.ui-dialog', function(e) {
- if (e.keyCode != $.keyCode.TAB) {
- return;
- }
-
- var tabbables = $(':tabbable', this),
- first = tabbables.filter(':first')[0],
- last = tabbables.filter(':last')[0];
-
- if (e.target == last && !e.shiftKey) {
- setTimeout(function() {
- first.focus();
- }, 1);
- } else if (e.target == first && e.shiftKey) {
- setTimeout(function() {
- last.focus();
- }, 1);
- }
- }));
-
- this.uiDialog.find(':tabbable:first').focus();
- this._trigger('open', null, { options: this.options });
- this._isOpen = true;
- },
-
- // the force parameter allows us to move modal dialogs to their correct
- // position on open
- _moveToTop: function(force) {
-
- if ((this.options.modal && !force)
- || (!this.options.stack && !this.options.modal)) {
- return this._trigger('focus', null, { options: this.options });
- }
-
- var maxZ = this.options.zIndex, options = this.options;
- $('.ui-dialog:visible').each(function() {
- maxZ = Math.max(maxZ, parseInt($(this).css('z-index'), 10) || options.zIndex);
- });
- (this.overlay && this.overlay.$el.css('z-index', ++maxZ));
- this.uiDialog.css('z-index', ++maxZ);
-
- this._trigger('focus', null, { options: this.options });
- },
-
- close: function() {
- (this.overlay && this.overlay.destroy());
- this.uiDialog
- .hide(this.options.hide)
- .unbind('keypress.ui-dialog');
-
- this._trigger('close', null, { options: this.options });
- $.ui.dialog.overlay.resize();
-
- this._isOpen = false;
- },
-
- destroy: function() {
- (this.overlay && this.overlay.destroy());
- this.uiDialog.hide();
- this.element
- .unbind('.dialog')
- .removeData('dialog')
- .removeClass('ui-dialog-content')
- .hide().appendTo('body');
- this.uiDialog.remove();
-
- (this.originalTitle && this.element.attr('title', this.originalTitle));
- },
-
- _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 type="button"></button>')
- .text(name)
- .click(function() { fn.apply(self.element[0], arguments); })
- .appendTo(uiDialogButtonPane);
- });
- }
- },
-
- isOpen: function() {
- return this._isOpen;
}
});