Hey everyone,

I want to integrate MooFlow external lib in my Gwt Application, so I
begin by reading the essentials of JSNI and doing my things.
So far it's OK, I create the Impl class to wrap the functions I need,
I create also the JSObject and finally the widget itself  (called
CoverFlow).

Now all I need is to add the possibility to catch the onClickView
Event in my widget (java widget).
With the implementation below, I can't see the HEY message when I
click on an image, it sounds like the line:

 cfo.addEvent('onClickView', ...

don't work in my Impl class !!!

this is my Impl class

public class CoverFlowImpl {

        public native CoverFlowScriptObject create(Element container, int
startIndex, boolean useSlider) /*-{

                var options = {
                        useSlider: useSlider,
                        useAutoPlay: false,
                        useCaption: false,
                        useResize: false,
                        useWindowResize: false,
                        useMouseWheel: true,
                        useKeyInput: true,
                        startIndex: startIndex
                };

                var mf = new $wnd.MooFlow(container, options);
                return mf;

        }-*/;

        public native void loadJSON(CoverFlowScriptObject cfo, String json) /
*-{
                cfo.loadJSONArray(json);
        }-*/;

        public native void addClickViewHandler(CoverFlowScriptObject cfo,
HasSelectedItemChanged handler) /*-{

                cfo.addEvent('onClickView',   function(obj){

                        alert('HEY');   //just to indicate if the
event is fired

                        var event =
@com.audaxis.gwt.ui.coverflow.client.SelectedItemChangedEvent::new()
();
                        
[email protected]::fireEvent(Lcom/
google/gwt/event/shared/GwtEvent;)(event);
                };

        }-*/;
}


The Opaque  JS Object

public final class CoverFlowScriptObject extends JavaScriptObject{

        private final static CoverFlowImpl impl = new CoverFlowImpl();

        protected CoverFlowScriptObject() {}

        public static CoverFlowScriptObject createCoverFlow(Element
container, int startIndex, boolean useSlider){
                return impl.create(container, startIndex, useSlider);
        }

        public void laodJSON(String json){
                impl.loadJSON(this, json);
        }

        public void addClickViewEvent(HasSelectedItemChanged handler){
                impl.addClickViewHandler(this, handler);
        }
}



My Widget

public class CoverFlow extends Composite implements
HasSelectedItemChanged{

        private Panel simplePanel;
        private CoverFlowScriptObject cvo;
        private Collection<CoverFlowItem> items;

        public CoverFlow() {
                init(null);
        }

        protected void init(Panel parent){
                simplePanel = parent != null ? parent : new SimplePanel();
                cvo = getCoverFlowJSObject();
                initWidget(simplePanel);
        }

        @Override
        public HandlerRegistration
addSelectedItemChanged(SelectedItemChangedHandler handler) {
                cvo.addClickViewEvent(this);
                return addHandler(handler, SelectedItemChangedEvent.getType());
        }
}


And finally -----------HasSelectedItemChanged


public interface HasSelectedItemChanged extends HasHandlers{

        HandlerRegistration addSelectedItemChanged(SelectedItemChangedHandler
handler);
}

Is my implementation correcte ?
Is this the right implementation to fire events from JavaScript to
Java ?

Could anyone help me please !!

Thanks in advance

-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.

Reply via email to