r2748 - spinner: consolidated bindings on spin buttons and added more TR styles for hover and focus

r2748 - spinner: consolidated bindings on spin buttons and added more TR styles for hover and focus


Author: pazu2k@gmail.com
Date: Sat Jun 13 10:12:25 2009
New Revision: 2748
Modified:
branches/dev/spinner/ui/ui.spinner.js
Log:
spinner: consolidated bindings on spin buttons and added more TR styles for
hover and focus
Modified: branches/dev/spinner/ui/ui.spinner.js
==============================================================================
--- branches/dev/spinner/ui/ui.spinner.js    (original)
+++ branches/dev/spinner/ui/ui.spinner.js    Sat Jun 13 10:12:25 2009
@@ -91,60 +91,16 @@
                
        // add behaviours
        widget
-            .find('.ui-spinner-up')
-                .bind('mousedown', function(event) {
-                    $(this).addClass(active);
-                    if (!self.counter) {
-                        self.counter = 1;
-                    }
-                    self._mousedown(100, '_up', event);
-                })
-                .bind('mouseup', function(event) {
-                    $(this).removeClass(active);
-                    if (self.counter == 1) {
-                        self._up(options.step, event);
-                    }
-                    self._mouseup(event);
-                })
-                // mousedown/mouseup capture first click, now handle second click
-                .bind('dblclick', function(event) {
-                    if ($.browser.msie) {
-                        $(this).removeClass(active);
-                        self._up(options.step, event);
-                        self._mouseup(event);
-                    }
-                })
-            .end()
-            .find('.ui-spinner-down')
-                .bind('mousedown', function(event) {
-                    $(this).addClass(active);
-                    if (!self.counter) {
-                        self.counter = 1;
-                    }
-                    self._mousedown(100, '_down', event);
-                })
-                .bind('mouseup', function(event) {
-                    $(this).removeClass(active);
-                    if (self.counter == 1) {
-                        self._down(options.step, event);
-                    }
-                    self._mouseup(event);
-                })
-                // mousedown/mouseup capture first click, now handle second click in IE
-                .bind('dblclick', function(event) {
-                    if ($.browser.msie) {
-                        $(this).removeClass(active);
-                        self._down(options.step, event);
-                        self._mouseup(event);
-                    }
-                })
-            .end()
            .hover(function() {
+                if (!options.readOnly && !self.disabled) {
+                    $(this).addClass(hover);
+                }
                self.hovered = true;
                if (typeof options.hide != 'boolean' && !self.focused
&& !self.disabled) {
                    self._delay(self._show, 100, 'hide', options.hide);
                }
            }, function() {
+                $(this).removeClass(hover);
                self.hovered = false;
                if (typeof options.hide != 'boolean' && !self.focused) {
                    self._delay(self._hide, 100, 'hide', options.hide);
@@ -152,14 +108,46 @@
            });
        
        self.buttons = widget.find('.ui-spinner-button')
+            .bind('mousedown', function(event) {
+                if (!self.counter) {
+                    self.counter = 1;
+                }
+                self._mousedown(100,
$(this).hasClass('ui-spinner-up') ? '_up' : '_down', event);
+                
+                if (!self.disabled) {
+                    $(this).addClass(active);
+                    if (!options.readOnly) {
+                        widget.addClass(active);
+                    }                    
+                }
+            })
+            .bind('mouseup', function(event) {
+                if (self.counter == 1) {
+                    
self[$(this).hasClass('ui-spinner-up') ? '_up' : '_down'](options.step,
event);
+                }
+                self._mouseup(event);
+                
+                $(this).removeClass(active);
+            })
+            // mousedown/mouseup capture first click, now handle second click
+            .bind('dblclick', function(event) {
+                if ($.browser.msie) {
+                    $(this).removeClass(active);
+                    
self[$(this).hasClass('ui-spinner-up') ? '_up' : '_down'](options.step,
event);
+                    self._mouseup(event);
+                }
+            })
            .hover(function() {
-                $(this).addClass(hover);
+                if (!self.disabled) {
+                    $(this).addClass(hover);                    
+                }
            }, function(event) {
                $(this).removeClass(active + ' ' + hover);
                if (self.timer) {
                    self._mouseup(event);
                }
            });
+            
        if (options.hide) {
            self._hide();
        }
@@ -203,13 +191,14 @@
                self.element.blur();
                return false;
            }
-
+            widget.addClass(active);
            self.focused = true;
            if (!self.hovered && typeof options.hide != 'boolean'
&& !self.disabled) {
                self._delay(self._show, 100, 'hide', options.hide);
            }
        })
        .bind('blur'+namespace, function(event) {
+            widget.removeClass(active);
            self.focused = false;
            if (!self.hovered && typeof options.hide != 'boolean') {
                self._delay(self._hide, 100, 'hide', options.hide);
@@ -235,7 +224,7 @@
            dir = options.dir,
            spinnerClass = options.spinnerClass,
            spinnerBoxClass = 'ui-spinner-box',
-            widgetClasses = 'ui-spinner ui-widget ui-widget-content ui-corner-all
ui-spinner-' + dir + (spinnerClass ? ' '+ spinnerClass: ''),
+            widgetClasses = 'ui-spinner ui-state-default ui-widget
ui-widget-content ui-corner-all ui-spinner-' + dir + (spinnerClass ? ' '+
spinnerClass: ''),
            widget = self.element
                .addClass(spinnerBoxClass)
                .attr('autocomplete', 'off') // switch off autocomplete in opera