]> source.dussan.org Git - vaadin-framework.git/commitdiff
Add native generic collection counterparts (#10937)
authorLeif Åstrand <leif@vaadin.com>
Tue, 5 Feb 2013 09:41:04 +0000 (11:41 +0200)
committerLeif Åstrand <leif@vaadin.com>
Tue, 5 Feb 2013 09:41:04 +0000 (11:41 +0200)
Also update existing FastStringSet to learn some new tricks.

Change-Id: I3dfcb935d32eb3d490c4f7ff31296a326bd0d98f

client/src/com/vaadin/client/FastStringMap.java [new file with mode: 0644]
client/src/com/vaadin/client/FastStringSet.java
client/src/com/vaadin/client/JsArrayObject.java [new file with mode: 0644]

diff --git a/client/src/com/vaadin/client/FastStringMap.java b/client/src/com/vaadin/client/FastStringMap.java
new file mode 100644 (file)
index 0000000..cbb6142
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2012 Vaadin Ltd.
+ * 
+ * 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.vaadin.client;
+
+import com.google.gwt.core.client.JavaScriptObject;
+import com.google.gwt.core.client.JsArrayString;
+
+public final class FastStringMap<T> extends JavaScriptObject {
+
+    protected FastStringMap() {
+        // JSO constructor
+    }
+
+    public native void put(String key, T value)
+    /*-{
+         this[key] = value;
+    }-*/;
+
+    public native T get(String key)
+    /*-{
+         return this[key];
+    }-*/;
+
+    public native boolean containsKey(String key)
+    /*-{
+         //Can't use this.hasOwnProperty in case that key is used
+         return Object.hasOwnProperty.call(this, key);
+    }-*/;
+
+    public native void remove(String key)
+    /*-{
+         delete this[key];
+    }-*/;
+
+    public native JsArrayString getKeys()
+    /*-{
+        var keys = [];
+        for(var key in this) {
+            if (Object.hasOwnProperty.call(this, key)) {
+                keys.push(key);
+            } 
+        }
+        return keys;
+    }-*/;
+
+    public native int size()
+    /*-{
+        var size = 0;
+        for(var key in this) {
+            if (Object.hasOwnProperty.call(this, key)) {
+                size++;
+            } 
+        }
+        return size;
+    }-*/;
+
+    public static <T> FastStringMap<T> create() {
+        return JavaScriptObject.createObject().cast();
+    }
+}
index 8b930291d43842f9bfeec75b450ef406750adfc2..a36aa9bfef9ee9c5f8c98741a28f8811f636905e 100644 (file)
@@ -15,6 +15,8 @@
  */
 package com.vaadin.client;
 
+import java.util.Collection;
+
 import com.google.gwt.core.client.JavaScriptObject;
 import com.google.gwt.core.client.JsArrayString;
 
@@ -40,6 +42,15 @@ public final class FastStringSet extends JavaScriptObject {
         }
     }-*/;
 
+    public native void addAll(FastStringSet set)
+    /*-{
+        for(var string in set) {
+            if (Object.hasOwnProperty.call(set, string)) {
+                this[string] = true;
+            }
+        }
+    }-*/;
+
     public native JsArrayString dump()
     /*-{
         var array = [];
@@ -69,4 +80,22 @@ public final class FastStringSet extends JavaScriptObject {
     public static FastStringSet create() {
         return JavaScriptObject.createObject().cast();
     }
+
+    public native void addAllTo(Collection<String> target)
+    /*-{
+        for(var string in this) {
+            if (Object.hasOwnProperty.call(this, string)) {
+                target.@java.util.Collection::add(Ljava/lang/Object;)(string);
+            }
+        }
+     }-*/;
+
+    public native void removeAll(FastStringSet valuesToRemove)
+    /*-{
+        for(var string in valuesToRemove) {
+            if (Object.hasOwnProperty.call(valuesToRemove, string)) {
+                delete this[string];
+            }
+        }
+    }-*/;
 }
\ No newline at end of file
diff --git a/client/src/com/vaadin/client/JsArrayObject.java b/client/src/com/vaadin/client/JsArrayObject.java
new file mode 100644 (file)
index 0000000..182b68a
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * Copyright 2012 Vaadin Ltd.
+ * 
+ * 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.vaadin.client;
+
+import com.google.gwt.core.client.JavaScriptObject;
+
+public final class JsArrayObject<T> extends JavaScriptObject {
+
+    protected JsArrayObject() {
+        // JSO constructor
+    }
+
+    public native void add(T value)
+    /*-{
+        this.push(value);
+    }-*/;
+
+    public native int size()
+    /*-{
+        return this.length;
+    }-*/;
+
+    public native T get(int i)
+    /*-{
+        return this[i];
+    }-*/;
+
+}