Возможная реализация ответов майка и waitforatrain в GWT.
В заголовке html управляйте событиями мыши (код JavaScript):
var mouseUpHook = false;
$(document).mouseup(function() {
if (mouseUpHook) {
mouseUpHook(null);
mouseUpHook = false;
}
});
Пусть ваш пользовательский класс Widget реализует MouseDownHandler и MouseUpHandler и добавляет эти строки в конструктор для получения событий мыши (код Java):
addDomHandler(this, MouseDownEvent.getType());
addDomHandler(this, MouseUpEvent.getType());
Наконец, добавьте эти методы в свой класс Widget (код java и javascript):
@Override
public void onMouseUp (MouseUpEvent event) {
removeMouseUpHook();
// ... do something else
}
private native void hookMouseUp () /*-{
$wnd.$('body').addClass('noselect');
var myThis = this;
$wnd.mouseUpHook = function () {
myThis.@your.custom.widget.class.full.qualified.Name::onMouseUp(Lcom/google/gwt/event/dom/client/MouseUpEvent;)(null);
};
}-*/;
private native void removeMouseUpHook () /*-{
$wnd.$('body').removeClass('noselect');
}-*/;
@Override
public void onMouseDown (MouseDownEvent event) {
hookMouseUp();
// ... do something else
event.preventDefault();
}
Последняя строка полезна для предотвращения перетаскивания изображения. Infact, пользователь выбирает: ни один не является достаточным.