+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.

1) The solution can be: define an Java8 interface with methods implemented 
by default? 

2) It is possible to access a Prototype implementation of JQueryElement, by 
example:

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/51be727d-0003-425b-9040-bd3c8529ddd1%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to