Also update existing FastStringSet to learn some new tricks.
Change-Id: I3dfcb935d32eb3d490c4f7ff31296a326bd0d98f
--- /dev/null
+/*
+ * 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();
+ }
+}
*/
package com.vaadin.client;
+import java.util.Collection;
+
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.client.JsArrayString;
}
}-*/;
+ 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 = [];
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
--- /dev/null
+/*
+ * 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];
+ }-*/;
+
+}