<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: wheel code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Mon, 06 Oct 2008 17:06:00 GMT</pubDate>
    <description>DZone Snippets: wheel code</description>
    <item>
      <title>Simple Mouse Wheel support for GWT</title>
      <link>http://snippets.dzone.com/posts/show/2241</link>
      <description>I was looking to a way to use the mouse wheel in my GWT app, but I didn&#180;t find a straightforward way... so today I spend my morning learning JSNI and, with some piece of code I found on the Internet, I coded my own approach... Feel free to use anywere .. Hope that it might be useful for someone else too... &lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;public interface MouseWheelListener {&lt;br /&gt;   &lt;br /&gt;    public void onMouseWheelUp(int intensity);&lt;br /&gt;   &lt;br /&gt;    public void onMouseWheelDown(int intensity);&lt;br /&gt;   &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public class MouseWheel {&lt;br /&gt;   &lt;br /&gt;    private MouseWheel(Element e, MouseWheelListener listener) {&lt;br /&gt;        attachMouseWheelListener(e, listener);&lt;br /&gt;    }&lt;br /&gt;   &lt;br /&gt;    /**&lt;br /&gt;     * Sets a MouseWheelListener to a given Element&lt;br /&gt;     */&lt;br /&gt;    public static void setMouseWheelListener(Element e, MouseWheelListener listener) {&lt;br /&gt;        new MouseWheel(e, listener);&lt;br /&gt;    }&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;    /**&lt;br /&gt;     * This method is used by FF&lt;br /&gt;     * @param event&lt;br /&gt;     */&lt;br /&gt;    private static native void dispatchMouseWheelEvent(JavaScriptObject event) /*-{&lt;br /&gt;       &lt;br /&gt;        @br.com.example.client.util.MouseWheel::dispatchMouseWheelEvent(Lcom/google/gwt/core/client/JavaScriptObject;Lbr/com/example/client/util/MouseWheelListener;)(event, this.__mousewheellistener);&lt;br /&gt;   &lt;br /&gt;    }-*/;&lt;br /&gt;   &lt;br /&gt;    /**&lt;br /&gt;     * This method is used by IE and FF&lt;br /&gt;     * Part of this method was retrieved from http://adomas.org/notes/mouse-wheel.html&lt;br /&gt;     *&lt;br /&gt;     * @param event&lt;br /&gt;     * @param listener&lt;br /&gt;     */&lt;br /&gt;    private static native void dispatchMouseWheelEvent(JavaScriptObject event, MouseWheelListener listener) /*-{&lt;br /&gt;&lt;br /&gt;         if (!event) event = $wnd.event; // For IE&lt;br /&gt;&lt;br /&gt;         var delta = 0;&lt;br /&gt;         if (event.wheelDelta)             // IE case, delta is multiple of 120&lt;br /&gt;              delta = event.wheelDelta / 120;&lt;br /&gt;         else if (event.detail )            // Mozilla case&lt;br /&gt;              delta = -event.detail / 3;   // different sign and multiple of 3&lt;br /&gt;        &lt;br /&gt;         if ( delta &gt; 0 ) {&lt;br /&gt;             listener.@br.com.example.client.util.MouseWheelListener::onMouseWheelUp(I)(delta);&lt;br /&gt;         } else {&lt;br /&gt;             listener.@br.com.example.client.util.MouseWheelListener::onMouseWheelDown(I)(-delta);&lt;br /&gt;         }&lt;br /&gt;&lt;br /&gt;         //taken from http://adomas.org/javascript-mouse-wheel/test2.html&lt;br /&gt;         if (event.preventDefault)&lt;br /&gt;             event.preventDefault();&lt;br /&gt;         event.returnValue = false;&lt;br /&gt;&lt;br /&gt;    }-*/;&lt;br /&gt;   &lt;br /&gt;   &lt;br /&gt;    private native void attachMouseWheelListener(Element e, MouseWheelListener listener) /*-{&lt;br /&gt;       &lt;br /&gt;        e.__mousewheellistener = listener;&lt;br /&gt;       &lt;br /&gt;        // for FF&lt;br /&gt;        if (e.addEventListener) {&lt;br /&gt;            e.addEventListener('DOMMouseScroll', @br.com.example.client.util.MouseWheel::dispatchMouseWheelEvent(Lcom/google/gwt/core/client/JavaScriptObject;), false);&lt;br /&gt;            return;&lt;br /&gt;        }&lt;br /&gt;       &lt;br /&gt;        // for IE&lt;br /&gt;        e.onmousewheel = function(event) {&lt;br /&gt;            @br.com.example.client.util.MouseWheel::dispatchMouseWheelEvent (Lcom/google/gwt/core/client/JavaScriptObject;Lbr/com/example/client/util/MouseWheelListener;)(event, this.__mousewheellistener);&lt;br /&gt;        }&lt;br /&gt;       &lt;br /&gt;    }-*/;&lt;br /&gt;   &lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;And here is how to use it:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;        MouseWheel.setMouseWheelListener(RootPanel.get("slot2").getElement(), new MouseWheelListener() {&lt;br /&gt;&lt;br /&gt;            public void onMouseWheelUp(int intensity) {&lt;br /&gt;                Window.alert("up.. " + intensity);&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            public void onMouseWheelDown(int intensity) {&lt;br /&gt;                Window.alert("down..." + intensity);&lt;br /&gt;            }&lt;br /&gt;       &lt;br /&gt;        }); &lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Remember to replace my hardcoded package name (br.com.example) for your own... If you have any suggestion or critic, feel free to tell me... "tserafim" is my gmail username...</description>
      <pubDate>Tue, 04 Jul 2006 08:56:27 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/2241</guid>
      <author>sligowaths (Tiago Serafim)</author>
    </item>
    <item>
      <title>mouse scroll-wheel events</title>
      <link>http://snippets.dzone.com/posts/show/1195</link>
      <description>&lt;code&gt;&lt;br /&gt;; mouse-wheel scroll events&lt;br /&gt;view/new layout [&lt;br /&gt;	b: box "A Box" forest feel [&lt;br /&gt;		engage: func [face action event] [&lt;br /&gt;			if action = 'scroll-line [&lt;br /&gt;				print ["Scroll line" event/offset]&lt;br /&gt;			]&lt;br /&gt;			if action = 'scroll-page [ ; Ctrl+wheel&lt;br /&gt;				print ["scroll page" event/offset]&lt;br /&gt;			]&lt;br /&gt;		]&lt;br /&gt;	]&lt;br /&gt;]&lt;br /&gt;focus b&lt;br /&gt;do-events&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Thu, 19 Jan 2006 03:07:49 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/1195</guid>
      <author>gregg.irwin (Gregg Irwin)</author>
    </item>
  </channel>
</rss>
