2012-08-31 38 views
0

我正在尋找一個簡單的解決方案,可以將我的GWT DialogBox拖出屏幕。主機具有CSS規則overflow:hidden,因爲我不希望任何滾動條出現。如何防止將GWT DialogBox拖出屏幕?

很明顯,我需要以某種方式附加一個聽衆的拖動,並防止將它帶到外面的移動。我只能在DialogBox中看到onMouseMovebeginDragging,endDragging方法。

回答

1

「我們」已經解決此問題以下列方式工作:

@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); 
} 

BTW它正常工作,因爲它是! ;)

1

我會建議嘗試gwtquery-dnd。我一直在使用拖放插件,它的效果很好。它有一個選項setContianment(元素元素),這是你在找什麼。其他一些功能是它具有捕捉功能,因此如果您希望將對話框放置在某處,您可以捕捉到其他小部件。它還能夠指定類似於DialogBox標題的句柄來進行拖動。

http://code.google.com/p/gwtquery-plugins/wiki/DragAndDropPluginForGWTDeveloppers

1

你可以調查com.google.gwt.user.client.ui.DialogBox源代碼和覆蓋爲需要的所有方法。有幾個方法負責在那裏拖動。

不確定您是否可以通過其他方式解決此問題。否則,你需要開發自定義可拖動彈出面板,我相信不是一個好的解決方案。