]> source.dussan.org Git - gwtquery.git/commitdiff
New js object and methods
authorManolo Carrasco <manolo@apache.org>
Sun, 10 Apr 2011 20:47:47 +0000 (20:47 +0000)
committerManolo Carrasco <manolo@apache.org>
Sun, 10 Apr 2011 20:47:47 +0000 (20:47 +0000)
gwtquery-core/src/main/java/com/google/gwt/query/client/js/JsCache.java
gwtquery-core/src/main/java/com/google/gwt/query/client/js/JsNamedArray.java [new file with mode: 0644]
gwtquery-core/src/main/java/com/google/gwt/query/client/js/JsNodeArray.java
gwtquery-core/src/main/java/com/google/gwt/query/client/js/JsObjectArray.java

index a805bc6cd122c03c1ca3b1e897df54cbf09d419b..2422b8ab9dc9223a17dd79b266fdef6ffdfd212a 100644 (file)
@@ -94,7 +94,10 @@ public class JsCache extends JavaScriptObject {
   }-*/;
   
   public final native int length() /*-{
-    return this.length;
+    if (this.length) return this.lenght;
+    var ret = 0; 
+    for (k in this) ret ++;
+    return ret; 
   }-*/;
   
   public final int[] indexes() {
diff --git a/gwtquery-core/src/main/java/com/google/gwt/query/client/js/JsNamedArray.java b/gwtquery-core/src/main/java/com/google/gwt/query/client/js/JsNamedArray.java
new file mode 100644 (file)
index 0000000..560f2d0
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * 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 named array
+ */
+final public class JsNamedArray<T> extends JavaScriptObject {
+  
+  protected JsNamedArray() {
+  }
+  
+  private JsCache c() {
+    return cast();
+  }
+
+  public T get(String key) {
+    return c().get(key);
+  }
+
+  public void put(String key, T val) {
+    c().put(key, val);
+  }
+  
+  public final String[] keys() {
+    return c().keys();
+  }
+  
+  public int length() {
+    return c().length();
+  }
+
+  public final Object[] values() {
+    return c().elements();
+  }
+  
+  public final boolean exists(String key){
+    return c().exists(key);
+  }
+
+  public final static <T> JsNamedArray<T> create() {
+    return createObject().cast();
+  }
+}
index 1b06bf1486aabcc6857d44149e1e70629a67b956..102cecb16879d79b2fb135c61caa1d9b3c86e489 100644 (file)
@@ -53,6 +53,10 @@ public class JsNodeArray extends NodeList<Element> {
   public final void concat(JsNodeArray ary) {\r
     c().concat(ary.c());\r
   }\r
+  \r
+  public final Element get(int i) {\r
+    return getElement(i);\r
+  }\r
 \r
   public final Element getElement(int i) {\r
     return c().get(i).cast();\r
@@ -73,4 +77,12 @@ public class JsNodeArray extends NodeList<Element> {
   public final void pushAll(JavaScriptObject prevElem) {\r
     c().pushAll(prevElem);\r
   }\r
+  \r
+  public final Element[] elements() {\r
+    Element[] ret = new Element[size()];\r
+    for (int i=0 ; i<size(); i++) {\r
+      ret[i] = getElement(i);\r
+    }\r
+    return ret;\r
+  }\r
 }\r
index 054b0ca2ec4cbf586fff55bde78627238eb252c8..88e37ba03d3af553470dd376c852ffdda725b18e 100644 (file)
@@ -22,7 +22,7 @@ import com.google.gwt.core.client.JavaScriptObject;
  */
 public final class JsObjectArray<T> extends JavaScriptObject {
   
-  public static JsObjectArray<?> create() {
+  public static <T> JsObjectArray<T> create() {
     return JavaScriptObject.createArray().cast();
   }