]> source.dussan.org Git - gwtquery.git/commitdiff
Moving cur method to styleImpl and adding it to the GQuery api
authorManolo Carrasco <manolo@apache.org>
Sun, 23 Jan 2011 07:14:19 +0000 (07:14 +0000)
committerManolo Carrasco <manolo@apache.org>
Sun, 23 Jan 2011 07:14:19 +0000 (07:14 +0000)
gwtquery-core/src/main/java/com/google/gwt/query/client/GQUtils.java
gwtquery-core/src/main/java/com/google/gwt/query/client/GQuery.java
gwtquery-core/src/main/java/com/google/gwt/query/client/LazyGQuery.java
gwtquery-core/src/main/java/com/google/gwt/query/client/impl/DocumentStyleImpl.java
gwtquery-core/src/main/java/com/google/gwt/query/client/plugins/PropertiesAnimation.java
gwtquery-core/src/test/java/com/google/gwt/query/client/GQueryCoreTest.java
gwtquery-core/src/test/java/com/google/gwt/query/client/GQueryEventsTest.java

index 31f5050ca175e972e34f254be1ee79edd59af863..77c5ffb16624ecbf80521204621b6e4d08320df6 100644 (file)
@@ -31,32 +31,11 @@ import com.google.gwt.user.client.DOM;
 public class GQUtils {
 
   /**
-   * Returns the numeric value of a css property.
-   *  
-   * The parameter force has a special meaning:
-   * - When force is false, returns the value of the css property defined
-   *   in the set of style attributes. 
-   * - Otherwise it returns the real computed value.   
+   * Use the method in the gquery class $(elem).cur(prop, force);
    */
+  @Deprecated
   public static double cur(Element elem, String prop, boolean force) {
-    if (elem.getPropertyString(prop) != null
-        && (elem.getStyle() == null || elem.getStyle().getProperty(prop) == null)) {
-      return elem.getPropertyDouble(prop);
-    }
-    GQuery g = GQuery.$(elem);
-    String val = g.css(prop, force);
-    if ("thick".equalsIgnoreCase(val)) {
-      return (5);
-    } else if ("medium".equalsIgnoreCase(val)) {
-      return (3);
-    } else if ("thin".equalsIgnoreCase(val)) {
-      return (1);
-    }
-    if (!val.matches("^[\\d\\.]+.*$")) {
-      val = g.css(prop, false); 
-    }
-    val = val.trim().replaceAll("[^\\d\\.\\-]+.*$", "");
-    return val.length() == 0 ? 0 : Double.parseDouble(val);
+    return GQuery.$(elem).cur(prop, force);
   }
 
   /**
index 7e14e4acb2fe6cf10f4a07195fd7c3ccce648e8e..cf0111b4d4444b01d4f892a0607bce55926ddf21 100644 (file)
@@ -473,8 +473,6 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
   /**\r
    * We will use the fact as GWT use the widget itself as EventListener !\r
    * If no Widget associated with the element, this method returns null.\r
-   * @param e\r
-   * @return\r
    */\r
    protected static Widget getAssociatedWidget(Element e){\r
     EventListener listener = DOM.getEventListener((com.google.gwt.user.client.Element) e);\r
@@ -1001,6 +999,25 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
     }\r
     return this;\r
   }\r
+  \r
+  /**\r
+   * Returns the numeric value of a css property.\r
+   */\r
+  public double cur(String prop) {\r
+    return cur(prop, false);\r
+  }\r
+  \r
+  /**\r
+   * Returns the numeric value of a css property.\r
+   *  \r
+   * The parameter force has a special meaning:\r
+   * - When force is false, returns the value of the css property defined\r
+   *   in the set of style attributes. \r
+   * - When true returns the real computed value.   \r
+   */\r
+  public double cur(String prop, boolean force) {\r
+    return styleImpl.cur(get(0), prop, force);\r
+  }\r
 \r
   /**\r
    * Returns value at named data store for the element, as set by data(name,\r
@@ -1477,7 +1494,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * Returns the computed left position of the first element matched.\r
    */\r
   public int left() {\r
-    return (int) GQUtils.cur(get(0), "left", true);\r
+    return (int)cur("left", true);\r
   }\r
 \r
   /**\r
@@ -1698,7 +1715,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
   public int outerHeight(boolean includeMargin){\r
     int outerHeight  = get(0).getOffsetHeight(); //height including padding and border\r
     if (includeMargin){\r
-      outerHeight+=GQUtils.cur( get(0), "marginTop", true)+GQUtils.cur( get(0), "marginBottom", true);\r
+      outerHeight += cur("marginTop", true) + cur("marginBottom", true);\r
     }\r
     return  outerHeight;\r
   }\r
@@ -1718,7 +1735,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
   public int outerWidth(boolean includeMargin){\r
     int outerWidth  = get(0).getOffsetWidth(); //width including padding and border\r
     if (includeMargin){\r
-      outerWidth+=GQUtils.cur( get(0), "marginRight", true)+GQUtils.cur( get(0), "marginLeft", true);\r
+      outerWidth += cur("marginRight", true) + cur("marginLeft", true);\r
     }\r
     return  outerWidth;\r
   }\r
@@ -1788,29 +1805,29 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
     // Get correct offsets\r
     Offset offset = offset();\r
     Offset parentOffset = null;\r
-    if ("body".equalsIgnoreCase(offsetParent.getNodeName())\r
-        || "html".equalsIgnoreCase(offsetParent.getNodeName())) {\r
+    if (offsetParent == body || offsetParent == (Node)document) {\r
       parentOffset = new Offset(0, 0);\r
     } else {\r
       parentOffset = $(offsetParent).offset();\r
     }\r
 \r
     // Subtract element margins\r
-    int topMargin = (int) GQUtils.cur(element, "marginTop", true);\r
+    int topMargin = (int)styleImpl.cur(element, "marginTop", true);\r
+    // TODO: move this check to styleImpl\r
     // When margin-left = auto, Safari and chrome return a value while IE and\r
     // Firefox return 0\r
     // force the margin-left to 0 if margin-left = auto.\r
     int leftMargin = 0;\r
     if (!"auto".equals(element.getStyle().getMarginLeft())) {\r
-      leftMargin = (int) GQUtils.cur(element, "marginLeft", true);\r
+      leftMargin = (int)styleImpl.cur(element, "marginLeft", true);\r
     }\r
 \r
     offset = offset.add(-leftMargin, -topMargin);\r
 \r
     // Add offsetParent borders\r
-    int parentOffsetBorderTop = (int) GQUtils.cur(offsetParent,\r
+    int parentOffsetBorderTop = (int)styleImpl.cur(offsetParent,\r
         "borderTopWidth", true);\r
-    int parentOffsetBorderLeft = (int) GQUtils.cur(offsetParent,\r
+    int parentOffsetBorderLeft = (int)styleImpl.cur(offsetParent,\r
         "borderLeftWidth", true);\r
     parentOffset = parentOffset.add(parentOffsetBorderLeft,\r
         parentOffsetBorderTop);\r
@@ -2315,7 +2332,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * Returns the computed left position of the first element matched.\r
    */\r
   public int top() {\r
-    return (int) GQUtils.cur(get(0), "top", true);\r
+    return (int)cur("top", true);\r
   }\r
 \r
   /**\r
index 2e6ae27693403d8a11a3267332d9f75d8339a021..e1ee4d398ab2cd9c265c823bf731a256202e88d6 100644 (file)
@@ -328,6 +328,21 @@ public interface LazyGQuery<T> extends LazyBase<T>{
    */
   LazyGQuery<T> css(TakesPercentage cssProperty, Percentage value);
 
+  /**
+   * Returns the numeric value of a css property.
+   */
+  double cur(String prop);
+
+  /**
+   * Returns the numeric value of a css property.
+   *  
+   * The parameter force has a special meaning:
+   * - When force is false, returns the value of the css property defined
+   *   in the set of style attributes. 
+   * - When true returns the real computed value.   
+   */
+  double cur(String prop, boolean force);
+
   /**
    * Returns value at named data store for the element, as set by data(name,
    * value).
index e4e4485ad0d43f3970a5e2fe1da882dd36e29280..3eec5c5c7dfa40a9708c0bde57f92f75f7cf9a60 100644 (file)
@@ -38,16 +38,45 @@ public class DocumentStyleImpl {
   public static native String hyphenize(String name) /*-{
     return name.replace(/([A-Z])/g, "-$1" ).toLowerCase();
   }-*/;
-
+  
+  /**
+   * Returns the numeric value of a css property.
+   *  
+   * The parameter force has a special meaning:
+   * - When force is false, returns the value of the css property defined
+   *   in the set of style attributes. 
+   * - Otherwise it returns the real computed value.   
+   */
+  public double cur(Element elem, String prop, boolean force) {
+    if (elem.getPropertyString(prop) != null
+        && (elem.getStyle() == null || elem.getStyle().getProperty(prop) == null)) {
+      return elem.getPropertyDouble(prop);
+    }
+    String val = curCSS(elem, prop, force);
+    if ("thick".equalsIgnoreCase(val)) {
+      return (5);
+    } else if ("medium".equalsIgnoreCase(val)) {
+      return (3);
+    } else if ("thin".equalsIgnoreCase(val)) {
+      return (1);
+    }
+    if (!val.matches("^[\\d\\.]+.*$")) {
+      val = curCSS(elem, prop, false); 
+    }
+    val = val.trim().replaceAll("[^\\d\\.\\-]+.*$", "");
+    return val.length() == 0 ? 0 : Double.parseDouble(val);
+  }
+  
   /**
    * Return the string value of a css property of an element.
    * 
-   * The parameter force has a special meaning here: - When force is false,
-   * returns the value of the css property defined in the style attribute of the
-   * element. - Otherwise it returns the real computed value.
+   * The parameter force has a special meaning:
+   * - When force is false, returns the value of the css property defined
+   *   in the set of style attributes. 
+   * - Otherwise it returns the real computed value.   
    * 
-   * For instance if you define 'display=none' not in the element style but in
-   * the css stylesheet, it returns an empty string unless you pass the
+   * For instance if you do not define 'display=none' in the element style but in
+   * the css stylesheet, it will return an empty string unless you pass the
    * parameter force=true.
    */
   public String curCSS(Element elem, String name, boolean force) {
@@ -71,7 +100,6 @@ public class DocumentStyleImpl {
     }
   }
   
-  
   /**
    * Fix style property names.
    */
index b5f40aeb95f7c0c4fde8d9240ebcfa520e87f38f..dfbc27b90e6bce6b4f61c646e41dfe51be813f58 100755 (executable)
  */\r
 package com.google.gwt.query.client.plugins;\r
 \r
+import java.util.ArrayList;\r
+\r
 import com.google.gwt.animation.client.Animation;\r
 import com.google.gwt.dom.client.Element;\r
 import com.google.gwt.query.client.Function;\r
-import com.google.gwt.query.client.GQUtils;\r
 import com.google.gwt.query.client.GQuery;\r
 import com.google.gwt.query.client.JSArray;\r
 import com.google.gwt.query.client.Properties;\r
 import com.google.gwt.query.client.Regexp;\r
 \r
-import java.util.ArrayList;\r
-\r
 /**\r
  *  Animation effects on any numeric CSS property. \r
  */\r
@@ -90,7 +89,7 @@ public class PropertiesAnimation extends Animation {
     if (hidden){\r
       g.show();\r
     }\r
-    double start = GQUtils.cur(e, key, true), end = start;\r
+    double start = g.cur(key, true), end = start;\r
     \r
     if ("show".equals(val)) {\r
       g.saveCssAttrs(key);\r
@@ -113,7 +112,7 @@ public class PropertiesAnimation extends Animation {
         if (!"px".equals(unit)) {\r
           double to = end == 0 ? 1 : end;\r
           g.css(key, to + unit);\r
-          start = to * start / GQUtils.cur(e, key, true);\r
+          start = to * start / g.cur(key, true);\r
           g.css(key, start + unit);\r
         }\r
         if (parts.getStr(1) != null) {\r
index 99cdf452094bd01688d5efff2f246c3efda46366..c00563a045fbcfe26825709fd5615e54401674da 100644 (file)
@@ -739,10 +739,10 @@ public class GQueryCoreTest extends GWTTestCase {
     assertEquals(122, g.height());
     assertEquals(120, g.clientWidth());
     assertEquals(120, g.clientHeight());
-    assertEquals(100, (int)GQUtils.cur(g.get(0), "width", false));
-    assertEquals(100, (int)GQUtils.cur(g.get(0), "height", false));
-    assertEquals(100, (int)GQUtils.cur(g.get(0), "width", true));
-    assertEquals(100, (int)GQUtils.cur(g.get(0), "height", true));
+    assertEquals(100d, g.cur("width", false));
+    assertEquals(100d, g.cur("height", false));
+    assertEquals(100d, g.cur("width", true));
+    assertEquals(100d, g.cur("height", true));
     assertEquals("100px", g.css("width"));
     assertEquals("100px", g.css("height"));
     assertEquals("100px", g.get(0).getStyle().getProperty("width"));
index c226052111b137f70e52f1dfeadcb68461af394a..4dea5f525c10d88e076e7972dab4aa4dbe78570c 100644 (file)
@@ -217,30 +217,30 @@ public class GQueryEventsTest extends GWTTestCase {
     $("p", e, Events.Events).trigger(Event.ONCLICK);
     assertEquals("red", $("p", e).css("color"));
     assertEquals("green", $("p", e).css("background-color"));
-    assertEquals(24.0d, GQUtils.cur($("p", e).get(0), "fontSize", true));
+    assertEquals(24.0d, $("p", e).cur("fontSize", true));
     
     $("p", e).css("color","").css("background","").css("fontSize", "12px");
     assertFalse("red".equalsIgnoreCase($("p", e).css("color")));
     assertFalse("green".equalsIgnoreCase($("p", e).css("background-color")));
-    assertEquals(12.0d, GQUtils.cur($("p", e).get(0), "fontSize", true));
+    assertEquals(12.0d, $("p", e).cur("fontSize", true));
 
     $("p", e, Events.Events).unbind("click.first.namespace");
     $("p", e, Events.Events).trigger(Event.ONCLICK);
     assertFalse("red".equalsIgnoreCase($("p", e).css("color")));
     assertEquals("green", $("p", e).css("background-color"));
-    assertEquals(24.0d, GQUtils.cur($("p", e).get(0), "fontSize", true));
+    assertEquals(24.0d, $("p", e).cur("fontSize", true));
     
     
     $("p", e).css("color","").css("background","").css("fontSize", "12px");
     assertFalse("red".equalsIgnoreCase($("p", e).css("color")));
     assertFalse("green".equalsIgnoreCase($("p", e).css("background-color")));
-    assertEquals(12.0d, GQUtils.cur($("p", e).get(0), "fontSize", true));
+    assertEquals(12.0d, $("p", e).cur("fontSize", true));
 
     $("p", e, Events.Events).unbind("click");
     $("p", e, Events.Events).trigger(Event.ONCLICK);
     assertFalse("red".equalsIgnoreCase($("p", e).css("color")));
     assertFalse("green".equalsIgnoreCase($("p", e).css("background-color")));
-    assertEquals(12.0d, GQUtils.cur($("p", e).get(0), "fontSize", true));
+    assertEquals(12.0d, $("p", e).cur("fontSize", true));
   }
 
   public void testSubmitEvent() {
@@ -293,7 +293,6 @@ public class GQueryEventsTest extends GWTTestCase {
     RootPanel.get().remove(b);
   }
   
-  
   public void testUnbindMultipleEvents() {
     String content = "<p>content</p>";
     $(e).html(content);