r3024 committed - Dialog: Support hash, array, string for cursorAt option. Use position...

r3024 committed - Dialog: Support hash, array, string for cursorAt option. Use position...


Revision: 3024
Author: scott.gonzalez
Date: Mon Aug 3 07:28:54 2009
Log: Dialog: Support hash, array, string for cursorAt option. Use position
plugin. Partial fix for #2525 - Standardised way to pass coordinates to
plugins.
http://code.google.com/p/jquery-ui/source/detail?r=3024
Modified:
/trunk/demos/dialog/animated.html
/trunk/demos/dialog/default.html
/trunk/demos/dialog/modal-confirmation.html
/trunk/demos/dialog/modal-form.html
/trunk/demos/dialog/modal-message.html
/trunk/demos/dialog/modal.html
/trunk/ui/ui.dialog.js
=======================================
--- /trunk/demos/dialog/animated.html    Thu Jul 9 04:17:19 2009
+++ /trunk/demos/dialog/animated.html    Mon Aug 3 07:28:54 2009
@@ -6,6 +6,7 @@
    <script type="text/javascript" src="../../jquery-1.3.2.js"></script>
    <script type="text/javascript" src="../../ui/ui.core.js"></script>
    <script type="text/javascript" src="../../ui/ui.draggable.js"></script>
+    <script type="text/javascript" src="../../ui/ui.position.js"></script>
    <script type="text/javascript" src="../../ui/ui.resizable.js"></script>
    <script type="text/javascript" src="../../ui/ui.stackfix.js"></script>
    <script type="text/javascript" src="../../ui/ui.dialog.js"></script>
=======================================
--- /trunk/demos/dialog/default.html    Mon Jul 27 19:34:35 2009
+++ /trunk/demos/dialog/default.html    Mon Aug 3 07:28:54 2009
@@ -6,6 +6,7 @@
    <script type="text/javascript" src="../../jquery-1.3.2.js"></script>
    <script type="text/javascript" src="../../ui/ui.core.js"></script>
    <script type="text/javascript" src="../../ui/ui.draggable.js"></script>
+    <script type="text/javascript" src="../../ui/ui.position.js"></script>
    <script type="text/javascript" src="../../ui/ui.resizable.js"></script>
    <script type="text/javascript" src="../../ui/ui.stackfix.js"></script>
    <script type="text/javascript" src="../../ui/ui.dialog.js"></script>
=======================================
--- /trunk/demos/dialog/modal-confirmation.html    Sat Jul 11 07:00:08 2009
+++ /trunk/demos/dialog/modal-confirmation.html    Mon Aug 3 07:28:54 2009
@@ -6,6 +6,7 @@
    <script type="text/javascript" src="../../jquery-1.3.2.js"></script>
    <script type="text/javascript" src="../../ui/ui.core.js"></script>
    <script type="text/javascript" src="../../ui/ui.draggable.js"></script>
+    <script type="text/javascript" src="../../ui/ui.position.js"></script>
    <script type="text/javascript" src="../../ui/ui.resizable.js"></script>
    <script type="text/javascript" src="../../ui/ui.stackfix.js"></script>
    <script type="text/javascript" src="../../ui/ui.dialog.js"></script>
=======================================
--- /trunk/demos/dialog/modal-form.html    Sat Jul 11 07:00:08 2009
+++ /trunk/demos/dialog/modal-form.html    Mon Aug 3 07:28:54 2009
@@ -6,6 +6,7 @@
    <script type="text/javascript" src="../../jquery-1.3.2.js"></script>
    <script type="text/javascript" src="../../ui/ui.core.js"></script>
    <script type="text/javascript" src="../../ui/ui.draggable.js"></script>
+    <script type="text/javascript" src="../../ui/ui.position.js"></script>
    <script type="text/javascript" src="../../ui/ui.resizable.js"></script>
    <script type="text/javascript" src="../../ui/ui.stackfix.js"></script>
    <script type="text/javascript" src="../../ui/ui.dialog.js"></script>
=======================================
--- /trunk/demos/dialog/modal-message.html    Sat Jul 11 07:00:08 2009
+++ /trunk/demos/dialog/modal-message.html    Mon Aug 3 07:28:54 2009
@@ -6,6 +6,7 @@
    <script type="text/javascript" src="../../jquery-1.3.2.js"></script>
    <script type="text/javascript" src="../../ui/ui.core.js"></script>
    <script type="text/javascript" src="../../ui/ui.draggable.js"></script>
+    <script type="text/javascript" src="../../ui/ui.position.js"></script>
    <script type="text/javascript" src="../../ui/ui.resizable.js"></script>
    <script type="text/javascript" src="../../ui/ui.stackfix.js"></script>
    <script type="text/javascript" src="../../ui/ui.dialog.js"></script>
=======================================
--- /trunk/demos/dialog/modal.html    Sat Jul 11 07:00:08 2009
+++ /trunk/demos/dialog/modal.html    Mon Aug 3 07:28:54 2009
@@ -6,6 +6,7 @@
    <script type="text/javascript" src="../../jquery-1.3.2.js"></script>
    <script type="text/javascript" src="../../ui/ui.core.js"></script>
    <script type="text/javascript" src="../../ui/ui.draggable.js"></script>
+    <script type="text/javascript" src="../../ui/ui.position.js"></script>
    <script type="text/javascript" src="../../ui/ui.resizable.js"></script>
    <script type="text/javascript" src="../../ui/ui.stackfix.js"></script>
    <script type="text/javascript" src="../../ui/ui.dialog.js"></script>
=======================================
--- /trunk/ui/ui.dialog.js    Thu Jul 23 19:00:31 2009
+++ /trunk/ui/ui.dialog.js    Mon Aug 3 07:28:54 2009
@@ -10,6 +10,7 @@
* Depends:
*    ui.core.js
*    ui.draggable.js
+ *    ui.position.js
*    ui.resizable.js
*/
(function($) {
@@ -376,56 +377,50 @@
            : Math.min(options.minHeight, options.height));
    },
-    _position: function(pos) {
-        var wnd = $(window), doc = $(document),
-            pTop = doc.scrollTop(), pLeft = doc.scrollLeft(),
-            minTop = pTop,
-            uiDialog = this.uiDialog;
-
-        if ($.inArray(pos, ['center','top','right','bottom','left']) >= 0) {
-            pos = [
-                pos == 'right' || pos == 'left' ? pos : 'center',
-                pos == 'top' || pos == 'bottom' ? pos : 'middle'
-            ];
-        }
-        if (pos.constructor != Array) {
-            pos = ['center', 'middle'];
-        }
-        if (pos[0].constructor == Number) {
-            pLeft += pos[0];
-        } else {
-            switch (pos[0]) {
-                case 'left':
-                    pLeft += 0;
-                    break;
-                case 'right':
-                    pLeft += wnd.width() - uiDialog.outerWidth();
-                    break;
-                default:
-                case 'center':
-                    pLeft += (wnd.width() - uiDialog.outerWidth()) / 2;
-            }
-        }
-        if (pos[1].constructor == Number) {
-            pTop += pos[1];
+    _position: function(position) {
+        var myAt = [],
+            offset = [0, 0];
+
+        // deep extending converts arrays to objects in jQuery <= 1.3.2 :-(
+//        if (typeof position == 'string' || $.isArray(position)) {
+//            myAt = $.isArray(position) ? position : position.split(' ');
+        if (typeof position == 'string' || '0' in position) {
+            myAt = position.split ? position.split(' ') : [position[0],
position[1]];
+            if (myAt.length == 1) {
+                myAt[1] = myAt[0];
+            }
+
+            $.each(['left', 'top'], function(i, offsetPosition) {
+                if (+myAt[i] == myAt[i]) {
+                    offset[i] = myAt[i];
+                    myAt[i] = offsetPosition;
+                }
+            });
        } else {
-            switch (pos[1]) {
-                case 'top':
-                    pTop += 0;
-                    break;
-                case 'bottom':
-                    pTop += wnd.height() - uiDialog.outerHeight();
-                    break;
-                default:
-                case 'middle':
-                    pTop += (wnd.height() - uiDialog.outerHeight()) / 2;
+            if ('left' in position) {
+                myAt[0] = 'left';
+                offset[0] = position.left;
+            } else if ('right' in position) {
+                myAt[0] = 'right';
+                offset[0] = -position.right;
+            }
+
+            if ('top' in position) {
+                myAt[1] = 'top';
+                offset[1] = position.top;
+            } else if ('bottom' in position) {
+                myAt[1] = 'bottom';
+                offset[1] = -position.bottom;
            }
        }
-        // prevent the dialog from being too high (make sure the titlebar
-        // is accessible)
-        pTop = Math.max(pTop, minTop);
-        uiDialog.css({top: pTop, left: pLeft});
+        this.uiDialog.position({
+            my: myAt.join(' '),
+            at: myAt.join(' '),
+            offset: offset.join(' '),
+            of: window,
+            collision: 'fit'
+        });
    },
    _setData: function(key, value){