Правый щелчок в GWT? - PullRequest
       26

Правый щелчок в GWT?

8 голосов
/ 16 сентября 2009

Я создаю веб-приложение AJAX с GWT и хочу использовать щелчок правой кнопкой мыши для различных целей, как в настольном приложении. Однако щелчок правой кнопкой мыши создает стандартное веб-контекстное меню, и void onClick (событие ClickEvent) никогда не вызывается. Кто-нибудь разобрался, как заставить это работать? спасибо!

Ответы [ 3 ]

7 голосов
/ 06 августа 2012

easy peasy, добавьте слушателя в contextmenuhandler, который будет отображать виджет в зависимости от того, где пользователь щелкнет правой кнопкой мыши. https://confluence.clazzes.org/pages/viewpage.action?pageId=425996

class MyWidget extends Composite implements ContextMenuHandler {

  // just an example, use a meaningful Widget here...
  private Widget base;

  private PopupPanel contextMenu;


  public MyWidget() {
    // initialize base widget, etc...

    this.contextMenu = new PopupPanel(true);
    this.contextMenu.add(new HTML("My Context menu!"));
    this.contextMenu.hide();

    initWidget(this.base);

    // of course it would be better if base would implement HasContextMenuHandlers, but the effect is the same
    addDomHandler(this, ContextMenuEvent.getType());
  }


  public void onContextMenu(ContextMenuEvent event) {
    // stop the browser from opening the context menu
    event.preventDefault();
    event.stopPropagation();


    this.contextMenu.setPopupPosition(event.getNativeEvent().getClientX(), event.getNativeEvent().getClientY());
    this.contextMenu.show();
  }

}

наконец, вы захотите отключить меню браузеров для полной перегрузки этого типа контекстного меню. Это должно работать во всех браузерах, кроме Opera. но, честно говоря, кто использует это в наши дни neways ^ _______ ^

<body oncontextmenu="return false;">
4 голосов
/ 16 сентября 2009

Оказывается, вы можете сделать это, увеличив DeckPanel. Вот отличная дискуссия и хорошее демо, которое доказывает, что это работает

http://whatwouldnickdo.com/wordpress/370/gwt-right-click-context-menu/

2 голосов
/ 17 сентября 2009

Хотя есть способы сделать это, я считаю, что команда GWT спорила по этому поводу и решила, что включение правого клика в веб-приложении было плохой вещью, и поэтому приняла осознанное решение не поддерживать его. Аргумент состоял в том, что щелчок правой кнопкой мыши должен продолжать работать, как и ожидалось (вызвать контекстное меню правой кнопки браузера браузера), и переопределение этого нарушало это ожидаемое поведение и это и было бы плохой практикой. Хотя у меня были случаи, когда контекстное меню с правой кнопкой мыши было бы полезно, в целом я склонен согласиться с решением команды GWT.

...