summaryrefslogtreecommitdiffstats
path: root/client
diff options
context:
space:
mode:
authorLeif Åstrand <leif@vaadin.com>2013-02-05 11:41:04 +0200
committerLeif Åstrand <leif@vaadin.com>2013-02-05 11:41:04 +0200
commit83e262186da502fecc79d6851815260770d7e3a6 (patch)
treedac91ea38fddacf078be59bbac8c8365ea750ff1 /client
parent67aa9e47d65fccf46319e9c09c6e4221db8d2c49 (diff)
downloadvaadin-framework-83e262186da502fecc79d6851815260770d7e3a6.tar.gz
vaadin-framework-83e262186da502fecc79d6851815260770d7e3a6.zip
Add native generic collection counterparts (#10937)
Also update existing FastStringSet to learn some new tricks. Change-Id: I3dfcb935d32eb3d490c4f7ff31296a326bd0d98f
Diffstat (limited to 'client')
-rw-r--r--client/src/com/vaadin/client/FastStringMap.java74
-rw-r--r--client/src/com/vaadin/client/FastStringSet.java29
-rw-r--r--client/src/com/vaadin/client/JsArrayObject.java42
3 files changed, 145 insertions, 0 deletions
diff --git a/client/src/com/vaadin/client/FastStringMap.java b/client/src/com/vaadin/client/FastStringMap.java
new file mode 100644
index 0000000000..cbb61427d2
--- /dev/null
+++ b/client/src/com/vaadin/client/FastStringMap.java
@@ -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();
+ }
+}
diff --git a/client/src/com/vaadin/client/FastStringSet.java b/client/src/com/vaadin/client/FastStringSet.java
index 8b930291d4..a36aa9bfef 100644
--- a/client/src/com/vaadin/client/FastStringSet.java
+++ b/client/src/com/vaadin/client/FastStringSet.java
@@ -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
index 0000000000..182b68ac3f
--- /dev/null
+++ b/client/src/com/vaadin/client/JsArrayObject.java
@@ -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];
+ }-*/;
+
+}