DialogBox
GWTを画面の外にドラッグできるという問題の簡単な解決策を探しています。overflow:hidden
スクロールバーを表示したくないので、ホストには CSS ルールがあります。
明らかに、何らかの方法でリスナーをドラッグにアタッチし、それを外に持ち出す動きを防ぐ必要があります。onMouseMove
の 、beginDragging
、endDragging
メソッドしか見えませんDialogBox
。
gwtquery-dnd を試すことをお勧めします。ドラッグ アンド ドロップ プラグインを使用していますが、うまく機能します。探している setContianment(Element elem) のオプションがあります。他のいくつかの機能は、ダイアログボックスをどこかにドッキングしたい場合にスナップできるため、他のウィジェットにスナップできることです。また、ドラッグ用の DialogBox ヘッダーと同様のハンドルを指定する機能もあります。
http://code.google.com/p/gwtquery-plugins/wiki/DragAndDropPluginForGWT開発者
com.google.gwt.user.client.ui.DialogBox ソース コードを調査し、必要に応じてすべてのメソッドをオーバーライドできます。そこにドラッグするためのメソッドがいくつかあります。
この問題を他の方法で解決できるかどうかはわかりません。それ以外の場合は、カスタムのドラッグ可能なポップアップ パネルを開発する必要がありますが、これは良い解決策ではないと確信しています。
「私たちは」この問題を次の方法で回避しました。
@Override
protected void endDragging(MouseUpEvent event)
{
int genericMargin = 60;
int leftMargin = -(this.getOffsetWidth() - genericMargin);
int lowerMargin = Window.getClientHeight() - genericMargin;
int rightMargin = Window.getClientWidth() - genericMargin;
int upperMargin = 0;
if (this.getAbsoluteLeft() > rightMargin)
{this.setPopupPosition(rightMargin, this.getPopupTop()); }
if (this.getAbsoluteLeft() < leftMargin)
{ this.setPopupPosition(leftMargin, this.getPopupTop()); }
if (this.getAbsoluteTop() > lowerMargin)
{ this.setPopupPosition(this.getPopupLeft(), lowerMargin);}
if (this.getAbsoluteTop() < upperMargin)
{ this.setPopupPosition(this.getPopupLeft(), upperMargin);}
super.endDragging(event);
}
ところで、そのままで正しく動作します!;)