package net.thesocialos.client.advanced; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.NativeEvent; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Event; import com.google.gwt.user.client.ui.FocusPanel; import com.google.gwt.user.client.ui.Widget; public class AdvFocusPanel extends FocusPanel implements AdvClickNotifier { private AdvClickListener listener = null; public AdvFocusPanel() { super(); sinkEvents(Event.ONMOUSEUP | Event.ONCONTEXTMENU); } public AdvFocusPanel(Widget child) { super(child); sinkEvents(Event.ONMOUSEUP | Event.ONCONTEXTMENU); } @Override public void onBrowserEvent(Event e) { GWT.log("onBrowserEvent", null); e.cancelBubble(true); e.stopPropagation(); e.preventDefault(); switch (DOM.eventGetType(e)) { case Event.ONMOUSEUP: if (DOM.eventGetButton(e) == NativeEvent.BUTTON_LEFT) { GWT.log("Event.BUTTON_LEFT", null); listener.onClick(this, e); } if (DOM.eventGetButton(e) == NativeEvent.BUTTON_RIGHT) GWT.log("Event.BUTTON_RIGHT", null); break; case Event.ONCONTEXTMENU: GWT.log("Event.ONCONTEXTMENU", null); listener.onRightClick(this, e); break; default: super.onBrowserEvent(e); }// end switch } @Override public void addClickListener(AdvClickListener listener) { this.listener = listener; } @Override public void removeClickListener(AdvClickListener listener) { this.listener = null; } }