diff options
author | Leif Åstrand <leif@vaadin.com> | 2013-02-05 11:41:04 +0200 |
---|---|---|
committer | Leif Åstrand <leif@vaadin.com> | 2013-02-05 11:41:04 +0200 |
commit | 83e262186da502fecc79d6851815260770d7e3a6 (patch) | |
tree | dac91ea38fddacf078be59bbac8c8365ea750ff1 /client | |
parent | 67aa9e47d65fccf46319e9c09c6e4221db8d2c49 (diff) | |
download | vaadin-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.java | 74 | ||||
-rw-r--r-- | client/src/com/vaadin/client/FastStringSet.java | 29 | ||||
-rw-r--r-- | client/src/com/vaadin/client/JsArrayObject.java | 42 |
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]; + }-*/; + +} |