+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 <michael....@googlemail.com 
> <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 google-web-toolkit-contributors+unsubscr...@googlegroups.com 
> <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 google-web-toolkit-contributors+unsubscr...@googlegroups.com.
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