package com.project.shared.client.utils;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.event.dom.client.KeyPressEvent;
import com.project.shared.data.funcs.Func;
public class NativeUtils
{
public static final int SPACE_CHAR_CODE = 32;
public static boolean keyIsEnter(KeyPressEvent event)
{
return event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER;
}
public static boolean keyIsSpace(KeyPressEvent event)
{
return event.getNativeEvent().getCharCode() == SPACE_CHAR_CODE;
}
/**
* Untested
*/
public static class JavascriptFunctionWrapper<B> {
private Func<Object, B> func;
public JavascriptFunctionWrapper(Func<Object, B> func) {
this.func = func;
}
public B call(Object arg)
{
return this.func.apply(arg);
}
public final native JavaScriptObject asJavaScriptObject() /*-{
var me = this;
return me.@com.project.shared.client.utils.NativeUtils.JavascriptFunctionWrapper::call(Ljava/lang/Object;);
}-*/;
}
/**
* Untested
*/
public static <B> JavaScriptObject asJavascriptFunction(Func<Object,B> func)
{
return (new JavascriptFunctionWrapper<B>(func)).asJavaScriptObject();
}
}