2010-07-30 78 views
0

我試圖捕獲一個小部件的右鍵點擊,彈出我自己的上下文菜單,而不是瀏覽器的。這裏有幾個參考文獻,但最流行的here有點過時,儘管一些評論包含更新的代碼片段。爲什麼不在GWT中右擊捕獲在IE中工作?

我拼湊了一些位,我已經在Chrome和FF中工作,但沒有IE。在IE中它不顯示默認的瀏覽器上下文菜單,但它不顯示我的菜單。我只是進入GWT,所以我假設我沒有正確地處理正確的處理程序或事件。我也使用gwt-graphics模塊,這就是我所擴展的Rectangle類來自哪裏,以防相關。

這裏是我的代碼:

public class RectangleRightClickable extends Rectangle { 

public RectangleRightClickable(int x, int y, int width, int height) { 
    super(x, y, width, height); 
    sinkEvents(Event.ONCONTEXTMENU); 
} 

public void onBrowserEvent(Event event) { 
    GWT.log("onBrowserEvent"); 
    event.stopPropagation(); 
    event.preventDefault(); 
    GWT.log("event type : " + DOM.eventGetType(event)); 
    switch(DOM.eventGetType(event)) { 
    case Event.ONCONTEXTMENU: 
     if (DOM.eventGetButton(event) == Event.BUTTON_RIGHT) { 
      GWT.log("Event.BUTTON_RIGHT", null); 
      showMenu(); 
     } 
     break; 
    default: 
     GWT.log(event.toString()); 
     break; 
    } 
} 

protected void showMenu() { 
    final RectangleRightClickable parent = this; 
    final PopupMenu popMenu = new PopupMenu(); 
    popMenu.addMenuItem(new Label("Add thing")); 
    popMenu.setPopupPositionAndShow(new PopupPanel.PositionCallback() { 
     public void setPosition(int offsetWidth, int offsetHeight) { 
      int left = parent.getX() + parent.getWidth(); 
      int top = parent.getY() + parent.getWidth(); 
      popMenu.setPopupPosition(left, top); 
     } 
    }); 

} 
} 

回答

0

得到了GWT谷歌組名單,其中曾在此迴應:

addDomHandler(new ContextMenuHandler() 
{ 
    @Override 
    public void onContextMenu(ContextMenuEvent event) 
    { 
     showMenu(); 
     event.preventDefault(); 
    } 
}, ContextMenuEvent.getType()); 
相關問題