]> source.dussan.org Git - gwtquery.git/commitdiff
Refactoring of Lightweight JSO classes and more.
authorManolo Carrasco <manolo@apache.org>
Thu, 3 Mar 2011 10:11:47 +0000 (10:11 +0000)
committerManolo Carrasco <manolo@apache.org>
Thu, 3 Mar 2011 10:11:47 +0000 (10:11 +0000)
27 files changed:
gwtquery-core/src/main/java/com/google/gwt/query/client/GQUtils.java [deleted file]
gwtquery-core/src/main/java/com/google/gwt/query/client/GQuery.java
gwtquery-core/src/main/java/com/google/gwt/query/client/JSArray.java
gwtquery-core/src/main/java/com/google/gwt/query/client/JSRegexp.java [deleted file]
gwtquery-core/src/main/java/com/google/gwt/query/client/JsClosure.java [deleted file]
gwtquery-core/src/main/java/com/google/gwt/query/client/JsMap.java [deleted file]
gwtquery-core/src/main/java/com/google/gwt/query/client/JsObjectArray.java [deleted file]
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/impl/SelectorEngine.java
gwtquery-core/src/main/java/com/google/gwt/query/client/impl/SelectorEngineCssToXPath.java
gwtquery-core/src/main/java/com/google/gwt/query/client/impl/SelectorEngineImpl.java
gwtquery-core/src/main/java/com/google/gwt/query/client/impl/research/SelectorEngineJS.java
gwtquery-core/src/main/java/com/google/gwt/query/client/impl/research/SelectorEngineSizzleGwt.java
gwtquery-core/src/main/java/com/google/gwt/query/client/impl/research/SelectorEngineXPath.java
gwtquery-core/src/main/java/com/google/gwt/query/client/js/JsCache.java [new file with mode: 0644]
gwtquery-core/src/main/java/com/google/gwt/query/client/js/JsClosure.java [new file with mode: 0644]
gwtquery-core/src/main/java/com/google/gwt/query/client/js/JsMap.java [new file with mode: 0644]
gwtquery-core/src/main/java/com/google/gwt/query/client/js/JsNodeArray.java [new file with mode: 0644]
gwtquery-core/src/main/java/com/google/gwt/query/client/js/JsObjectArray.java [new file with mode: 0644]
gwtquery-core/src/main/java/com/google/gwt/query/client/js/JsRegexp.java [new file with mode: 0644]
gwtquery-core/src/main/java/com/google/gwt/query/client/js/JsUtils.java [new file with mode: 0644]
gwtquery-core/src/main/java/com/google/gwt/query/client/plugins/effects/PropertiesAnimation.java
gwtquery-core/src/main/java/com/google/gwt/query/client/plugins/events/EventsListener.java
gwtquery-core/src/main/java/com/google/gwt/query/rebind/LazyGenerator.java
gwtquery-core/src/test/java/com/google/gwt/query/client/GQueryCoreTest.java
gwtquery-core/src/test/java/com/google/gwt/query/client/GQuerySelectorsTest.java

diff --git a/gwtquery-core/src/main/java/com/google/gwt/query/client/GQUtils.java b/gwtquery-core/src/main/java/com/google/gwt/query/client/GQUtils.java
deleted file mode 100644 (file)
index 77c5ffb..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright 2011, The gwtquery team.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.query.client;
-
-import java.util.HashSet;
-
-import com.google.gwt.core.client.JavaScriptObject;
-import com.google.gwt.core.client.JsArray;
-import com.google.gwt.dom.client.Element;
-import com.google.gwt.user.client.DOM;
-
-/**
- * A bunch of utility methods for GQuery.
- * 
- * These methods could be moved to $ class, but the class
- * doesn't work right now.
- */
-public class GQUtils {
-
-  /**
-   * Use the method in the gquery class $(elem).cur(prop, force);
-   */
-  @Deprecated
-  public static double cur(Element elem, String prop, boolean force) {
-    return GQuery.$(elem).cur(prop, force);
-  }
-
-  /**
-   * Compare two numbers using javascript equality.
-   */
-  public static native boolean eq(double s1, double s2) /*-{
-     return s1 == s2;
-  }-*/;
-
-  /**
-   * Compare two objects using javascript equality.
-   */
-  public static native boolean eq(Object s1, Object s2) /*-{
-     return s1 == s2;
-  }-*/;
-
-  /**
-   * Load an external javascript library.
-   * The inserted script replaces the element with the
-   * given id in the document.
-   */
-  public static void loadScript(String url, String id) {
-    GQuery gs = GQuery.$(DOM.createElement("script"));
-    GQuery gp = GQuery.$("#" + id).parent();
-    if (gp.size() != 1) {
-      gp = GQuery.$(GQuery.document.getBody());
-    }
-    GQuery.$("#" + id).remove();
-    gp.append(gs.attr("src", url).attr("type", "text/javascript").attr("id", id));
-  }
-  
-  /**
-   * Return the element which is truth in the double scope. 
-   */
-  public static native double or(double s1, double s2) /*-{
-    return s1 || s2;
-  }-*/;
-
-  /**
-   * Return the element which is truth in the javascript scope.
-   */
-  public static native <T> T or(T s1, T s2) /*-{
-    return s1 || s2;
-  }-*/;
-
-  /**
-   * Check if a number is true in the javascript scope. 
-   */
-  public static native boolean truth(double a) /*-{
-    return a ? true : false;
-  }-*/;
-
-  /**
-   * Check if an object is true in the javascript scope. 
-   */
-  public static native boolean truth(Object a) /*-{
-    return a ? true : false;
-  }-*/;
-  
-  /**
-   * Remove duplicates from an elements array
-   */
-  public static JsArray<Element> unique(JsArray<Element> a) {
-    JsArray<Element> ret = JavaScriptObject.createArray().cast();
-    HashSet<Integer> f = new HashSet<Integer>();
-    for (int i = 0; i < a.length(); i++) {
-      Element e = a.get(i);
-      if (!f.contains(e.hashCode())) {
-        f.add(e.hashCode());
-        ret.push(e);
-      }
-    }    
-    return ret;
-  }
-
-}
index 9922eeac505dc164a82e168cd192bbb396d282e5..ae382c929d8f955248121228e2b83ad7c1703e74 100644 (file)
@@ -17,7 +17,11 @@ package com.google.gwt.query.client;
 \r
 import static com.google.gwt.query.client.plugins.Effects.Effects;\r
 import static com.google.gwt.query.client.plugins.Events.Events;\r
-import static com.google.gwt.query.client.plugins.Widgets.Widgets;\r
+\r
+import java.util.ArrayList;\r
+import java.util.Arrays;\r
+import java.util.HashMap;\r
+import java.util.List;\r
 \r
 import com.google.gwt.core.client.GWT;\r
 import com.google.gwt.core.client.JavaScriptObject;\r
@@ -33,15 +37,19 @@ import com.google.gwt.dom.client.Node;
 import com.google.gwt.dom.client.NodeList;\r
 import com.google.gwt.dom.client.OptionElement;\r
 import com.google.gwt.dom.client.SelectElement;\r
-import com.google.gwt.dom.client.TextAreaElement;\r
 import com.google.gwt.dom.client.Style.Display;\r
 import com.google.gwt.dom.client.Style.HasCssName;\r
+import com.google.gwt.dom.client.TextAreaElement;\r
 import com.google.gwt.query.client.css.CSS;\r
 import com.google.gwt.query.client.css.HasCssValue;\r
 import com.google.gwt.query.client.css.TakesCssValue;\r
 import com.google.gwt.query.client.css.TakesCssValue.CssSetter;\r
 import com.google.gwt.query.client.impl.DocumentStyleImpl;\r
 import com.google.gwt.query.client.impl.SelectorEngine;\r
+import com.google.gwt.query.client.js.JsCache;\r
+import com.google.gwt.query.client.js.JsMap;\r
+import com.google.gwt.query.client.js.JsNodeArray;\r
+import com.google.gwt.query.client.js.JsUtils;\r
 import com.google.gwt.query.client.plugins.Plugin;\r
 import com.google.gwt.query.client.plugins.events.EventsListener;\r
 import com.google.gwt.user.client.DOM;\r
@@ -50,11 +58,6 @@ import com.google.gwt.user.client.EventListener;
 import com.google.gwt.user.client.Window;\r
 import com.google.gwt.user.client.ui.Widget;\r
 \r
-import java.util.ArrayList;\r
-import java.util.Arrays;\r
-import java.util.HashMap;\r
-import java.util.List;\r
-\r
 /**\r
  * GwtQuery is a GWT clone of the popular jQuery library.\r
  */\r
@@ -81,82 +84,6 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
     }\r
   }\r
 \r
-  /**\r
-   * A class to store data in an element.\r
-   */\r
-  protected static final class DataCache extends JavaScriptObject {\r
-\r
-    protected DataCache() {\r
-    }\r
-\r
-    public native void delete(int name) /*-{\r
-                       delete this[name];\r
-    }-*/;\r
-\r
-    public native void delete(String name) /*-{\r
-                       delete this[name];\r
-    }-*/;\r
-\r
-    public native boolean exists(int id) /*-{\r
-                       return !!this[id];\r
-    }-*/;\r
-\r
-    public native JavaScriptObject get(int id) /*-{\r
-                       return this[id];\r
-    }-*/;\r
-\r
-    public native JavaScriptObject get(String id) /*-{\r
-                       return this[id];\r
-    }-*/;\r
-\r
-    public DataCache getCache(int id) {\r
-      return get(id).cast();\r
-    }\r
-\r
-    public native double getDouble(int id) /*-{\r
-                       return this[id];\r
-    }-*/;\r
-\r
-    public native double getDouble(String id) /*-{\r
-                       return this[id];\r
-    }-*/;\r
-\r
-    public native int getInt(int id) /*-{\r
-                       return this[id];\r
-    }-*/;\r
-\r
-    public native int getInt(String id) /*-{\r
-                       return this[id];\r
-    }-*/;\r
-\r
-    public native Object getObject(String id) /*-{\r
-                       return this[id];\r
-    }-*/;\r
-\r
-    public native String getString(int id) /*-{\r
-                       return this[id];\r
-    }-*/;\r
-\r
-    public native String getString(String id) /*-{\r
-                       return this[id];\r
-    }-*/;\r
-\r
-    public native boolean isEmpty() /*-{\r
-                       var foo = "";\r
-                       for (foo in this)\r
-                               break;\r
-                       return !foo;\r
-    }-*/;\r
-\r
-    public native void put(int id, Object obj) /*-{\r
-                       this[id] = obj;\r
-    }-*/;\r
-\r
-    public native void put(String id, Object obj) /*-{\r
-                       this[id] = obj;\r
-    }-*/;\r
-  }\r
-\r
   /**\r
    * The body element in the current page.\r
    */\r
@@ -177,7 +104,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    */\r
   public static final Element window = window();\r
 \r
-  private static DataCache dataCache = null;\r
+  private static JsCache dataCache = null;\r
 \r
   private static SelectorEngine engine;\r
 \r
@@ -186,8 +113,8 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
 \r
   private static final String OLD_DATA_PREFIX = "old-";\r
 \r
-  private static JsMap<Class<? extends GQuery>, Plugin<? extends GQuery>> plugins;;\r
-\r
+  private static JsMap<Class<? extends GQuery>, Plugin<? extends GQuery>> plugins;\r
+  \r
   private static DocumentStyleImpl styleImpl = GWT.create(DocumentStyleImpl.class);\r
 \r
   private static Element windowData = null;\r
@@ -196,7 +123,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * Create an empty GQuery object.\r
    */\r
   public static GQuery $() {\r
-    return new GQuery(JSArray.create());\r
+    return new GQuery(JsNodeArray.create());\r
   }\r
 \r
  \r
@@ -219,7 +146,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * Wrap a GQuery around an existing node.\r
    */\r
   public static GQuery $(Node n) {\r
-    return n == null ? $() : new GQuery(JSArray.create(n));\r
+    return n == null ? $() : new GQuery(JsNodeArray.create(n));\r
   }\r
 \r
   /**\r
@@ -233,7 +160,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * Create a new GQuery given a list of nodes, elements or widgets \r
    */\r
   public static GQuery $(List<?> nodesOrWidgets) {\r
-    JSArray elements = JSArray.create();\r
+    JsNodeArray elements = JsNodeArray.create();\r
     if (nodesOrWidgets != null) {\r
       for (Object o : nodesOrWidgets ) {\r
         if (o instanceof Node) {\r
@@ -434,14 +361,14 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
     }\r
     int id = item.hashCode();\r
     if (name != null && !dataCache.exists(id)) {\r
-      dataCache.put(id, DataCache.createObject().cast());\r
+      dataCache.put(id, JsCache.createObject().cast());\r
     }\r
 \r
-    DataCache d = dataCache.get(id).cast();\r
+    JsCache d = dataCache.getCache(id);\r
     if (name != null && value != null) {\r
       d.put(name, value);\r
     }\r
-    return name != null ? d.getObject(name) : id;\r
+    return name != null ? d.get(name) : id;\r
   }\r
 \r
   /**\r
@@ -483,8 +410,8 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
     }\r
   }\r
 \r
-  private static JSArray copyNodeList(NodeList<? extends Node> n) {\r
-    JSArray res = JSArray.create();\r
+  private static JsNodeArray copyNodeList(NodeList<? extends Node> n) {\r
+    JsNodeArray res = JsNodeArray.create();\r
     for (int i = 0; i < n.getLength(); i++) {\r
       res.addNode(n.getItem(i));\r
     }\r
@@ -530,7 +457,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
       engine = new SelectorEngine();\r
     }\r
     NodeList<Element> n = engine.select(selector, context);\r
-    JSArray res = copyNodeList(n);\r
+    JsNodeArray res = copyNodeList(n);\r
     return res;\r
   }\r
 \r
@@ -549,7 +476,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
 \r
   private GQuery(Element element) {\r
     if (element != null) {\r
-      elements = JSArray.create(element);\r
+      elements = JsNodeArray.create(element);\r
     }\r
   }\r
 \r
@@ -557,7 +484,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
     this(gq == null ? null : gq.get());\r
   }\r
 \r
-  private GQuery(JSArray elements) {\r
+  private GQuery(JsNodeArray elements) {\r
     if (elements != null) {\r
       this.elements = elements;\r
     }\r
@@ -718,18 +645,6 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
         + plugin.getName());\r
   }\r
 \r
-  /**\r
-   * Return a GWT Widget containing the first matched element.\r
-   * \r
-   * If the element is already associated to a widget it returns the original\r
-   * widget, otherwise a new GWT widget will be created depending on the\r
-   * tagName.\r
-   * \r
-   */\r
-//  public Widget asWidget() {\r
-//    return as(Widgets).widget();\r
-//  }\r
-\r
   /**\r
    * Set a key/value object as properties to all matched elements.\r
    * \r
@@ -840,7 +755,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * at all ancestors, children() will only consider immediate child elements.\r
    */\r
   public GQuery children() {\r
-    JSArray result = JSArray.create();\r
+    JsNodeArray result = JsNodeArray.create();\r
     for (Element e : elements()) {\r
       allNextSiblingElements(e.getFirstChildElement(), result, null);\r
     }\r
@@ -885,7 +800,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * copies of the elements to another location in the DOM.\r
    */\r
   public GQuery clone() {\r
-    JSArray result = JSArray.create();\r
+    JsNodeArray result = JsNodeArray.create();\r
     for (Element e : elements()) {\r
       result.addNode(e.cloneNode(true));\r
     }\r
@@ -896,7 +811,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * Filter the set of elements to those that contain the specified text.\r
    */\r
   public GQuery contains(String text) {\r
-    JSArray array = JSArray.create();\r
+    JsNodeArray array = JsNodeArray.create();\r
     for (Element e : elements()) {\r
       if ($(e).text().contains(text)) {\r
         array.addNode(e);\r
@@ -910,7 +825,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * nodes), or the content document, if the element is an iframe.\r
    */\r
   public GQuery contents() {\r
-    JSArray result = JSArray.create();\r
+    JsNodeArray result = JsNodeArray.create();\r
     for (Element e : elements()) {\r
       if (IFrameElement.is(e)) {\r
         result.addNode(getContentDocument(e));\r
@@ -1218,7 +1133,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * - anything else and the element is kept.\r
    */\r
   public GQuery filter(Predicate filterFn) {\r
-    JSArray result = JSArray.create();\r
+    JsNodeArray result = JsNodeArray.create();\r
     for (int i = 0; i < elements.getLength(); i++) {\r
       Element e = elements.getItem(i);\r
       if (filterFn.f(e, i)) {\r
@@ -1235,7 +1150,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * filters at once.\r
    */\r
   public GQuery filter(String... filters) {\r
-    JSArray array = JSArray.create();\r
+    JsNodeArray array = JsNodeArray.create();\r
     for (String f : filters) {\r
       for (Element e : elements()) {\r
         for (Element c : $(f, e.getParentNode()).elements()) {\r
@@ -1258,7 +1173,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * once.\r
    */\r
   public GQuery find(String... filters) {\r
-    JSArray array = JSArray.create();\r
+    JsNodeArray array = JsNodeArray.create();\r
     for (String selector : filters) {\r
       for (Element e : elements()) {\r
         for (Element c : $(selector, e).elements()) {\r
@@ -1659,7 +1574,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * element, not all next siblings see {#nextAll}.\r
    */\r
   public GQuery next() {\r
-    JSArray result = JSArray.create();\r
+    JsNodeArray result = JsNodeArray.create();\r
     for (Element e : elements()) {\r
       Element next = e.getNextSiblingElement();\r
       if (next != null) {\r
@@ -1676,7 +1591,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * {#nextAll}.\r
    */\r
   public GQuery next(String... selectors) {\r
-    JSArray result = JSArray.create();\r
+    JsNodeArray result = JsNodeArray.create();\r
     for (Element e : elements()) {\r
       Element next = e.getNextSiblingElement();\r
       if (next != null) {\r
@@ -1690,7 +1605,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * Find all sibling elements after the current element.\r
    */\r
   public GQuery nextAll() {\r
-    JSArray result = JSArray.create();\r
+    JsNodeArray result = JsNodeArray.create();\r
     for (Element e : elements()) {\r
       allNextSiblingElements(e.getNextSiblingElement(), result, null);\r
     }\r
@@ -1702,7 +1617,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * is used to remove a single Element from a jQuery object.\r
    */\r
   public GQuery not(Element elem) {\r
-    JSArray array = JSArray.create();\r
+    JsNodeArray array = JsNodeArray.create();\r
     for (Element e : elements()) {\r
       if (e != elem) {\r
         array.addNode(e);\r
@@ -1750,7 +1665,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * relative or absolute). This method only works with visible elements.\r
    */\r
   public GQuery offsetParent() {\r
-    Element offParent = GQUtils.or(elements.getItem(0).getOffsetParent(), body);\r
+    Element offParent = JsUtils.or(elements.getItem(0).getOffsetParent(), body);\r
     while (offParent != null\r
         && !"body".equalsIgnoreCase(offParent.getTagName())\r
         && !"html".equalsIgnoreCase(offParent.getTagName())\r
@@ -1822,7 +1737,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * elements.\r
    */\r
   public GQuery parent() {\r
-    JSArray result = JSArray.create();\r
+    JsNodeArray result = JsNodeArray.create();\r
     for (Element e : elements()) {\r
       Element p = e.getParentElement();\r
       if (p != null) {\r
@@ -1846,7 +1761,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * elements (except for the root element).\r
    */\r
   public GQuery parents() {\r
-    JSArray result = JSArray.create();\r
+    JsNodeArray result = JsNodeArray.create();\r
     for (Element e : elements()) {\r
       Node par = e.getParentNode();\r
       while (par != null && par != document) {\r
@@ -1985,7 +1900,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * returned, not all previous siblings.\r
    */\r
   public GQuery prev() {\r
-    JSArray result = JSArray.create();\r
+    JsNodeArray result = JsNodeArray.create();\r
     for (Element e : elements()) {\r
       Element next = getPreviousSiblingElement(e);\r
       if (next != null) {\r
@@ -2001,7 +1916,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * previous sibling is returned, not all previous siblings.\r
    */\r
   public GQuery prev(String... selectors) {\r
-    JSArray result = JSArray.create();\r
+    JsNodeArray result = JsNodeArray.create();\r
     for (Element e : elements()) {\r
       Element next = getPreviousSiblingElement(e);\r
       if (next != null) {\r
@@ -2015,7 +1930,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * Find all sibling elements in front of the current element.\r
    */\r
   public GQuery prevAll() {\r
-    JSArray result = JSArray.create();\r
+    JsNodeArray result = JsNodeArray.create();\r
     for (Element e : elements()) {\r
       allPreviousSiblingElements(getPreviousSiblingElement(e), result);\r
     }\r
@@ -2282,7 +2197,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    */\r
   public GQuery show() {\r
     for (Element e : elements()) {\r
-      styleImpl.setStyleProperty(e, "display", GQUtils.or((String) data(e,\r
+      styleImpl.setStyleProperty(e, "display", JsUtils.or((String) data(e,\r
           "oldDisplay", null), ""));\r
       // When the display=none is in the stylesheet.\r
       if (!styleImpl.isVisible(e)) {\r
@@ -2297,7 +2212,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * matched set of elements.\r
    */\r
   public GQuery siblings() {\r
-    JSArray result = JSArray.create();\r
+    JsNodeArray result = JsNodeArray.create();\r
     for (Element e : elements()) {\r
       allNextSiblingElements(e.getParentElement().getFirstChildElement(),\r
           result, e);\r
@@ -2324,7 +2239,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * Selects a subset of the matched elements.\r
    */\r
   public GQuery slice(int start, int end) {\r
-    JSArray slice = JSArray.create();\r
+    JsNodeArray slice = JsNodeArray.create();\r
     if (end == -1 || end > elements.getLength()) {\r
       end = elements.getLength();\r
     }\r
@@ -2476,8 +2391,8 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
    * Remove all duplicate elements from an array of elements. Note that this\r
    * only works on arrays of DOM elements, not strings or numbers.\r
    */\r
-  public JSArray unique(JSArray result) {\r
-    return GQUtils.unique(result.<JsArray<Element>> cast()).cast();\r
+  public JsNodeArray unique(JsNodeArray result) {\r
+    return JsUtils.unique(result.<JsArray<Element>> cast()).cast();\r
   }\r
 \r
   /**\r
@@ -2824,7 +2739,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
     return wrapInner($(html));\r
   }\r
 \r
-  protected GQuery pushStack(JSArray elts, String name, String selector) {\r
+  protected GQuery pushStack(JsNodeArray elts, String name, String selector) {\r
     GQuery g = new GQuery(elts);\r
     g.setPreviousObject(this);\r
     g.setSelector(selector);\r
@@ -2832,7 +2747,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
   }\r
 \r
   private void allNextSiblingElements(Element firstChildElement,\r
-      JSArray result, Element elem) {\r
+      JsNodeArray result, Element elem) {\r
     while (firstChildElement != null) {\r
       if (firstChildElement != elem) {\r
         result.addNode(firstChildElement);\r
@@ -2842,7 +2757,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
   }\r
 \r
   private void allPreviousSiblingElements(Element firstChildElement,\r
-      JSArray result) {\r
+      JsNodeArray result) {\r
     while (firstChildElement != null) {\r
       result.addNode(firstChildElement);\r
       firstChildElement = getPreviousSiblingElement(firstChildElement);\r
@@ -2862,7 +2777,7 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
   }\r
 \r
   private GQuery domManip(GQuery g, int func, Element... elms) {\r
-    JSArray newNodes = JSArray.create();\r
+    JsNodeArray newNodes = JsNodeArray.create();\r
     if (elms.length == 0) {\r
       elms = elements();\r
     }\r
@@ -2921,8 +2836,8 @@ public class GQuery implements Lazy<GQuery, LazyGQuery> {
                return sib;\r
   }-*/;\r
 \r
-  private JSArray merge(NodeList<Element> first, NodeList<Element> second) {\r
-    JSArray res = copyNodeList(first);\r
+  private JsNodeArray merge(NodeList<Element> first, NodeList<Element> second) {\r
+    JsNodeArray res = copyNodeList(first);\r
     for (int i = 0; i < second.getLength(); i++) {\r
       res.addNode(second.getItem(i));\r
     }\r
index 18f250ac54ddf342375f5687f386beb8f74d5b75..45fec7ad262c46914c335b6473d840804141a890 100644 (file)
  */\r
 package com.google.gwt.query.client;\r
 \r
-import com.google.gwt.core.client.JavaScriptObject;\r
-import com.google.gwt.dom.client.Element;\r
 import com.google.gwt.dom.client.Node;\r
 import com.google.gwt.dom.client.NodeList;\r
+import com.google.gwt.query.client.js.JsNodeArray;\r
 \r
 /**\r
+ * @deprecated use JsNodeArray\r
  */\r
-public class JSArray extends NodeList<Element> {\r
+@Deprecated\r
+public final class JSArray extends JsNodeArray {\r
+  \r
+  protected JSArray() {\r
+  }\r
 \r
   public static JSArray create() {\r
-    return (JSArray) JavaScriptObject.createArray();\r
+    return JsNodeArray.create().cast();\r
   }\r
 \r
-  public static native JSArray create(Node node) /*-{\r
-    return node ? [node] : [];\r
-  }-*/;\r
+  public static JSArray create(Node node) {\r
+    return JsNodeArray.create(node).cast();\r
+  }\r
 \r
   public static JSArray create(NodeList<?> nl) {\r
     JSArray ret = create();\r
@@ -40,48 +44,4 @@ public class JSArray extends NodeList<Element> {
     return ret;\r
   }\r
 \r
-  protected JSArray() {\r
-  }\r
-\r
-  public final native void addInt(int i) /*-{\r
-    this[this.length]=i;\r
-  }-*/;\r
-\r
-  public final native void addNode(Node n) /*-{\r
-    if (n) this[this.length]=n;\r
-  }-*/;\r
-\r
-  public final native void addNode(Node n, int i) /*-{\r
-    if (n) this[i]=n;\r
-  }-*/;\r
-\r
-  public final native void concat(JSArray ary) /*-{\r
-    this.concat(ary);\r
-  }-*/;\r
-\r
-  public final native Element getElement(int i) /*-{\r
-    return this[i];\r
-  }-*/;\r
-\r
-  public final native int getInt(int i) /*-{\r
-    return this[i]  || 0;\r
-  }-*/;\r
-\r
-  public final native Node getNode(int i) /*-{\r
-    return this[i];\r
-  }-*/;\r
-\r
-  public final native String getStr(int i) /*-{\r
-    return this[i] || null;\r
-  }-*/;\r
-\r
-  public final void pushAll(JSArray prevElem) {\r
-    for (int i = 0, ilen = prevElem.size(); i < ilen; i++) {\r
-      addNode(prevElem.getNode(i));\r
-    }\r
-  }\r
-\r
-  public final native int size() /*-{\r
-     return this.length;\r
-  }-*/;\r
 }\r
diff --git a/gwtquery-core/src/main/java/com/google/gwt/query/client/JSRegexp.java b/gwtquery-core/src/main/java/com/google/gwt/query/client/JSRegexp.java
deleted file mode 100644 (file)
index 0e2b1f6..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/*\r
- * Copyright 2011, The gwtquery team.\r
- * \r
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not\r
- * use this file except in compliance with the License. You may obtain a copy of\r
- * the License at\r
- * \r
- * http://www.apache.org/licenses/LICENSE-2.0\r
- * \r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT\r
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\r
- * License for the specific language governing permissions and limitations under\r
- * the License.\r
- */\r
-package com.google.gwt.query.client;\r
-\r
-import com.google.gwt.core.client.JavaScriptObject;\r
-\r
-/**\r
- * A wrapper around Javascript Regexps.\r
- */\r
-public class JSRegexp {\r
-\r
-  public static native JavaScriptObject compile(String pat) /*-{\r
-     return new RegExp(pat);\r
-  }-*/;\r
-\r
-  public static native JavaScriptObject compileFlags(String pat, String flags) /*-{\r
-     return new RegExp(pat, flags);\r
-  }-*/;\r
-\r
-  public static JSArray match(String regexp, String flags, String string) {\r
-    return new JSRegexp(regexp, flags).match(string);\r
-  }\r
-\r
-  private static native JSArray exec0(JavaScriptObject regexp, String str) /*-{\r
-    return regexp.exec(str);\r
-  }-*/;\r
-\r
-  private final JavaScriptObject regexp;\r
-\r
-  public JSRegexp(String pattern) {\r
-    this.regexp = compile(pattern);\r
-  }\r
-\r
-  public JSRegexp(String pat, String flags) {\r
-    this.regexp = compileFlags(pat, flags);\r
-  }\r
-\r
-  public JSArray exec(String str) {\r
-    return exec0(regexp, str);\r
-  }\r
-\r
-  public JSArray match(String currentRule) {\r
-    return match0(regexp, currentRule);\r
-  }\r
-\r
-  public boolean test(String rule) {\r
-    return test0(regexp, rule);\r
-  }\r
-\r
-  private native JSArray match0(JavaScriptObject regexp, String currentRule)/*-{\r
-    return currentRule.match(regexp);\r
-  }-*/;\r
-\r
-  private native boolean test0(JavaScriptObject regexp, String rule) /*-{\r
-    return regexp.test(rule);\r
-  }-*/;\r
-}\r
diff --git a/gwtquery-core/src/main/java/com/google/gwt/query/client/JsClosure.java b/gwtquery-core/src/main/java/com/google/gwt/query/client/JsClosure.java
deleted file mode 100644 (file)
index 30fd2f2..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright 2011, The gwtquery team.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.query.client;
-
-import com.google.gwt.core.client.JavaScriptObject;
-
-/**
- * Overlay type representing a Javascript closure.
- */
-public class JsClosure extends JavaScriptObject {
-
-  protected JsClosure() {
-  }
-
-  /**
-   * Invoke the closure with no arguments and expecting no return value.
-   */
-  public final native void invoke() /*-{
-     return this();
-  }-*/;
-}
diff --git a/gwtquery-core/src/main/java/com/google/gwt/query/client/JsMap.java b/gwtquery-core/src/main/java/com/google/gwt/query/client/JsMap.java
deleted file mode 100644 (file)
index f57dd9f..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright 2011, The gwtquery team.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.query.client;
-
-import com.google.gwt.core.client.JavaScriptObject;
-
-/**
- * Lightweight JSO backed implemented of a Map, using Object.hashCode() as key.
- */
-final public class JsMap<S, T> extends JavaScriptObject {
-
-  protected JsMap() {
-  }
-
-  public T get(S key) {
-    return get(key.hashCode());
-  }
-
-  public native T get(int hashCode) /*-{
-    return this[hashCode] || null;
-  }-*/;
-
-  public void put(S key, T val) {
-    put(key.hashCode(), val);
-  }
-
-  public native void put(int hashCode, T val) /*-{
-    this[hashCode]=val;
-  }-*/;
-}
diff --git a/gwtquery-core/src/main/java/com/google/gwt/query/client/JsObjectArray.java b/gwtquery-core/src/main/java/com/google/gwt/query/client/JsObjectArray.java
deleted file mode 100644 (file)
index b82c6e9..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright 2011, The gwtquery team.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-package com.google.gwt.query.client;
-
-import com.google.gwt.core.client.JavaScriptObject;
-
-/**
- * Lightweight JSO based array class that can store objects rather than just
- * other JSOs.
- */
-public final class JsObjectArray<T> extends JavaScriptObject {
-
-  protected JsObjectArray() {
-  }
-
-  public void add(T val) {
-    set(length(), val);
-  }
-
-  public native T get(int i) /*-{
-    return this[i];
-  }-*/;
-
-  public native int length() /*-{
-    return this.length;
-  }-*/;
-
-  public native void set(int i, T val) /*-{
-    this[i]=val;
-  }-*/;
-}
index 2c62ea6150eb5d0da9c124e8a328d6d34d636db9..23c4391485eb4b90bf1f81e5d92abe77541878cd 100644 (file)
  * the License.
  */
 package com.google.gwt.query.client;
-import static com.google.gwt.query.client.plugins.Effects.Effects;
-import static com.google.gwt.query.client.plugins.Events.Events;
-import static com.google.gwt.query.client.plugins.Widgets.Widgets;
-import com.google.gwt.core.client.GWT;
-import com.google.gwt.core.client.JavaScriptObject;
-import com.google.gwt.core.client.JsArray;
-import com.google.gwt.core.client.JsArrayString;
-import com.google.gwt.dom.client.BodyElement;
-import com.google.gwt.dom.client.ButtonElement;
-import com.google.gwt.dom.client.Document;
+import java.util.List;
+
 import com.google.gwt.dom.client.Element;
-import com.google.gwt.dom.client.IFrameElement;
-import com.google.gwt.dom.client.InputElement;
 import com.google.gwt.dom.client.Node;
 import com.google.gwt.dom.client.NodeList;
-import com.google.gwt.dom.client.OptionElement;
-import com.google.gwt.dom.client.SelectElement;
-import com.google.gwt.dom.client.TextAreaElement;
-import com.google.gwt.dom.client.Style.Display;
 import com.google.gwt.dom.client.Style.HasCssName;
 import com.google.gwt.query.client.css.CSS;
 import com.google.gwt.query.client.css.HasCssValue;
 import com.google.gwt.query.client.css.TakesCssValue;
 import com.google.gwt.query.client.css.TakesCssValue.CssSetter;
-import com.google.gwt.query.client.impl.DocumentStyleImpl;
-import com.google.gwt.query.client.impl.SelectorEngine;
-import com.google.gwt.query.client.plugins.Plugin;
-import com.google.gwt.query.client.plugins.events.EventsListener;
-import com.google.gwt.user.client.DOM;
-import com.google.gwt.user.client.Event;
-import com.google.gwt.user.client.EventListener;
-import com.google.gwt.user.client.Window;
+import com.google.gwt.query.client.js.JsNodeArray;
 import com.google.gwt.user.client.ui.Widget;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import com.google.gwt.query.client.LazyBase;
 
 public interface LazyGQuery<T> extends LazyBase<T>{
 
@@ -155,16 +129,6 @@ public interface LazyGQuery<T> extends LazyBase<T>{
    */
   <T extends GQuery> T as(Class<T> plugin);
 
-  /**
-   * Return a GWT Widget containing the first matched element.
-   * 
-   * If the element is already associated to a widget it returns the original
-   * widget, otherwise a new GWT widget will be created depending on the
-   * tagName.
-   * 
-   */
-  // Widget asWidget();
-
   /**
    * Set a key/value object as properties to all matched elements.
    * 
@@ -1181,7 +1145,7 @@ public interface LazyGQuery<T> extends LazyBase<T>{
    * Remove all duplicate elements from an array of elements. Note that this
    * only works on arrays of DOM elements, not strings or numbers.
    */
-  JSArray unique(JSArray result);
+  JsNodeArray unique(JsNodeArray result);
 
   /**
    * Gets the content of the value attribute of the first matched element,
index 3eec5c5c7dfa40a9708c0bde57f92f75f7cf9a60..d3f747179967a91e0f1d646a7737261265bee048 100644 (file)
@@ -16,7 +16,7 @@
 package com.google.gwt.query.client.impl;
 
 import com.google.gwt.dom.client.Element;
-import com.google.gwt.query.client.GQUtils;
+import com.google.gwt.query.client.js.JsUtils;
 
 /**
  * A helper class to get computed CSS styles for elements.
@@ -118,7 +118,7 @@ public class DocumentStyleImpl {
   
   public double getOpacity(Element e) {
     String o = e.getStyle().getOpacity();
-    return GQUtils.truth(o) ? num(o) : 1;
+    return JsUtils.truth(o) ? num(o) : 1;
   }
   
   public int getWidth(Element e) {
@@ -134,7 +134,7 @@ public class DocumentStyleImpl {
 
   public double num(String val) {
     val = val.trim().replaceAll("[^\\d\\.\\-]+.*$", "");
-    return GQUtils.truth(val) ? Double.parseDouble(val) : 0;
+    return JsUtils.truth(val) ? Double.parseDouble(val) : 0;
   }
 
   /**
index 8d7abf75c8e0ba7c91329848f791dd945c335742..ddf66974a5bebec0c0b936a22fe8d933de06b55f 100644 (file)
@@ -20,7 +20,7 @@ import com.google.gwt.dom.client.Document;
 import com.google.gwt.dom.client.Element;\r
 import com.google.gwt.dom.client.Node;\r
 import com.google.gwt.dom.client.NodeList;\r
-import com.google.gwt.query.client.JSArray;\r
+import com.google.gwt.query.client.js.JsNodeArray;\r
 \r
 /**\r
  * Core Selector engine functions, and native JS utility functions.\r
@@ -57,11 +57,11 @@ public class SelectorEngine {
   }-*/;\r
 \r
   public static NodeList<Element> xpathEvaluate(String selector, Node ctx) {\r
-    return xpathEvaluate(selector, ctx, JSArray.create());\r
+    return xpathEvaluate(selector, ctx, JsNodeArray.create());\r
   }\r
 \r
   public static native NodeList<Element> xpathEvaluate(String selector,\r
-      Node ctx, JSArray r) /*-{\r
+      Node ctx, JsNodeArray r) /*-{\r
       var node;\r
       var ownerDoc = ctx && (ctx.ownerDocument || ctx );\r
       var evalDoc = ownerDoc ? ownerDoc : $doc;\r
@@ -95,8 +95,8 @@ public class SelectorEngine {
     this.root = root;\r
   }\r
   \r
-  protected JSArray veryQuickId(Node context, String id) {\r
-    JSArray r = JSArray.create();\r
+  protected JsNodeArray veryQuickId(Node context, String id) {\r
+    JsNodeArray r = JsNodeArray.create();\r
     if (context.getNodeType() == Node.DOCUMENT_NODE) {\r
       r.addNode(((Document) context).getElementById(id));\r
       return r;\r
index fed3bea8d27f3c123dd9e4726faf079502ade259..459057b6392f6b65bbb44f95a8320f0f5ddc9bea 100644 (file)
@@ -22,9 +22,10 @@ import com.google.gwt.core.client.JsArray;
 import com.google.gwt.dom.client.Element;\r
 import com.google.gwt.dom.client.Node;\r
 import com.google.gwt.dom.client.NodeList;\r
-import com.google.gwt.query.client.GQUtils;\r
-import com.google.gwt.query.client.JSArray;\r
-import com.google.gwt.query.client.JSRegexp;\r
+import com.google.gwt.query.client.js.JsNodeArray;\r
+import com.google.gwt.query.client.js.JsObjectArray;\r
+import com.google.gwt.query.client.js.JsRegexp;\r
+import com.google.gwt.query.client.js.JsUtils;\r
 \r
 /**\r
  * Runtime selector engine implementation which translates selectors to XPath\r
@@ -149,14 +150,14 @@ public class SelectorEngineCssToXPath extends SelectorEngineImpl {
   // when using this engine in generators and tests for the JVM\r
   private Replacer replacer = new Replacer() {\r
     public String replaceAll(String s, String r, Object o) {\r
-      JSRegexp p = new JSRegexp(r);\r
+      JsRegexp p = new JsRegexp(r);\r
       if (o instanceof ReplaceCallback) {\r
         ReplaceCallback callback = (ReplaceCallback) o;\r
         while (p.test(s)) {\r
-          JSArray a = p.match(s);\r
+          JsObjectArray<String> a = p.match(s);\r
           ArrayList<String> args = new ArrayList<String>();\r
-          for (int i = 0; i < a.getLength(); i++) {\r
-            args.add(a.getStr(i));\r
+          for (int i = 0; i < a.length(); i++) {\r
+            args.add(a.get(i));\r
           }\r
           String f = callback.foundMatch(args);\r
           s = s.replaceFirst(r, f);\r
@@ -186,14 +187,14 @@ public class SelectorEngineCssToXPath extends SelectorEngineImpl {
   }\r
   \r
   public NodeList<Element> select(String sel, Node ctx) {\r
-    JSArray elm = JSArray.create();\r
+    JsNodeArray elm = JsNodeArray.create();\r
     String xsel = cache.get(sel);\r
     if (xsel == null) {\r
       xsel =  sel.startsWith("./") || sel.startsWith("/") ? sel : css2Xpath(sel);\r
       cache.put(sel, xsel);\r
     }\r
     SelectorEngine.xpathEvaluate(xsel, ctx, elm);\r
-    return GQUtils.unique(elm.<JsArray<Element>> cast()).cast();\r
+    return JsUtils.unique(elm.<JsArray<Element>> cast()).cast();\r
   }\r
   \r
 }\r
index eee63054b78de6db90693fa7e65a6ecb62a87e66..d968a5ff0b9c47307d2e99127d310c24a8b1575e 100644 (file)
  * the License.\r
  */\r
 package com.google.gwt.query.client.impl;\r
-import static com.google.gwt.query.client.GQUtils.eq;\r
-import static com.google.gwt.query.client.GQUtils.truth;\r
-\r
-import com.google.gwt.query.client.GQUtils;\r
-import com.google.gwt.query.client.JSArray;\r
-import com.google.gwt.query.client.JSRegexp;\r
 \r
 /**\r
  * Base/Utility class for runtime selector engine implementations.\r
index e1ac1ae7248aecff8e31ce18e8255c8f178e7aa2..0cf72d59b61678fd8a220e948c6a74959ca10fa7 100644 (file)
@@ -15,8 +15,8 @@
  */\r
 package com.google.gwt.query.client.impl.research;\r
 \r
-import static com.google.gwt.query.client.GQUtils.eq;\r
-import static com.google.gwt.query.client.GQUtils.truth;\r
+import static com.google.gwt.query.client.js.JsUtils.eq;\r
+import static com.google.gwt.query.client.js.JsUtils.truth;\r
 \r
 import com.google.gwt.core.client.JavaScriptObject;\r
 import com.google.gwt.core.client.JsArray;\r
@@ -24,11 +24,12 @@ import com.google.gwt.dom.client.Document;
 import com.google.gwt.dom.client.Element;\r
 import com.google.gwt.dom.client.Node;\r
 import com.google.gwt.dom.client.NodeList;\r
-import com.google.gwt.query.client.GQUtils;\r
-import com.google.gwt.query.client.JSArray;\r
-import com.google.gwt.query.client.JSRegexp;\r
 import com.google.gwt.query.client.impl.SelectorEngine;\r
 import com.google.gwt.query.client.impl.SelectorEngineImpl;\r
+import com.google.gwt.query.client.js.JsNodeArray;\r
+import com.google.gwt.query.client.js.JsObjectArray;\r
+import com.google.gwt.query.client.js.JsRegexp;\r
+import com.google.gwt.query.client.js.JsUtils;\r
 \r
 /**\r
  * Runtime selector engine implementation with no-XPath/native support based on\r
@@ -90,35 +91,35 @@ public class SelectorEngineJS extends SelectorEngineImpl {
 \r
   protected static Sequence getSequence(String expression) {\r
     int start = 0, add = 2, max = -1, modVal = -1;\r
-    JSRegexp expressionRegExp = new JSRegexp(\r
+    JsRegexp expressionRegExp = new JsRegexp(\r
         "^((odd|even)|([1-9]\\d*)|((([1-9]\\d*)?)n((\\+|\\-)(\\d+))?)|(\\-(([1-9]\\d*)?)n\\+(\\d+)))$");\r
-    JSArray pseudoValue = expressionRegExp.exec(expression);\r
+    JsObjectArray<String> pseudoValue = expressionRegExp.exec(expression);\r
     if (!truth(pseudoValue)) {\r
       return null;\r
     } else {\r
-      if (truth(pseudoValue.getStr(2))) {        // odd or even\r
-        start = (eq(pseudoValue.getStr(2), "odd")) ? 1 : 2;\r
+      if (truth(pseudoValue.get(2))) {        // odd or even\r
+        start = (eq(pseudoValue.get(2), "odd")) ? 1 : 2;\r
         modVal = (start == 1) ? 1 : 0;\r
-      } else if (GQUtils\r
-          .truth(pseudoValue.getStr(3))) {        // single digit\r
-        start = Integer.parseInt(pseudoValue.getStr(3), 10);\r
+      } else if (JsUtils\r
+          .truth(pseudoValue.get(3))) {        // single digit\r
+        start = Integer.parseInt(pseudoValue.get(3), 10);\r
         add = 0;\r
         max = start;\r
-      } else if (truth(pseudoValue.getStr(4))) {        // an+b\r
-        add = truth(pseudoValue.getStr(6)) ? Integer\r
-            .parseInt(pseudoValue.getStr(6), 10) : 1;\r
-        start = truth(pseudoValue.getStr(7)) ? Integer.parseInt(\r
-            (pseudoValue.getStr(8).charAt(0) == '+' ? ""\r
-                : pseudoValue.getStr(8)) + pseudoValue.getStr(9), 10) : 0;\r
+      } else if (truth(pseudoValue.get(4))) {        // an+b\r
+        add = truth(pseudoValue.get(6)) ? Integer\r
+            .parseInt(pseudoValue.get(6), 10) : 1;\r
+        start = truth(pseudoValue.get(7)) ? Integer.parseInt(\r
+            (pseudoValue.get(8).charAt(0) == '+' ? ""\r
+                : pseudoValue.get(8)) + pseudoValue.get(9), 10) : 0;\r
         while (start < 1) {\r
           start += add;\r
         }\r
         modVal = (start > add) ? (start - add) % add\r
             : ((start == add) ? 0 : start);\r
-      } else if (truth(pseudoValue.getStr(10))) {        // -an+b\r
-        add = truth(pseudoValue.getStr(12)) ? Integer\r
-            .parseInt(pseudoValue.getStr(12), 10) : 1;\r
-        start = max = Integer.parseInt(pseudoValue.getStr(13), 10);\r
+      } else if (truth(pseudoValue.get(10))) {        // -an+b\r
+        add = truth(pseudoValue.get(12)) ? Integer\r
+            .parseInt(pseudoValue.get(12), 10) : 1;\r
+        start = max = Integer.parseInt(pseudoValue.get(13), 10);\r
         while (start > add) {\r
           start -= add;\r
         }\r
@@ -133,7 +134,7 @@ public class SelectorEngineJS extends SelectorEngineImpl {
     return s;\r
   }\r
 \r
-  public static void clearAdded(JSArray a) {\r
+  public static void clearAdded(JsNodeArray a) {\r
     for (int i = 0, len = a.size(); i < len; i++) {\r
       clearAdded(a.getNode(i));\r
     }\r
@@ -156,34 +157,34 @@ public class SelectorEngineJS extends SelectorEngineImpl {
       prevRef.added = added;\r
     }-*/;\r
 \r
-  public static native void setSkipTag(JSArray prevElem, boolean skip) /*-{\r
+  public static native void setSkipTag(JsNodeArray prevElem, boolean skip) /*-{\r
       prevElem.skipTag = skip;\r
     }-*/;\r
 \r
   private static String attrToRegExp(String attrVal, String op) {\r
-    if (GQUtils.eq("^", op)) {\r
+    if (JsUtils.eq("^", op)) {\r
       return "^" + attrVal;\r
     }\r
-    if (GQUtils.eq("$", op)) {\r
+    if (JsUtils.eq("$", op)) {\r
       return attrVal + "$";\r
     }\r
-    if (GQUtils.eq("*", op)) {\r
+    if (JsUtils.eq("*", op)) {\r
       return attrVal;\r
     }\r
-    if (GQUtils.eq("|", op)) {\r
+    if (JsUtils.eq("|", op)) {\r
       return "(^" + attrVal + "(\\-\\w+)*$)";\r
     }\r
-    if (GQUtils.eq("~", op)) {\r
+    if (JsUtils.eq("~", op)) {\r
       return "\\b" + attrVal + "\\b";\r
     }\r
-    return GQUtils.truth(attrVal) ? "^" + attrVal + "$" : null;\r
+    return JsUtils.truth(attrVal) ? "^" + attrVal + "$" : null;\r
   }\r
 \r
   private static native boolean checked(Node previous) /*-{\r
     return previous.checked || false;\r
   }-*/;\r
 \r
-  private static void clearChildElms(JSArray prevParents) {\r
+  private static void clearChildElms(JsNodeArray prevParents) {\r
     for (int n = 0, nl = prevParents.size(); n < nl; n++) {\r
       setHasChildElms(prevParents.getNode(n), false);\r
     }\r
@@ -193,7 +194,7 @@ public class SelectorEngineJS extends SelectorEngineImpl {
     return !node.disabled;\r
   }-*/;\r
 \r
-  private static void getDescendantNodes(JSArray matchingElms,\r
+  private static void getDescendantNodes(JsNodeArray matchingElms,\r
       String nextTagStr, Node prevRef) {\r
     NodeList<Element> children = getElementsByTagName(nextTagStr, prevRef);\r
     for (int k = 0, klen = children.getLength(); k < klen; k++) {\r
@@ -211,12 +212,12 @@ public class SelectorEngineJS extends SelectorEngineImpl {
     return ((Element) ctx).getElementsByTagName(tag);\r
   }\r
 \r
-  private static void getGeneralSiblingNodes(JSArray matchingElms,\r
-      JSArray nextTag, JSRegexp nextRegExp, Node prevRef) {\r
+  private static void getGeneralSiblingNodes(JsNodeArray matchingElms,\r
+      JsObjectArray<String> nextTag, JsRegexp nextRegExp, Node prevRef) {\r
     while (\r
-        GQUtils.truth((prevRef = SelectorEngine.getNextSibling(prevRef)))\r
+        JsUtils.truth((prevRef = SelectorEngine.getNextSibling(prevRef)))\r
             && !isAdded(prevRef)) {\r
-      if (!GQUtils.truth(nextTag) || nextRegExp\r
+      if (!JsUtils.truth(nextTag) || nextRegExp\r
           .test(prevRef.getNodeName())) {\r
         setAdded(prevRef, true);\r
         matchingElms.addNode(prevRef);\r
@@ -224,14 +225,14 @@ public class SelectorEngineJS extends SelectorEngineImpl {
     }\r
   }\r
 \r
-  private static void getSiblingNodes(JSArray matchingElms, JSArray nextTag,\r
-      JSRegexp nextRegExp, Node prevRef) {\r
+  private static void getSiblingNodes(JsNodeArray matchingElms, JsObjectArray<String> nextTag,\r
+      JsRegexp nextRegExp, Node prevRef) {\r
     while (\r
-        GQUtils.truth(prevRef = SelectorEngine.getNextSibling(prevRef))\r
+        JsUtils.truth(prevRef = SelectorEngine.getNextSibling(prevRef))\r
             && prevRef.getNodeType() != Node.ELEMENT_NODE) {\r
     }\r
-    if (GQUtils.truth(prevRef)) {\r
-      if (!GQUtils.truth(nextTag) || nextRegExp\r
+    if (JsUtils.truth(prevRef)) {\r
+      if (!JsUtils.truth(nextTag) || nextRegExp\r
           .test(prevRef.getNodeName())) {\r
         matchingElms.addNode(prevRef);\r
       }\r
@@ -242,7 +243,7 @@ public class SelectorEngineJS extends SelectorEngineImpl {
       return prevParent.childElms || false;\r
     }-*/;\r
 \r
-  private static native boolean isSkipped(JSArray prevElem) /*-{\r
+  private static native boolean isSkipped(JsNodeArray prevElem) /*-{\r
        return prevElem.skipTag || false;\r
     }-*/;\r
 \r
@@ -250,8 +251,8 @@ public class SelectorEngineJS extends SelectorEngineImpl {
       prevParent.childElms = bool ? bool : null;\r
     }-*/;\r
 \r
-  private static native JSArray subtractArray(JSArray previousMatch,\r
-      JSArray elementsByPseudo) /*-{\r
+  private static native JsNodeArray subtractArray(JsNodeArray previousMatch,\r
+      JsNodeArray elementsByPseudo) /*-{\r
       for (var i=0, src1; (src1=arr1[i]); i++) {\r
         var found = false;\r
         for (var j=0, src2; (src2=arr2[j]); j++) {\r
@@ -267,28 +268,28 @@ public class SelectorEngineJS extends SelectorEngineImpl {
       return arr;\r
     }-*/;\r
 \r
-  private JSRegexp cssSelectorRegExp;\r
+  private JsRegexp cssSelectorRegExp;\r
 \r
-  private JSRegexp selectorSplitRegExp;\r
+  private JsRegexp selectorSplitRegExp;\r
 \r
-  private JSRegexp childOrSiblingRefRegExp;\r
+  private JsRegexp childOrSiblingRefRegExp;\r
 \r
   public SelectorEngineJS() {\r
-    selectorSplitRegExp = new JSRegexp("[^\\s]+", "g");\r
-    childOrSiblingRefRegExp = new JSRegexp("^(>|\\+|~)$");\r
-    cssSelectorRegExp = new JSRegexp(\r
+    selectorSplitRegExp = new JsRegexp("[^\\s]+", "g");\r
+    childOrSiblingRefRegExp = new JsRegexp("^(>|\\+|~)$");\r
+    cssSelectorRegExp = new JsRegexp(\r
         "^(\\w+)?(#[\\w\\u00C0-\\uFFFF\\-\\_]+|(\\*))?((\\.[\\w\\u00C0-\\uFFFF\\-_]+)*)?((\\[\\w+(\\^|\\$|\\*|\\||~)?(=[\"']*[\\w\\u00C0-\\uFFFF\\s\\-\\_\\.]+[\"']*)?\\]+)*)?(((:\\w+[\\w\\-]*)(\\((odd|even|\\-?\\d*n?((\\+|\\-)\\d+)?|[\\w\\u00C0-\\uFFFF\\-_]+|((\\w*\\.[\\w\\u00C0-\\uFFFF\\-_]+)*)?|(\\[#?\\w+(\\^|\\$|\\*|\\||~)?=?[\\w\\u00C0-\\uFFFF\\s\\-\\_\\.]+\\]+)|(:\\w+[\\w\\-]*))\\))?)*)?");\r
   }\r
 \r
   public NodeList<Element> select(String sel, Node ctx) {\r
     String selectors[] = sel.replace("\\s*(,)\\s*", "$1").split(",");\r
     boolean identical = false;\r
-    JSArray elm = JSArray.create();\r
+    JsNodeArray elm = JsNodeArray.create();\r
     for (int a = 0, len = selectors.length; a < len; a++) {\r
       if (a > 0) {\r
         identical = false;\r
         for (int b = 0, bl = a; b < bl; b++) {\r
-          if (GQUtils.eq(selectors[a], selectors[b])) {\r
+          if (JsUtils.eq(selectors[a], selectors[b])) {\r
             identical = true;\r
             break;\r
           }\r
@@ -298,61 +299,61 @@ public class SelectorEngineJS extends SelectorEngineImpl {
         }\r
       }\r
       String currentRule = selectors[a];\r
-      JSArray cssSelectors = selectorSplitRegExp.match(currentRule);\r
-      JSArray prevElem = JSArray.create(ctx);\r
-      for (int i = 0, slen = cssSelectors.size(); i < slen; i++) {\r
-        JSArray matchingElms = JSArray.create();\r
-        String rule = cssSelectors.getStr(i);\r
+      JsObjectArray<String> cssSelectors = selectorSplitRegExp.match(currentRule);\r
+      JsNodeArray prevElem = JsNodeArray.create(ctx);\r
+      for (int i = 0, slen = cssSelectors.length(); i < slen; i++) {\r
+        JsNodeArray matchingElms = JsNodeArray.create();\r
+        String rule = cssSelectors.get(i);\r
         if (i > 0 && childOrSiblingRefRegExp.test(rule)) {\r
-          JSArray childOrSiblingRef = childOrSiblingRefRegExp.exec(rule);\r
-          if (GQUtils.truth(childOrSiblingRef)) {\r
-            JSArray nextTag = new JSRegexp("^\\w+")\r
-                .exec(cssSelectors.getStr(i + 1));\r
-            JSRegexp nextRegExp = null;\r
+          JsObjectArray<String> childOrSiblingRef = childOrSiblingRefRegExp.exec(rule);\r
+          if (JsUtils.truth(childOrSiblingRef)) {\r
+            JsObjectArray<String> nextTag = new JsRegexp("^\\w+")\r
+                .exec(cssSelectors.get(i + 1));\r
+            JsRegexp nextRegExp = null;\r
             String nextTagStr = null;\r
-            if (GQUtils.truth(nextTag)) {\r
-              nextTagStr = nextTag.getStr(0);\r
-              nextRegExp = new JSRegexp("(^|\\s)" + nextTagStr + "(\\s|$)", "i");\r
+            if (JsUtils.truth(nextTag)) {\r
+              nextTagStr = nextTag.get(0);\r
+              nextRegExp = new JsRegexp("(^|\\s)" + nextTagStr + "(\\s|$)", "i");\r
             }\r
             for (int j = 0, jlen = prevElem.size(); j < jlen; j++) {\r
               Node prevRef = prevElem.getNode(j);\r
-              String ref = childOrSiblingRef.getStr(0);\r
-              if (GQUtils.eq(">", ref)) {\r
+              String ref = childOrSiblingRef.get(0);\r
+              if (JsUtils.eq(">", ref)) {\r
                 getDescendantNodes(matchingElms, nextTagStr, prevRef);\r
-              } else if (GQUtils.eq("+", ref)) {\r
+              } else if (JsUtils.eq("+", ref)) {\r
                 getSiblingNodes(matchingElms, nextTag, nextRegExp, prevRef);\r
-              } else if (GQUtils.eq("~", ref)) {\r
+              } else if (JsUtils.eq("~", ref)) {\r
                 getGeneralSiblingNodes(matchingElms, nextTag, nextRegExp,\r
                     prevRef);\r
               }\r
             }\r
             prevElem = matchingElms;\r
             clearAdded(prevElem);\r
-            rule = cssSelectors.getStr(++i);\r
-            if (new JSRegexp("^\\w+$").test(rule)) {\r
+            rule = cssSelectors.get(++i);\r
+            if (new JsRegexp("^\\w+$").test(rule)) {\r
               continue;\r
             }\r
             setSkipTag(prevElem, true);\r
           }\r
         }\r
-        JSArray cssSelector = cssSelectorRegExp.exec(rule);\r
+        JsObjectArray<String> cssSelector = cssSelectorRegExp.exec(rule);\r
         SplitRule splitRule = new SplitRule(\r
-            !GQUtils.truth(cssSelector.getStr(1)) || GQUtils\r
-                .eq(cssSelector.getStr(3), "*") ? "*" : cssSelector.getStr(1),\r
-            !GQUtils.eq(cssSelector.getStr(3), "*") ? cssSelector\r
-                .getStr(2) : null, cssSelector.getStr(4), cssSelector.getStr(6),\r
-            cssSelector.getStr(10));\r
-        if (GQUtils.truth(splitRule.id)) {\r
+            !JsUtils.truth(cssSelector.get(1)) || JsUtils\r
+                .eq(cssSelector.get(3), "*") ? "*" : cssSelector.get(1),\r
+            !JsUtils.eq(cssSelector.get(3), "*") ? cssSelector\r
+                .get(2) : null, cssSelector.get(4), cssSelector.get(6),\r
+            cssSelector.get(10));\r
+        if (JsUtils.truth(splitRule.id)) {\r
           Element domelem = Document.get()\r
               .getElementById(splitRule.id.substring(1));\r
-          if (GQUtils.truth(domelem)) {\r
-            matchingElms = JSArray.create(domelem);\r
+          if (JsUtils.truth(domelem)) {\r
+            matchingElms = JsNodeArray.create(domelem);\r
           }\r
           prevElem = matchingElms;\r
-        } else if (GQUtils.truth(splitRule.tag) && !isSkipped(\r
+        } else if (JsUtils.truth(splitRule.tag) && !isSkipped(\r
             prevElem)) {\r
           if (i == 0 && matchingElms.size() == 0 && prevElem.size() == 1) {\r
-            prevElem = matchingElms = JSArray.create(\r
+            prevElem = matchingElms = JsNodeArray.create(\r
                 getElementsByTagName(splitRule.tag, prevElem.getNode(0)));\r
           } else {\r
             NodeList<Element> tagCollectionMatches;\r
@@ -376,20 +377,20 @@ public class SelectorEngineJS extends SelectorEngineImpl {
             break;\r
           }\r
           setSkipTag(prevElem, false);\r
-          if (GQUtils.truth(splitRule.allClasses)) {\r
+          if (JsUtils.truth(splitRule.allClasses)) {\r
             String[] allClasses = splitRule.allClasses.replaceFirst("^\\.", "")\r
                 .split("\\.");\r
-            JSRegexp[] regExpClassNames = new JSRegexp[allClasses.length];\r
+            JsRegexp[] regExpClassNames = new JsRegexp[allClasses.length];\r
             for (int n = 0, nl = allClasses.length; n < nl; n++) {\r
-              regExpClassNames[n] = new JSRegexp(\r
+              regExpClassNames[n] = new JsRegexp(\r
                   "(^|\\s)" + allClasses[n] + "(\\s|$)");\r
             }\r
-            JSArray matchingClassElms = JSArray.create();\r
+            JsNodeArray matchingClassElms = JsNodeArray.create();\r
             for (int o = 0, olen = prevElem.size(); o < olen; o++) {\r
               Element current = prevElem.getElement(o);\r
               String elmClass = current.getClassName();\r
               boolean addElm = false;\r
-              if (GQUtils.truth(elmClass) && !isAdded(current)) {\r
+              if (JsUtils.truth(elmClass) && !isAdded(current)) {\r
                 for (int p = 0, pl = regExpClassNames.length; p < pl; p++) {\r
                   addElm = regExpClassNames[p].test(elmClass);\r
                   if (!addElm) {\r
@@ -405,27 +406,27 @@ public class SelectorEngineJS extends SelectorEngineImpl {
             clearAdded(prevElem);\r
             prevElem = matchingElms = matchingClassElms;\r
           }\r
-          if (GQUtils.truth(splitRule.allAttr)) {\r
-            JSArray allAttr = JSRegexp\r
+          if (JsUtils.truth(splitRule.allAttr)) {\r
+            JsObjectArray<String> allAttr = JsRegexp\r
                 .match("\\[[^\\]]+\\]", "g", splitRule.allAttr);\r
-            JSRegexp[] regExpAttributes = new JSRegexp[allAttr.size()];\r
-            String[] regExpAttributesStr = new String[allAttr.size()];\r
-            JSRegexp attributeMatchRegExp = new JSRegexp(\r
+            JsRegexp[] regExpAttributes = new JsRegexp[allAttr.length()];\r
+            String[] regExpAttributesStr = new String[allAttr.length()];\r
+            JsRegexp attributeMatchRegExp = new JsRegexp(\r
                 "(\\w+)(\\^|\\$|\\*|\\||~)?=?[\"']?([\\w\u00C0-\uFFFF\\s\\-_\\.]+)?");\r
-            for (int q = 0, ql = allAttr.size(); q < ql; q++) {\r
-              JSArray attributeMatch = attributeMatchRegExp\r
-                  .exec(allAttr.getStr(q));\r
+            for (int q = 0, ql = allAttr.length(); q < ql; q++) {\r
+              JsObjectArray<String> attributeMatch = attributeMatchRegExp\r
+                  .exec(allAttr.get(q));\r
               String attributeValue =\r
-                  GQUtils.truth(attributeMatch.getStr(3))\r
-                      ? attributeMatch.getStr(3).replaceAll("\\.", "\\.")\r
+                  JsUtils.truth(attributeMatch.get(3))\r
+                      ? attributeMatch.get(3).replaceAll("\\.", "\\.")\r
                       : null;\r
               String attrVal = attrToRegExp(attributeValue,\r
-                  (GQUtils.or(attributeMatch.getStr(2), null)));\r
-              regExpAttributes[q] = (GQUtils.truth(attrVal) ? new JSRegexp(\r
+                  (JsUtils.or(attributeMatch.get(2), null)));\r
+              regExpAttributes[q] = (JsUtils.truth(attrVal) ? new JsRegexp(\r
                   attrVal) : null);\r
-              regExpAttributesStr[q] = attributeMatch.getStr(1);\r
+              regExpAttributesStr[q] = attributeMatch.get(1);\r
             }\r
-            JSArray matchingAttributeElms = JSArray.create();\r
+            JsNodeArray matchingAttributeElms = JsNodeArray.create();\r
 \r
             for (int r = 0, rlen = matchingElms.size(); r < rlen; r++) {\r
               Element current = matchingElms.getElement(r);\r
@@ -433,9 +434,9 @@ public class SelectorEngineJS extends SelectorEngineImpl {
               for (int s = 0, sl = regExpAttributes.length;\r
                   s < sl; s++) {\r
                 addElm = false;\r
-                JSRegexp attributeRegexp = regExpAttributes[s];\r
+                JsRegexp attributeRegexp = regExpAttributes[s];\r
                 String currentAttr = getAttr(current, regExpAttributesStr[s]);\r
-                if (GQUtils.truth(currentAttr)\r
+                if (JsUtils.truth(currentAttr)\r
                     && currentAttr.length() != 0) {\r
                   if (attributeRegexp == null || attributeRegexp\r
                       .test(currentAttr)) {\r
@@ -452,19 +453,19 @@ public class SelectorEngineJS extends SelectorEngineImpl {
             }\r
             prevElem = matchingElms = matchingAttributeElms;\r
           }\r
-          if (GQUtils.truth(splitRule.allPseudos)) {\r
-            JSRegexp pseudoSplitRegExp = new JSRegexp(\r
+          if (JsUtils.truth(splitRule.allPseudos)) {\r
+            JsRegexp pseudoSplitRegExp = new JsRegexp(\r
                 ":(\\w[\\w\\-]*)(\\(([^\\)]+)\\))?");\r
 \r
-            JSArray allPseudos = JSRegexp\r
+            JsObjectArray<String> allPseudos = JsRegexp\r
                 .match("(:\\w+[\\w\\-]*)(\\([^\\)]+\\))?", "g",\r
                     splitRule.allPseudos);\r
-            for (int t = 0, tl = allPseudos.size(); t < tl; t++) {\r
-              JSArray pseudo = pseudoSplitRegExp.match(allPseudos.getStr(t));\r
-              String pseudoClass = GQUtils.truth(pseudo.getStr(1))\r
-                  ? pseudo.getStr(1).toLowerCase() : null;\r
-              String pseudoValue = GQUtils.truth(pseudo.getStr(3))\r
-                  ? pseudo.getStr(3) : null;\r
+            for (int t = 0, tl = allPseudos.length(); t < tl; t++) {\r
+              JsObjectArray<String> pseudo = pseudoSplitRegExp.match(allPseudos.get(t));\r
+              String pseudoClass = JsUtils.truth(pseudo.get(1))\r
+                  ? pseudo.get(1).toLowerCase() : null;\r
+              String pseudoValue = JsUtils.truth(pseudo.get(3))\r
+                  ? pseudo.get(3) : null;\r
               matchingElms = getElementsByPseudo(matchingElms, pseudoClass,\r
                   pseudoValue);\r
               clearAdded(matchingElms);\r
@@ -476,14 +477,14 @@ public class SelectorEngineJS extends SelectorEngineImpl {
       elm.pushAll(prevElem);\r
     }\r
 \r
-    return GQUtils.unique(elm.<JsArray<Element>>cast()).cast();\r
+    return JsUtils.unique(elm.<JsArray<Element>>cast()).cast();\r
   }\r
 \r
   protected String getAttr(Element current, String name) {\r
     return current.getAttribute(name);\r
   }\r
 \r
-  private void getCheckedPseudo(JSArray previousMatch, JSArray matchingElms) {\r
+  private void getCheckedPseudo(JsNodeArray previousMatch, JsNodeArray matchingElms) {\r
     Node previous;\r
     for (int q = 0, qlen = previousMatch.size(); q < qlen; q++) {\r
       previous = previousMatch.getNode(q);\r
@@ -493,8 +494,8 @@ public class SelectorEngineJS extends SelectorEngineImpl {
     }\r
   }\r
 \r
-  private void getContainsPseudo(JSArray previousMatch, String pseudoValue,\r
-      JSArray matchingElms) {\r
+  private void getContainsPseudo(JsNodeArray previousMatch, String pseudoValue,\r
+      JsNodeArray matchingElms) {\r
     Node previous;\r
     for (int q = 0, qlen = previousMatch.size(); q < qlen; q++) {\r
       previous = previousMatch.getNode(q);\r
@@ -507,19 +508,19 @@ public class SelectorEngineJS extends SelectorEngineImpl {
     }\r
   }\r
 \r
-  private void getDefaultPseudo(JSArray previousMatch, String pseudoClass,\r
-      String pseudoValue, JSArray matchingElms) {\r
+  private void getDefaultPseudo(JsNodeArray previousMatch, String pseudoClass,\r
+      String pseudoValue, JsNodeArray matchingElms) {\r
     Node previous;\r
     for (int w = 0, wlen = previousMatch.size(); w < wlen; w++) {\r
       previous = previousMatch.getElement(w);\r
-      if (GQUtils\r
+      if (JsUtils\r
           .eq(((Element) previous).getAttribute(pseudoClass), pseudoValue)) {\r
         matchingElms.addNode(previous);\r
       }\r
     }\r
   }\r
 \r
-  private void getDisabledPseudo(JSArray previousMatch, JSArray matchingElms) {\r
+  private void getDisabledPseudo(JsNodeArray previousMatch, JsNodeArray matchingElms) {\r
     Node previous;\r
     for (int q = 0, qlen = previousMatch.size(); q < qlen; q++) {\r
       previous = previousMatch.getNode(q);\r
@@ -529,38 +530,38 @@ public class SelectorEngineJS extends SelectorEngineImpl {
     }\r
   }\r
 \r
-  private JSArray getElementsByPseudo(JSArray previousMatch, String pseudoClass,\r
+  private JsNodeArray getElementsByPseudo(JsNodeArray previousMatch, String pseudoClass,\r
       String pseudoValue) {\r
-    JSArray prevParents = JSArray.create();\r
+    JsNodeArray prevParents = JsNodeArray.create();\r
     boolean previousDir = pseudoClass.startsWith("first") ? true : false;\r
-    JSArray matchingElms = JSArray.create();\r
-    if (GQUtils.eq("first-child", pseudoClass) || GQUtils\r
+    JsNodeArray matchingElms = JsNodeArray.create();\r
+    if (JsUtils.eq("first-child", pseudoClass) || JsUtils\r
         .eq("last-child", pseudoClass)) {\r
       getFirstChildPseudo(previousMatch, previousDir, matchingElms);\r
-    } else if (GQUtils.eq("only-child", pseudoClass)) {\r
+    } else if (JsUtils.eq("only-child", pseudoClass)) {\r
       getOnlyChildPseudo(previousMatch, matchingElms);\r
-    } else if (GQUtils.eq("nth-child", pseudoClass)) {\r
+    } else if (JsUtils.eq("nth-child", pseudoClass)) {\r
       matchingElms = getNthChildPseudo(previousMatch, pseudoValue, prevParents,\r
           matchingElms);\r
-    } else if (GQUtils.eq("first-of-type", pseudoClass) || GQUtils\r
+    } else if (JsUtils.eq("first-of-type", pseudoClass) || JsUtils\r
         .eq("last-of-type", pseudoClass)) {\r
       getFirstOfTypePseudo(previousMatch, previousDir, matchingElms);\r
-    } else if (GQUtils.eq("only-of-type", pseudoClass)) {\r
+    } else if (JsUtils.eq("only-of-type", pseudoClass)) {\r
       getOnlyOfTypePseudo(previousMatch, matchingElms);\r
-    } else if (GQUtils.eq("nth-of-type", pseudoClass)) {\r
+    } else if (JsUtils.eq("nth-of-type", pseudoClass)) {\r
       matchingElms = getNthOfTypePseudo(previousMatch, pseudoValue, prevParents,\r
           matchingElms);\r
-    } else if (GQUtils.eq("empty", pseudoClass)) {\r
+    } else if (JsUtils.eq("empty", pseudoClass)) {\r
       getEmptyPseudo(previousMatch, matchingElms);\r
-    } else if (GQUtils.eq("enabled", pseudoClass)) {\r
+    } else if (JsUtils.eq("enabled", pseudoClass)) {\r
       getEnabledPseudo(previousMatch, matchingElms);\r
-    } else if (GQUtils.eq("disabled", pseudoClass)) {\r
+    } else if (JsUtils.eq("disabled", pseudoClass)) {\r
       getDisabledPseudo(previousMatch, matchingElms);\r
-    } else if (GQUtils.eq("checked", pseudoClass)) {\r
+    } else if (JsUtils.eq("checked", pseudoClass)) {\r
       getCheckedPseudo(previousMatch, matchingElms);\r
-    } else if (GQUtils.eq("contains", pseudoClass)) {\r
+    } else if (JsUtils.eq("contains", pseudoClass)) {\r
       getContainsPseudo(previousMatch, pseudoValue, matchingElms);\r
-    } else if (GQUtils.eq("not", pseudoClass)) {\r
+    } else if (JsUtils.eq("not", pseudoClass)) {\r
       matchingElms = getNotPseudo(previousMatch, pseudoValue, matchingElms);\r
     } else {\r
       getDefaultPseudo(previousMatch, pseudoClass, pseudoValue, matchingElms);\r
@@ -568,7 +569,7 @@ public class SelectorEngineJS extends SelectorEngineImpl {
     return matchingElms;\r
   }\r
 \r
-  private void getEmptyPseudo(JSArray previousMatch, JSArray matchingElms) {\r
+  private void getEmptyPseudo(JsNodeArray previousMatch, JsNodeArray matchingElms) {\r
     Node previous;\r
     for (int q = 0, qlen = previousMatch.size(); q < qlen; q++) {\r
       previous = previousMatch.getNode(q);\r
@@ -578,7 +579,7 @@ public class SelectorEngineJS extends SelectorEngineImpl {
     }\r
   }\r
 \r
-  private void getEnabledPseudo(JSArray previousMatch, JSArray matchingElms) {\r
+  private void getEnabledPseudo(JsNodeArray previousMatch, JsNodeArray matchingElms) {\r
     Node previous;\r
     for (int q = 0, qlen = previousMatch.size(); q < qlen; q++) {\r
       previous = previousMatch.getNode(q);\r
@@ -588,31 +589,31 @@ public class SelectorEngineJS extends SelectorEngineImpl {
     }\r
   }\r
 \r
-  private void getFirstChildPseudo(JSArray previousMatch, boolean previousDir,\r
-      JSArray matchingElms) {\r
+  private void getFirstChildPseudo(JsNodeArray previousMatch, boolean previousDir,\r
+      JsNodeArray matchingElms) {\r
     Node next;\r
     Node previous;\r
     for (int j = 0, jlen = previousMatch.size(); j < jlen; j++) {\r
       previous = next = previousMatch.getElement(j);\r
       if (previousDir) {\r
-        while (GQUtils\r
+        while (JsUtils\r
             .truth((next = SelectorEngine.getPreviousSibling(next)))\r
             && next.getNodeType() != Node.ELEMENT_NODE) {\r
         }\r
       } else {\r
         while (\r
-            GQUtils.truth((next = SelectorEngine.getNextSibling(next)))\r
+            JsUtils.truth((next = SelectorEngine.getNextSibling(next)))\r
                 && next.getNodeType() != Node.ELEMENT_NODE) {\r
         }\r
       }\r
-      if (!GQUtils.truth(next)) {\r
+      if (!JsUtils.truth(next)) {\r
         matchingElms.addNode(previous);\r
       }\r
     }\r
   }\r
 \r
-  private void getFirstOfTypePseudo(JSArray previousMatch, boolean previousDir,\r
-      JSArray matchingElms) {\r
+  private void getFirstOfTypePseudo(JsNodeArray previousMatch, boolean previousDir,\r
+      JsNodeArray matchingElms) {\r
     Node previous;\r
     Node next;\r
     for (int n = 0, nlen = previousMatch.size(); n < nlen; n++) {\r
@@ -620,63 +621,63 @@ public class SelectorEngineJS extends SelectorEngineImpl {
 \r
       if (previousDir) {\r
         while (\r
-            GQUtils.truth(next = SelectorEngine.getPreviousSibling(next))\r
-                && !GQUtils\r
+            JsUtils.truth(next = SelectorEngine.getPreviousSibling(next))\r
+                && !JsUtils\r
                 .eq(next.getNodeName(), previous.getNodeName())) {\r
         }\r
       } else {\r
-        while (GQUtils.truth(next = SelectorEngine.getNextSibling(next))\r
-            && !GQUtils.eq(next.getNodeName(), previous.getNodeName())) {\r
+        while (JsUtils.truth(next = SelectorEngine.getNextSibling(next))\r
+            && !JsUtils.eq(next.getNodeName(), previous.getNodeName())) {\r
         }\r
       }\r
 \r
-      if (!GQUtils.truth(next)) {\r
+      if (!JsUtils.truth(next)) {\r
         matchingElms.addNode(previous);\r
       }\r
     }\r
   }\r
 \r
-  private JSArray getNotPseudo(JSArray previousMatch, String pseudoValue,\r
-      JSArray matchingElms) {\r
-    if (new JSRegexp("(:\\w+[\\w\\-]*)$").test(pseudoValue)) {\r
+  private JsNodeArray getNotPseudo(JsNodeArray previousMatch, String pseudoValue,\r
+      JsNodeArray matchingElms) {\r
+    if (new JsRegexp("(:\\w+[\\w\\-]*)$").test(pseudoValue)) {\r
       matchingElms = subtractArray(previousMatch,\r
           getElementsByPseudo(previousMatch, pseudoValue.substring(1), ""));\r
     } else {\r
       pseudoValue = pseudoValue\r
           .replace("^\\[#([\\w\\u00C0-\\uFFFF\\-\\_]+)\\]$", "[id=$1]");\r
-      JSArray notTag = new JSRegexp("^(\\w+)").exec(pseudoValue);\r
-      JSArray notClass = new JSRegexp("^\\.([\\w\u00C0-\uFFFF\\-_]+)")\r
+      JsObjectArray<String> notTag = new JsRegexp("^(\\w+)").exec(pseudoValue);\r
+      JsObjectArray<String> notClass = new JsRegexp("^\\.([\\w\u00C0-\uFFFF\\-_]+)")\r
           .exec(pseudoValue);\r
-      JSArray notAttr = new JSRegexp(\r
+      JsObjectArray<String> notAttr = new JsRegexp(\r
           "\\[(\\w+)(\\^|\\$|\\*|\\||~)?=?([\\w\\u00C0-\\uFFFF\\s\\-_\\.]+)?\\]")\r
           .exec(pseudoValue);\r
-      JSRegexp notRegExp = new JSRegexp("(^|\\s)"\r
-          + (GQUtils.truth(notTag) ? notTag.getStr(1)\r
-          : GQUtils.truth(notClass) ? notClass.getStr(1) : "")\r
+      JsRegexp notRegExp = new JsRegexp("(^|\\s)"\r
+          + (JsUtils.truth(notTag) ? notTag.get(1)\r
+          : JsUtils.truth(notClass) ? notClass.get(1) : "")\r
           + "(\\s|$)", "i");\r
-      if (GQUtils.truth(notAttr)) {\r
-        String notAttribute = GQUtils.truth(notAttr.getStr(3)) ? notAttr\r
-            .getStr(3).replace("\\.", "\\.") : null;\r
+      if (JsUtils.truth(notAttr)) {\r
+        String notAttribute = JsUtils.truth(notAttr.get(3)) ? notAttr\r
+            .get(3).replace("\\.", "\\.") : null;\r
         String notMatchingAttrVal = attrToRegExp(notAttribute,\r
-            notAttr.getStr(2));\r
-        notRegExp = new JSRegexp(notMatchingAttrVal, "i");\r
+            notAttr.get(2));\r
+        notRegExp = new JsRegexp(notMatchingAttrVal, "i");\r
       }\r
       for (int v = 0, vlen = previousMatch.size(); v < vlen; v++) {\r
         Element notElm = previousMatch.getElement(v);\r
         Element addElm = null;\r
-        if (GQUtils.truth(notTag) && !notRegExp\r
+        if (JsUtils.truth(notTag) && !notRegExp\r
             .test(notElm.getNodeName())) {\r
           addElm = notElm;\r
-        } else if (GQUtils.truth(notClass) && !notRegExp\r
+        } else if (JsUtils.truth(notClass) && !notRegExp\r
             .test(notElm.getClassName())) {\r
           addElm = notElm;\r
-        } else if (GQUtils.truth(notAttr)) {\r
-          String att = getAttr(notElm, notAttr.getStr(1));\r
-          if (!GQUtils.truth(att) || !notRegExp.test(att)) {\r
+        } else if (JsUtils.truth(notAttr)) {\r
+          String att = getAttr(notElm, notAttr.get(1));\r
+          if (!JsUtils.truth(att) || !notRegExp.test(att)) {\r
             addElm = notElm;\r
           }\r
         }\r
-        if (GQUtils.truth(addElm) && !isAdded(addElm)) {\r
+        if (JsUtils.truth(addElm) && !isAdded(addElm)) {\r
           setAdded(addElm, true);\r
           matchingElms.addNode(addElm);\r
         }\r
@@ -685,10 +686,10 @@ public class SelectorEngineJS extends SelectorEngineImpl {
     return matchingElms;\r
   }\r
 \r
-  private JSArray getNthChildPseudo(JSArray previousMatch, String pseudoValue,\r
-      JSArray prevParents, JSArray matchingElms) {\r
+  private JsNodeArray getNthChildPseudo(JsNodeArray previousMatch, String pseudoValue,\r
+      JsNodeArray prevParents, JsNodeArray matchingElms) {\r
     Node previous;\r
-    if (GQUtils.eq(pseudoValue, "n")) {\r
+    if (JsUtils.eq(pseudoValue, "n")) {\r
       matchingElms = previousMatch;\r
     } else {\r
       Sequence sequence = getSequence(pseudoValue);\r
@@ -704,7 +705,7 @@ public class SelectorEngineJS extends SelectorEngineImpl {
                 || iteratorNext <= sequence.max)) {\r
               if (childElm.getNodeType() == Node.ELEMENT_NODE) {\r
                 if (++childCount == iteratorNext) {\r
-                  if (GQUtils\r
+                  if (JsUtils\r
                       .eq(childElm.getNodeName(), previous.getNodeName())) {\r
                     matchingElms.addNode(childElm);\r
                   }\r
@@ -723,8 +724,8 @@ public class SelectorEngineJS extends SelectorEngineImpl {
     return matchingElms;\r
   }\r
 \r
-  private JSArray getNthOfTypePseudo(JSArray previousMatch, String pseudoValue,\r
-      JSArray prevParents, JSArray matchingElms) {\r
+  private JsNodeArray getNthOfTypePseudo(JsNodeArray previousMatch, String pseudoValue,\r
+      JsNodeArray prevParents, JsNodeArray matchingElms) {\r
     Node previous;\r
     if (pseudoValue.startsWith("n")) {\r
       matchingElms = previousMatch;\r
@@ -738,9 +739,9 @@ public class SelectorEngineJS extends SelectorEngineImpl {
             int iteratorNext = sequence.start;\r
             int childCount = 0;\r
             Node childElm = prevParent.getFirstChild();\r
-            while (GQUtils.truth(childElm) && (sequence.max < 0\r
+            while (JsUtils.truth(childElm) && (sequence.max < 0\r
                 || iteratorNext <= sequence.max)) {\r
-              if (GQUtils\r
+              if (JsUtils\r
                   .eq(childElm.getNodeName(), previous.getNodeName())) {\r
                 if (++childCount == iteratorNext) {\r
                   matchingElms.addNode(childElm);\r
@@ -759,7 +760,7 @@ public class SelectorEngineJS extends SelectorEngineImpl {
     return matchingElms;\r
   }\r
 \r
-  private void getOnlyChildPseudo(JSArray previousMatch, JSArray matchingElms) {\r
+  private void getOnlyChildPseudo(JsNodeArray previousMatch, JsNodeArray matchingElms) {\r
     Node previous;\r
     Node next;\r
     Node prev;\r
@@ -769,13 +770,13 @@ public class SelectorEngineJS extends SelectorEngineImpl {
       Node prevParent = previous.getParentNode();\r
       if (prevParent != kParent) {\r
         while (\r
-            GQUtils.truth(prev = SelectorEngine.getPreviousSibling(prev))\r
+            JsUtils.truth(prev = SelectorEngine.getPreviousSibling(prev))\r
                 && prev.getNodeType() != Node.ELEMENT_NODE) {\r
         }\r
-        while (GQUtils.truth(next = SelectorEngine.getNextSibling(next))\r
+        while (JsUtils.truth(next = SelectorEngine.getNextSibling(next))\r
             && next.getNodeType() != Node.ELEMENT_NODE) {\r
         }\r
-        if (!GQUtils.truth(prev) && !GQUtils.truth(next)) {\r
+        if (!JsUtils.truth(prev) && !JsUtils.truth(next)) {\r
           matchingElms.addNode(previous);\r
         }\r
         kParent = prevParent;\r
@@ -783,8 +784,8 @@ public class SelectorEngineJS extends SelectorEngineImpl {
     }\r
   }\r
 \r
-  private void getOnlyOfTypePseudo(JSArray previousMatch,\r
-      JSArray matchingElms) {\r
+  private void getOnlyOfTypePseudo(JsNodeArray previousMatch,\r
+      JsNodeArray matchingElms) {\r
     Node previous;\r
     Node next;\r
     Node prev;\r
@@ -794,14 +795,14 @@ public class SelectorEngineJS extends SelectorEngineImpl {
       Node prevParent = previous.getParentNode();\r
       if (prevParent != oParent) {\r
         while (\r
-            GQUtils.truth(prev = SelectorEngine.getPreviousSibling(prev))\r
-                && !GQUtils\r
+            JsUtils.truth(prev = SelectorEngine.getPreviousSibling(prev))\r
+                && !JsUtils\r
                 .eq(prev.getNodeName(), previous.getNodeName())) {\r
         }\r
-        while (GQUtils.truth(next = SelectorEngine.getNextSibling(next))\r
-            && !GQUtils.eq(next.getNodeName(), previous.getNodeName())) {\r
+        while (JsUtils.truth(next = SelectorEngine.getNextSibling(next))\r
+            && !JsUtils.eq(next.getNodeName(), previous.getNodeName())) {\r
         }\r
-        if (!GQUtils.truth(prev) && !GQUtils.truth(next)) {\r
+        if (!JsUtils.truth(prev) && !JsUtils.truth(next)) {\r
           matchingElms.addNode(previous);\r
         }\r
         oParent = prevParent;\r
index dd19c1c868c595c82f35234258ad080d6595957b..7143870534ac2de5a38bdad46420e7041e0832df 100644 (file)
@@ -21,8 +21,8 @@ import com.google.gwt.core.client.JsArray;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.dom.client.Node;
 import com.google.gwt.dom.client.NodeList;
-import com.google.gwt.query.client.GQUtils;
 import com.google.gwt.query.client.impl.SelectorEngineImpl;
+import com.google.gwt.query.client.js.JsUtils;
 
 /**
  * Pure Javascript Selector Engine Gwt Implementation based on
@@ -734,6 +734,6 @@ public class SelectorEngineSizzleGwt extends SelectorEngineImpl {
   
   public NodeList<Element> select(String selector, Node context) {
     JsArray<Element> results = JavaScriptObject.createArray().cast();
-    return  GQUtils.unique(select(selector, context, results, null)).cast();
+    return  JsUtils.unique(select(selector, context, results, null)).cast();
   }
 }
index 08d9f1e9331632f56c0b133e1f0421938d4dcf10..dc1bb2b3010f9a42b7b80f4b0e9d227a88c65eeb 100644 (file)
  */\r
 package com.google.gwt.query.client.impl.research;\r
 \r
-import static com.google.gwt.query.client.GQUtils.eq;\r
-import static com.google.gwt.query.client.GQUtils.truth;\r
+import static com.google.gwt.query.client.js.JsUtils.eq;\r
+import static com.google.gwt.query.client.js.JsUtils.truth;\r
 \r
 import com.google.gwt.core.client.JsArray;\r
 import com.google.gwt.dom.client.Element;\r
 import com.google.gwt.dom.client.Node;\r
 import com.google.gwt.dom.client.NodeList;\r
-import com.google.gwt.query.client.GQUtils;\r
-import com.google.gwt.query.client.JSArray;\r
-import com.google.gwt.query.client.JSRegexp;\r
 import com.google.gwt.query.client.impl.SelectorEngine;\r
 import com.google.gwt.query.client.impl.SelectorEngineImpl;\r
 import com.google.gwt.query.client.impl.research.SelectorEngineJS.Sequence;\r
 import com.google.gwt.query.client.impl.research.SelectorEngineJS.SplitRule;\r
+import com.google.gwt.query.client.js.JsNodeArray;\r
+import com.google.gwt.query.client.js.JsObjectArray;\r
+import com.google.gwt.query.client.js.JsRegexp;\r
+import com.google.gwt.query.client.js.JsUtils;\r
 \r
 \r
 /**\r
@@ -59,11 +60,11 @@ public class SelectorEngineXPath extends SelectorEngineImpl {
     return "@" + p1 + (truth(p3) ? "='" + p3 + "'" : "");\r
   }\r
 \r
-  private JSRegexp cssSelectorRegExp;\r
+  private JsRegexp cssSelectorRegExp;\r
 \r
-  private JSRegexp selectorSplitRegExp;\r
+  private JsRegexp selectorSplitRegExp;\r
 \r
-  private JSRegexp combinator;\r
+  private JsRegexp combinator;\r
   \r
   public SelectorEngineXPath() {\r
   }\r
@@ -72,7 +73,7 @@ public class SelectorEngineXPath extends SelectorEngineImpl {
     init();\r
     String selectors[] = sel.replaceAll("\\s*(,)\\s*", "$1").split(",");\r
     boolean identical = false;\r
-    JSArray elm = JSArray.create();\r
+    JsNodeArray elm = JsNodeArray.create();\r
     for (int a = 0, len = selectors.length; a < len; a++) {\r
       if (a > 0) {\r
         identical = false;\r
@@ -87,17 +88,17 @@ public class SelectorEngineXPath extends SelectorEngineImpl {
         }\r
       }\r
       String currentRule = selectors[a];\r
-      JSArray cssSelectors = selectorSplitRegExp.match(currentRule);\r
+      JsObjectArray<String> cssSelectors = selectorSplitRegExp.match(currentRule);\r
       String xPathExpression = ".";\r
-      for (int i = 0, slen = cssSelectors.size(); i < slen; i++) {\r
-        String rule = cssSelectors.getStr(i);\r
-        JSArray cssSelector = cssSelectorRegExp.exec(rule);\r
+      for (int i = 0, slen = cssSelectors.length(); i < slen; i++) {\r
+        String rule = cssSelectors.get(i);\r
+        JsObjectArray<String> cssSelector = cssSelectorRegExp.exec(rule);\r
         SplitRule splitRule = new SplitRule(\r
-            !truth(cssSelector.getStr(1)) || eq(cssSelector.getStr(3), "*")\r
-                ? "*" : cssSelector.getStr(1),\r
-            !eq(cssSelector.getStr(3), "*") ? cssSelector.getStr(2) : null,\r
-            cssSelector.getStr(4), cssSelector.getStr(6),\r
-            cssSelector.getStr(10), cssSelector.getStr(22));\r
+            !truth(cssSelector.get(1)) || eq(cssSelector.get(3), "*")\r
+                ? "*" : cssSelector.get(1),\r
+            !eq(cssSelector.get(3), "*") ? cssSelector.get(2) : null,\r
+            cssSelector.get(4), cssSelector.get(6),\r
+            cssSelector.get(10), cssSelector.get(22));\r
         if (truth(splitRule.tagRelation)) {\r
           if (eq(">", splitRule.tagRelation)) {\r
             xPathExpression += "/child::";\r
@@ -108,7 +109,7 @@ public class SelectorEngineXPath extends SelectorEngineImpl {
           }\r
         } else {\r
           xPathExpression +=\r
-              (i > 0 && combinator.test(cssSelectors.getStr(i - 1)))\r
+              (i > 0 && combinator.test(cssSelectors.get(i - 1)))\r
                   ? splitRule.tag : ("/descendant::" + splitRule.tag);\r
         }\r
         if (truth(splitRule.id)) {\r
@@ -122,19 +123,19 @@ public class SelectorEngineXPath extends SelectorEngineImpl {
         }\r
         if (truth(splitRule.allAttr)) {\r
           xPathExpression += replaceAttr(\r
-              GQUtils.or(splitRule.allAttr, ""));\r
+              JsUtils.or(splitRule.allAttr, ""));\r
         }\r
         if (truth(splitRule.allPseudos)) {\r
-          JSRegexp pseudoSplitRegExp = new JSRegexp(\r
+          JsRegexp pseudoSplitRegExp = new JsRegexp(\r
               ":(\\w[\\w\\-]*)(\\(([^\\)]+)\\))?");\r
-          JSRegexp pseudoMatchRegExp = new JSRegexp(\r
+          JsRegexp pseudoMatchRegExp = new JsRegexp(\r
               "(:\\w+[\\w\\-]*)(\\([^\\)]+\\))?", "g");\r
-          JSArray allPseudos = pseudoMatchRegExp.match(splitRule.allPseudos);\r
-          for (int k = 0, kl = allPseudos.size(); k < kl; k++) {\r
-            JSArray pseudo = pseudoSplitRegExp.match(allPseudos.getStr(k));\r
-            String pseudoClass = truth(pseudo.getStr(1)) ? pseudo.getStr(1)\r
+          JsObjectArray<String> allPseudos = pseudoMatchRegExp.match(splitRule.allPseudos);\r
+          for (int k = 0, kl = allPseudos.length(); k < kl; k++) {\r
+            JsObjectArray<String> pseudo = pseudoSplitRegExp.match(allPseudos.get(k));\r
+            String pseudoClass = truth(pseudo.get(1)) ? pseudo.get(1)\r
                 .toLowerCase() : null;\r
-            String pseudoValue = truth(pseudo.getStr(3)) ? pseudo.getStr(3)\r
+            String pseudoValue = truth(pseudo.get(3)) ? pseudo.get(3)\r
                 : null;\r
             String xpath = pseudoToXPath(splitRule.tag, pseudoClass,\r
                 pseudoValue);\r
@@ -146,15 +147,15 @@ public class SelectorEngineXPath extends SelectorEngineImpl {
       }\r
       SelectorEngine.xpathEvaluate(xPathExpression, ctx, elm);\r
     }\r
-    return GQUtils.unique(elm.<JsArray<Element>>cast()).cast();\r
+    return JsUtils.unique(elm.<JsArray<Element>>cast()).cast();\r
   }\r
 \r
   private void init() {\r
     if (cssSelectorRegExp == null) {\r
-      cssSelectorRegExp = new JSRegexp(\r
+      cssSelectorRegExp = new JsRegexp(\r
           "^(\\w+)?(#[\\w\\u00C0-\\uFFFF\\-\\_]+|(\\*))?((\\.[\\w\\u00C0-\\uFFFF\\-_]+)*)?((\\[\\w+(\\^|\\$|\\*|\\||~)?(=[\"']*[\\w\\u00C0-\\uFFFF\\s\\-\\_\\.]+[\"']*)?\\]+)*)?(((:\\w+[\\w\\-]*)(\\((odd|even|\\-?\\d*n?((\\+|\\-)\\d+)?|[\\w\\u00C0-\\uFFFF\\-_]+|((\\w*\\.[\\w\\u00C0-\\uFFFF\\-_]+)*)?|(\\[#?\\w+(\\^|\\$|\\*|\\||~)?=?[\\w\\u00C0-\\uFFFF\\s\\-\\_\\.]+\\]+)|(:\\w+[\\w\\-]*))\\))?)*)?(>|\\+|~)?");\r
-      selectorSplitRegExp = new JSRegexp("[^\\s]+", "g");\r
-      combinator = new JSRegexp("(>|\\+|~)");\r
+      selectorSplitRegExp = new JsRegexp("[^\\s]+", "g");\r
+      combinator = new JsRegexp("(>|\\+|~)");\r
     }\r
   }\r
 \r
@@ -215,7 +216,7 @@ public class SelectorEngineXPath extends SelectorEngineImpl {
     } else if (eq("checked", pseudoClass)) {\r
       xpath = "@checked='checked'"; // Doesn't work in Opera 9.24\r
     } else if (eq("not", pseudoClass)) {\r
-      if (new JSRegexp("^(:\\w+[\\w\\-]*)$").test(pseudoValue)) {\r
+      if (new JsRegexp("^(:\\w+[\\w\\-]*)$").test(pseudoValue)) {\r
         xpath = "not(" + pseudoToXPath(tag, pseudoValue.substring(1), "") + ")";\r
       } else {\r
 \r
diff --git a/gwtquery-core/src/main/java/com/google/gwt/query/client/js/JsCache.java b/gwtquery-core/src/main/java/com/google/gwt/query/client/js/JsCache.java
new file mode 100644 (file)
index 0000000..1848f34
--- /dev/null
@@ -0,0 +1,90 @@
+package com.google.gwt.query.client.js;
+
+import com.google.gwt.core.client.JavaScriptObject;
+
+ /**
+   * A Lightweight JSO class to store data.
+   */
+public class JsCache extends JavaScriptObject {
+
+  protected JsCache() {
+  }
+
+  public final native void concat(Object ary) /*-{
+    if (ary) this.concat(ary);
+  }-*/;
+  
+  public final void pushAll(JavaScriptObject prevElem) {
+    JsCache c = prevElem.cast();
+    for (int i = 0, ilen = c.length(); i < ilen; i++) {
+      put(length(), c.get(i));
+    }
+  }
+  
+  public final native void delete(int name) /*-{
+               delete this[name];
+  }-*/;
+
+  public final native void delete(String name) /*-{
+               delete this[name];
+  }-*/;
+
+  public final native boolean exists(int id) /*-{
+               return !!this[id];
+  }-*/;
+
+  public final native Object get(int id) /*-{
+               return this[id] || null;
+  }-*/;
+
+  public final native Object get(String id) /*-{
+               return this[id] || null;
+  }-*/;
+
+  public final JsCache getCache(int id) {
+    return (JsCache)get(id);
+  }
+
+  public final native double getDouble(int id) /*-{
+               return this[id] || 0;
+  }-*/;
+
+  public final native double getDouble(String id) /*-{
+               return this[id] || 0;
+  }-*/;
+
+  public final native int getInt(int id) /*-{
+               return this[id] || 0;
+  }-*/;
+
+  public final native int getInt(String id) /*-{
+               return this[id] || 0;
+  }-*/;
+
+  public final native String getString(int id) /*-{
+               return this[id];
+  }-*/;
+
+  public final native String getString(String id) /*-{
+               return this[id] || null;
+  }-*/;
+
+  public final native boolean isEmpty() /*-{
+               var foo = "";
+               for (foo in this)
+                       break;
+               return !foo;
+  }-*/;
+
+  public final native void put(int id, Object obj) /*-{
+               if (obj && id >=0 ) this[id] = obj;
+  }-*/;
+
+  public final native void put(String id, Object obj) /*-{
+               if (obj && id) this[id] = obj;
+  }-*/;
+  
+  public final native int length() /*-{
+    return this.length;
+  }-*/;
+}
diff --git a/gwtquery-core/src/main/java/com/google/gwt/query/client/js/JsClosure.java b/gwtquery-core/src/main/java/com/google/gwt/query/client/js/JsClosure.java
new file mode 100644 (file)
index 0000000..c477c6d
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2011, The gwtquery team.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.query.client.js;
+
+import com.google.gwt.core.client.JavaScriptObject;
+
+/**
+ * Overlay type representing a Javascript closure.
+ */
+public class JsClosure extends JavaScriptObject {
+
+  protected JsClosure() {
+  }
+
+  /**
+   * Invoke the closure with no arguments and expecting no return value.
+   */
+  public final native void invoke() /*-{
+     return this();
+  }-*/;
+}
\ No newline at end of file
diff --git a/gwtquery-core/src/main/java/com/google/gwt/query/client/js/JsMap.java b/gwtquery-core/src/main/java/com/google/gwt/query/client/js/JsMap.java
new file mode 100644 (file)
index 0000000..760326c
--- /dev/null
@@ -0,0 +1,50 @@
+/*
+ * Copyright 2011, The gwtquery team.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.query.client.js;
+
+import com.google.gwt.core.client.JavaScriptObject;
+
+
+/**
+ * Lightweight JSO backed implemented of a Map, using Object.hashCode() as key.
+ */
+final public class JsMap<S, T> extends JavaScriptObject {
+  
+  protected JsMap() {
+  }
+  
+  private JsCache c() {
+    return cast();
+  }
+
+  @SuppressWarnings("unchecked")
+  public T get(int hashCode) {
+    return (T)c().get(hashCode);
+  }
+
+  public T get(S key) {
+    return get(key.hashCode());
+  }
+
+  public int length() {
+    return c().length();
+  }
+  
+  public void put(S key, T val) {
+    c().put(key.hashCode(), val);
+  }
+
+}
diff --git a/gwtquery-core/src/main/java/com/google/gwt/query/client/js/JsNodeArray.java b/gwtquery-core/src/main/java/com/google/gwt/query/client/js/JsNodeArray.java
new file mode 100644 (file)
index 0000000..1b06bf1
--- /dev/null
@@ -0,0 +1,76 @@
+/*\r
+ * Copyright 2011, The gwtquery team.\r
+ * \r
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not\r
+ * use this file except in compliance with the License. You may obtain a copy of\r
+ * the License at\r
+ * \r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT\r
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\r
+ * License for the specific language governing permissions and limitations under\r
+ * the License.\r
+ */\r
+package com.google.gwt.query.client.js;\r
+\r
+import com.google.gwt.core.client.JavaScriptObject;\r
+import com.google.gwt.dom.client.Element;\r
+import com.google.gwt.dom.client.Node;\r
+import com.google.gwt.dom.client.NodeList;\r
+\r
+/**\r
+ * A Lightweight JSO class easily handle a node list.\r
+ */\r
+public class JsNodeArray extends NodeList<Element> {\r
+  \r
+  public static JsNodeArray create() {\r
+    return create((Node)null);\r
+  }\r
+\r
+  public static native JsNodeArray create(Node node) /*-{\r
+    return node ? [node] : [];\r
+  }-*/;\r
+  \r
+  public static JsNodeArray create(NodeList<?> nl) {\r
+    JsNodeArray ret = create((Node)null);\r
+    ret.pushAll(nl);\r
+    return ret;\r
+  }\r
+  \r
+  protected JsNodeArray(){\r
+  }\r
+  \r
+  public final void addNode(Node n){\r
+    c().add(n);\r
+  }\r
+\r
+  public final void addNode(Node n, int i) {\r
+    c().add(i, n);\r
+  }\r
+\r
+  public final void concat(JsNodeArray ary) {\r
+    c().concat(ary.c());\r
+  }\r
+\r
+  public final Element getElement(int i) {\r
+    return c().get(i).cast();\r
+  }\r
+\r
+  public final Node getNode(int i) {\r
+    return c().get(i);\r
+  }\r
+\r
+  public final int size() {\r
+    return c().length();\r
+  }\r
+  \r
+  private JsObjectArray<Node> c() {\r
+    return cast();\r
+  }\r
+  \r
+  public final void pushAll(JavaScriptObject prevElem) {\r
+    c().pushAll(prevElem);\r
+  }\r
+}\r
diff --git a/gwtquery-core/src/main/java/com/google/gwt/query/client/js/JsObjectArray.java b/gwtquery-core/src/main/java/com/google/gwt/query/client/js/JsObjectArray.java
new file mode 100644 (file)
index 0000000..839292d
--- /dev/null
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2011, The gwtquery team.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.query.client.js;
+
+import com.google.gwt.core.client.JavaScriptObject;
+
+/**
+ * Lightweight JSO based array class that can store objects.
+ */
+public final class JsObjectArray<T> extends JavaScriptObject {
+  
+  public static JsObjectArray<?> create() {
+    return JavaScriptObject.createArray().cast();
+  }
+  
+  protected JsObjectArray() {
+  }
+  
+  private JsCache c() {
+    return cast();
+  }
+
+  public void add(T val) {
+    c().put(length(), val);
+  }
+
+  public void add(int i, T val) {
+    c().put(i, val);
+  }
+
+  @SuppressWarnings("unchecked")
+  public T get(int hashCode) {
+    return (T)c().get(hashCode);
+  }
+
+  public int length() {
+    return c().length();
+  }
+
+  public void set(int i, T val) {
+    c().put(i, val);
+  }
+  
+  public void concat(JsObjectArray<T> ary) {
+    c().concat(ary);
+  }
+
+  public void pushAll(JavaScriptObject prevElem) {
+    c().pushAll(prevElem);
+  }
+}
diff --git a/gwtquery-core/src/main/java/com/google/gwt/query/client/js/JsRegexp.java b/gwtquery-core/src/main/java/com/google/gwt/query/client/js/JsRegexp.java
new file mode 100644 (file)
index 0000000..71dbd9c
--- /dev/null
@@ -0,0 +1,74 @@
+/*\r
+ * Copyright 2011, The gwtquery team.\r
+ * \r
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not\r
+ * use this file except in compliance with the License. You may obtain a copy of\r
+ * the License at\r
+ * \r
+ * http://www.apache.org/licenses/LICENSE-2.0\r
+ * \r
+ * Unless required by applicable law or agreed to in writing, software\r
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT\r
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\r
+ * License for the specific language governing permissions and limitations under\r
+ * the License.\r
+ */\r
+package com.google.gwt.query.client.js;\r
+\r
+import com.google.gwt.core.client.JavaScriptObject;\r
+\r
+/**\r
+ * A wrapper around Javascript Regexps.\r
+ */\r
+public class JsRegexp {\r
+\r
+  public static native JavaScriptObject compile(String pat) /*-{\r
+     return new RegExp(pat);\r
+  }-*/;\r
+\r
+  public static native JavaScriptObject compileFlags(String pat, String flags) /*-{\r
+     return new RegExp(pat, flags);\r
+  }-*/;\r
+\r
+  public static JsObjectArray<String> match(String regexp, String flags, String string) {\r
+    return new JsRegexp(regexp, flags).match(string);\r
+  }\r
+\r
+  private static native JsObjectArray<String> exec0(JavaScriptObject regexp, String str) /*-{\r
+    return regexp.exec(str);\r
+  }-*/;\r
+\r
+  private final JavaScriptObject regexp;\r
+\r
+  public JsRegexp(String pattern) {\r
+    this.regexp = compile(pattern);\r
+  }\r
+\r
+  public JsRegexp(String pat, String flags) {\r
+    this.regexp = compileFlags(pat, flags);\r
+  }\r
+\r
+  public JsObjectArray<String> exec(String str) {\r
+    return exec0(regexp, str);\r
+  }\r
+\r
+  public JsObjectArray<String> match(String currentRule) {\r
+    return match0(regexp, currentRule);\r
+  }\r
+\r
+  public boolean test(String rule) {\r
+    return test0(regexp, rule);\r
+  }\r
+\r
+  private native JsObjectArray<String> match0(JavaScriptObject regexp, String currentRule)/*-{\r
+    return currentRule.match(regexp);\r
+  }-*/;\r
+\r
+  private native boolean test0(JavaScriptObject regexp, String rule) /*-{\r
+    return regexp.test(rule);\r
+  }-*/;\r
+  \r
+  public String getPattern(){\r
+    return regexp.toString();\r
+  };\r
+}\r
diff --git a/gwtquery-core/src/main/java/com/google/gwt/query/client/js/JsUtils.java b/gwtquery-core/src/main/java/com/google/gwt/query/client/js/JsUtils.java
new file mode 100644 (file)
index 0000000..103ae86
--- /dev/null
@@ -0,0 +1,115 @@
+/*
+ * Copyright 2011, The gwtquery team.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ * 
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.query.client.js;
+
+import java.util.HashSet;
+
+import com.google.gwt.core.client.JavaScriptObject;
+import com.google.gwt.core.client.JsArray;
+import com.google.gwt.dom.client.Element;
+import com.google.gwt.query.client.GQuery;
+import com.google.gwt.user.client.DOM;
+
+/**
+ * A bunch of utility methods for GQuery.
+ * 
+ * These methods could be moved to $ class, but the class
+ * doesn't work right now.
+ */
+public class JsUtils {
+
+  /**
+   * Use the method in the gquery class $(elem).cur(prop, force);
+   */
+  @Deprecated
+  public static double cur(Element elem, String prop, boolean force) {
+    return GQuery.$(elem).cur(prop, force);
+  }
+
+  /**
+   * Compare two numbers using javascript equality.
+   */
+  public static native boolean eq(double s1, double s2) /*-{
+     return s1 == s2;
+  }-*/;
+
+  /**
+   * Compare two objects using javascript equality.
+   */
+  public static native boolean eq(Object s1, Object s2) /*-{
+     return s1 == s2;
+  }-*/;
+
+  /**
+   * Load an external javascript library.
+   * The inserted script replaces the element with the
+   * given id in the document.
+   */
+  public static void loadScript(String url, String id) {
+    GQuery gs = GQuery.$(DOM.createElement("script"));
+    GQuery gp = GQuery.$("#" + id).parent();
+    if (gp.size() != 1) {
+      gp = GQuery.$(GQuery.document.getBody());
+    }
+    GQuery.$("#" + id).remove();
+    gp.append(gs.attr("src", url).attr("type", "text/javascript").attr("id", id));
+  }
+  
+  /**
+   * Return the element which is truth in the double scope. 
+   */
+  public static native double or(double s1, double s2) /*-{
+    return s1 || s2;
+  }-*/;
+
+  /**
+   * Return the element which is truth in the javascript scope.
+   */
+  public static native <T> T or(T s1, T s2) /*-{
+    return s1 || s2;
+  }-*/;
+
+  /**
+   * Check if a number is true in the javascript scope. 
+   */
+  public static native boolean truth(double a) /*-{
+    return a ? true : false;
+  }-*/;
+
+  /**
+   * Check if an object is true in the javascript scope. 
+   */
+  public static native boolean truth(Object a) /*-{
+    return a ? true : false;
+  }-*/;
+  
+  /**
+   * Remove duplicates from an elements array
+   */
+  public static JsArray<Element> unique(JsArray<Element> a) {
+    JsArray<Element> ret = JavaScriptObject.createArray().cast();
+    HashSet<Integer> f = new HashSet<Integer>();
+    for (int i = 0; i < a.length(); i++) {
+      Element e = a.get(i);
+      if (!f.contains(e.hashCode())) {
+        f.add(e.hashCode());
+        ret.push(e);
+      }
+    }    
+    return ret;
+  }
+
+}
index 7325bbf47051fa49d18aed9d513ba81e405b3898..b69cfb83049b3c2534065133c7b5decf683397ff 100755 (executable)
@@ -21,9 +21,9 @@ import com.google.gwt.animation.client.Animation;
 import com.google.gwt.dom.client.Element;\r
 import com.google.gwt.query.client.Function;\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.JSRegexp;\r
+import com.google.gwt.query.client.js.JsObjectArray;\r
+import com.google.gwt.query.client.js.JsRegexp;\r
 import com.google.gwt.query.client.plugins.Effects;\r
 \r
 /**\r
@@ -71,7 +71,7 @@ public class PropertiesAnimation extends Animation {
   private static final String[] attrsToSave = new String[] { "overflow",\r
       "visibility" };\r
 \r
-  private static JSRegexp nonPxRegExp = new JSRegexp(\r
+  private static JsRegexp nonPxRegExp = new JsRegexp(\r
       "z-?index|font-?weight|opacity|zoom|line-?height", "i");\r
   \r
   \r
@@ -104,20 +104,22 @@ public class PropertiesAnimation extends Animation {
       end = 0;\r
       unit = nonPxRegExp.test(key) ? "" : "px";\r
     } else {\r
-      JSArray parts = new JSRegexp("^([+-]=)?([0-9+-.]+)(.*)?$").match(val);\r
+      JsObjectArray<String> parts = new JsRegexp("^([+-]=)?([0-9+-.]+)(.*)?$").match(val);\r
 \r
       if (parts != null) {\r
-        unit = nonPxRegExp.test(key) ? "" : parts.getStr(3) == null ? "px"\r
-            : parts.getStr(3);\r
-        end = Double.parseDouble(parts.getStr(2));\r
+        String $1 = parts.get(1);\r
+        String $2 = parts.get(2);\r
+        String $3 = parts.get(3);\r
+        end = Double.parseDouble($2);\r
+        unit = nonPxRegExp.test(key) ? "" : $3 == null || $3.isEmpty() ? "px" : $3;\r
         if (!"px".equals(unit)) {\r
           double to = end == 0 ? 1 : end;\r
           g.css(key, to + unit);\r
           start = to * start / g.cur(key, true);\r
           g.css(key, start + unit);\r
         }\r
-        if (parts.getStr(1) != null) {\r
-          end = (("-=".equals(parts.getStr(1)) ? -1 : 1) * end) + start;\r
+        if ($1 != null && !$1.isEmpty()) {\r
+          end = (("-=".equals($1) ? -1 : 1) * end) + start;\r
         }\r
       }\r
     }\r
index a40b5b23e1d15a38ea5849e50c451d6c0c0bb820..cf4f2e5d5f96e9f39424e4910f6d51fc0e1fe418 100644 (file)
@@ -18,7 +18,7 @@ package com.google.gwt.query.client.plugins.events;
 import com.google.gwt.core.client.Duration;
 import com.google.gwt.dom.client.Element;
 import com.google.gwt.query.client.Function;
-import com.google.gwt.query.client.JsObjectArray;
+import com.google.gwt.query.client.js.JsObjectArray;
 import com.google.gwt.user.client.DOM;
 import com.google.gwt.user.client.Event;
 import com.google.gwt.user.client.EventListener;
index a293a026f20b83ed2517caa9002f2ca53e1586da..c9c3ab52caf0b9171fb44d7c993a6979fdd69495 100644 (file)
@@ -179,7 +179,7 @@ public class LazyGenerator extends Generator {
     composerFactory.addImport("com.google.gwt.dom.client.Element");
     composerFactory.addImport("com.google.gwt.user.client.Event");
     composerFactory.addImport("com.google.gwt.query.client.Function");
-    composerFactory.addImport("com.google.gwt.query.client.JsClosure");
+    composerFactory.addImport("com.google.gwt.query.client.js.JsClosure");
 
     for (String interfaceName : interfaceNames) {
       composerFactory.addImplementedInterface(interfaceName);
index af0c70c256d23855b548f0054b330b598a9da9a1..a9899f7cd6a05d771b4c8e3e3273768fee0afa92 100644 (file)
@@ -18,6 +18,7 @@ package com.google.gwt.query.client;
 import static com.google.gwt.query.client.GQuery.$;
 import static com.google.gwt.query.client.GQuery.$$;
 import static com.google.gwt.query.client.GQuery.document;
+import static com.google.gwt.query.client.plugins.Widgets.Widgets;
 
 import java.util.List;
 
@@ -31,7 +32,8 @@ import com.google.gwt.event.dom.client.ClickHandler;
 import com.google.gwt.junit.client.GWTTestCase;
 import com.google.gwt.query.client.impl.SelectorEngineImpl;
 import com.google.gwt.query.client.impl.SelectorEngineSizzle;
-import com.google.gwt.query.client.plugins.Widgets;
+import com.google.gwt.query.client.js.JsNodeArray;
+import com.google.gwt.query.client.js.JsUtils;
 import com.google.gwt.user.client.Event;
 import com.google.gwt.user.client.ui.Button;
 import com.google.gwt.user.client.ui.HTML;
@@ -688,7 +690,7 @@ public class GQueryCoreTest extends GWTTestCase {
   public void testUnique() {
     SelectorEngineImpl selSizz = new SelectorEngineSizzle();
     GQuery g = $(e).html("<div><p></p><p></p><span></span><p></p>");
-    JSArray a;
+    JsNodeArray a;
     a = selSizz.select("p", e).cast();
     assertEquals(3, a.getLength());
     a.addNode(a.getNode(0));
@@ -699,41 +701,41 @@ public class GQueryCoreTest extends GWTTestCase {
   }
   
   public void testUtilsEq() {
-    assertTrue(GQUtils.eq("a", "a"));
-    assertTrue(GQUtils.eq(true, true));
-    assertTrue(GQUtils.eq(45, 45));
-    assertTrue(GQUtils.eq(45d, 45f));
-    assertTrue(GQUtils.eq("", ""));
-    assertTrue(GQUtils.eq(0.45, 0.45));
-    assertTrue(GQUtils.eq(0.45d, 0.45d));
-    assertTrue(GQUtils.eq(0.45f, 0.45f));
-    
-    assertFalse(GQUtils.eq("a", ""));
-    assertFalse(GQUtils.eq(true, false));
-    assertFalse(GQUtils.eq(45, 42));
-    assertFalse(GQUtils.eq("", null));
-    assertFalse(GQUtils.eq(0.45, 0.451));
+    assertTrue(JsUtils.eq("a", "a"));
+    assertTrue(JsUtils.eq(true, true));
+    assertTrue(JsUtils.eq(45, 45));
+    assertTrue(JsUtils.eq(45d, 45f));
+    assertTrue(JsUtils.eq("", ""));
+    assertTrue(JsUtils.eq(0.45, 0.45));
+    assertTrue(JsUtils.eq(0.45d, 0.45d));
+    assertTrue(JsUtils.eq(0.45f, 0.45f));
+    
+    assertFalse(JsUtils.eq("a", ""));
+    assertFalse(JsUtils.eq(true, false));
+    assertFalse(JsUtils.eq(45, 42));
+    assertFalse(JsUtils.eq("", null));
+    assertFalse(JsUtils.eq(0.45, 0.451));
     
 //    assertEquals("a", GQUtils.or("a", ""));
   }
   
   public void testUtilsTruth() {
-    assertTrue(GQUtils.truth("a"));
-    assertTrue(GQUtils.truth(this));
-    assertTrue(GQUtils.truth(45));
-    assertTrue(GQUtils.truth(0.33));
-    assertTrue(GQUtils.truth(45l));
-    assertTrue(GQUtils.truth(45d));
-    assertTrue(GQUtils.truth(45f));
-    assertTrue(GQUtils.truth(0.33f));
-
-    assertFalse(GQUtils.truth(0));
-    assertFalse(GQUtils.truth(0l));
-    assertFalse(GQUtils.truth(0d));
-    assertFalse(GQUtils.truth(00.00d));
-    assertFalse(GQUtils.truth(00.00f));
-    assertFalse(GQUtils.truth(null));
-    assertFalse(GQUtils.truth(""));
+    assertTrue(JsUtils.truth("a"));
+    assertTrue(JsUtils.truth(this));
+    assertTrue(JsUtils.truth(45));
+    assertTrue(JsUtils.truth(0.33));
+    assertTrue(JsUtils.truth(45l));
+    assertTrue(JsUtils.truth(45d));
+    assertTrue(JsUtils.truth(45f));
+    assertTrue(JsUtils.truth(0.33f));
+
+    assertFalse(JsUtils.truth(0));
+    assertFalse(JsUtils.truth(0l));
+    assertFalse(JsUtils.truth(0d));
+    assertFalse(JsUtils.truth(00.00d));
+    assertFalse(JsUtils.truth(00.00f));
+    assertFalse(JsUtils.truth(null));
+    assertFalse(JsUtils.truth(""));
   }
   
   public void testWidthHeight() {
@@ -792,10 +794,10 @@ public class GQueryCoreTest extends GWTTestCase {
     RootPanel.get().add(b1);
     
     GQuery g = $(b1);
-    Button b2 = (Button) g.widget();
+    Button b2 = g.widget();
     assertEquals(b1, b2);
     
-    b2 = $("<button>Click-me</button>").appendTo(document).as(Widgets.Widgets).button();
+    b2 = $("<button>Click-me</button>").appendTo(document).as(Widgets).button();
     b2.addClickHandler(new ClickHandler() {
       public void onClick(ClickEvent event) {
         $(b1).css("color", "red");
index aa2ca2295d060cf9902e162a72144e9f82ed1e21..306869d79e1f45678c1c1b9657f3691c947d1dfe 100644 (file)
@@ -32,6 +32,7 @@ import com.google.gwt.query.client.impl.SelectorEngineSizzle;
 import com.google.gwt.query.client.impl.research.SelectorEngineJS;
 import com.google.gwt.query.client.impl.research.SelectorEngineSizzleGwt;
 import com.google.gwt.query.client.impl.research.SelectorEngineXPath;
+import com.google.gwt.query.client.js.JsUtils;
 import com.google.gwt.user.client.ui.HTML;
 import com.google.gwt.user.client.ui.RootPanel;
 
@@ -348,7 +349,7 @@ public class GQuerySelectorsTest extends GWTTestCase {
       a.push(a.get(i));
     }
     assertEquals(n * 2 , a.length());
-    a = GQUtils.unique(a);
+    a = JsUtils.unique(a);
     assertEquals(n, a.length());
   }