+Ray Cromwell:
Suppose the following definition:
@JsType(prototype = "jQuery")
public interface JQueryElement {
JQueryElement append(JQueryElement element);
@JsProperty
JQueryElement html();
void data(String key, String value);
Object val();
void on(String event, com.workingflows.js.jscore.client.api.Function
<?,?> fn);
void attr(String attr, Object value);
}
Now suppose that there is an element called SwitchElement, the item is a
JQueryElement but has a particual implementation of a method, for example:
public class SwitchElement extends JavaScriptObject {
protected SwitchElement() {
}
public final native boolean getState()/*-{
return this.bootstrapSwitch("state");
}-*/;
public final native void setState(boolean state)/*-{
this.bootstrapSwitch("state", state);
}-*/;
}
The problem is, if the JQueryElement interface is implemented, all methods
must be implemented. In fact, the implementation of JQueryElement is
performed by the compiler, and I have no access to that implentación.
public class SwitchElement extends JQueryElement.Prototype{
protected SwitchElement() {
}
public final native boolean getState()/*-{
return this.bootstrapSwitch("state");
}-*/;
public final native void setState(boolean state)/*-{
this.bootstrapSwitch("state", state);
}-*/;
}
But for this, it is necessary to use APT or the JsType generation process,
is performed by APT.
I'm right, or very far from reality.
:)
El sábado, 4 de octubre de 2014 15:24:19 UTC-3, Ray Cromwell escribió:
>
> Yes, but it will require Java8, which allows interfaces to contain
> static methods. Here's how you'll do it soon when the Java8 stuff
> lands:
>
> @JsType
> public interface ImageUtils {
> public static Texture loadTexture(String url) { return
> js("$wnd.THREE.ImageUtils.loadTexture($0)", url); }
> }
>
> ImageUtils.loadTexture(url);
>
>
>
> On Sat, Oct 4, 2014 at 8:18 AM, confile <[email protected]
> <javascript:>> wrote:
> > Consider the following static JavaScript function:
> >
> > THREE.ImageUtils = {
> > loadTexture: function (url) { ... }
> >
> > }
> >
> > The way I use to create the static function with JsInterop is to create
> an
> > interface for ImageUtils and then create an inner abstract class
> MyStatic
> > which contains the static methods implemented with JSNI.
> >
> > Here is an example of the above class:
> >
> > @JsType
> > public interface ImageUtils {
> >
> > public static abstract class MyStatic {
> >
> > public static native Texture create(String url) /*-{
> > return new $wnd.THREE.ImageUtils.loadTexture(url);
> > }-*/;
> > }
> >
> > }
> >
> >
> > I don't think this is the best solution. Is there a better way to handle
> > static functions with JsInterop?
> >
> > --
> > You received this message because you are subscribed to the Google
> Groups
> > "GWT Contributors" group.
> > To unsubscribe from this group and stop receiving emails from it, send
> an
> > email to [email protected]
> <javascript:>.
> > To view this discussion on the web visit
> >
> https://groups.google.com/d/msgid/google-web-toolkit-contributors/8f6cf42a-2910-4536-a2f7-1ae2d55422ac%40googlegroups.com.
>
>
> > For more options, visit https://groups.google.com/d/optout.
>
--
You received this message because you are subscribed to the Google Groups "GWT
Contributors" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/google-web-toolkit-contributors/dc7c5a6d-8ed1-422b-98eb-df49220af0ac%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.