2012-05-25 59 views
0

這裏是設置:我有一個頁面,我們將其稱爲A,其中包含一個按鈕,我們將其稱爲B.當用戶點擊B時,會打開一個對話框(C)。 C一旦創建,它就對A或B一無所知。如何讓ClickHandler在GWT中的按鈕上被兩次調用?

現在,如果用戶雙擊B,則會創建2個或多個Cs,這是不可取的。由於C對B一無所知,我不能禁用該按鈕,因爲如果用戶在C中按下取消,它們將返回到A但B仍然被禁用。我也無法保存頁面ID並限制C以這種方式創建,因爲如果用戶打開C,點擊取消但是決定再次打開C,他們必須能夠做到這一點。

無論連續點擊多少次,我如何停止允許打開多個對話框的按鈕?

編輯
我簡化了太多在上面的描述,所以這裏的深入瞭解更。我的Toolbar班有一個名爲reference的按鈕。當單擊reference時,會在完全獨立的類ItemPicker上調用函數,該函數創建並顯示對話框CreateConversation。所以,回到我原來的情景中,B對C沒有任何瞭解。我意識到這是錯綜複雜的,但這不是我現在可以改變的。

不知何故,我需要停止reference撥打第二個電話至ItemPicker.createAndShow(),如果它多次點擊並且CreateConversation對話框已被打開。此外,Toolbar類中沒有ItemPicker的具體實例; createAndShow()是一種靜態方法。

+0

爲了簡單的補充,不要編輯太多:A也沒有對C的具體引用。這是我對他們關係的描述所暗示的,但我寧願明確一點,避免混淆。 –

+0

我沒有忘記這個問題。過去幾周發生了很多事情。我會在早上(美國山區時間)測試@Thomas Broyer最近的建議。 –

回答

1

C不知道B,但B知道C:保持一個句柄,並致電show()。如果C已經顯示,它將是一個無操作,如果已關閉(或尚未打開),它會顯示出來。

+0

乙不知道C.見我的編輯和添加評論。 –

+0

這也沒有什麼不同:在ItemPicker的靜態字段中保存'CreateConversation'對話框的句柄。 –

+0

在ItemPicker中保存一個視圖並檢查它是否爲空!那麼,我還必須從_its_ parent中將它的父視圖和父視圖移除,以便它可以工作,但是您回答了我的問題! :) –

0

推測A具有到C

參考當取消被點擊C,調用C.hide()。現在在您的ClickHandler中,您可以檢查C.isShowing()並啓用/禁用創建對話框,或者使用C.show()重新顯示相同的對話框。

取消被點擊C,除了調用hide()你可以重新初始化C並保留它以便下一次B點擊。

+0

A沒有對C的引用。請參閱我的編輯和添加的評論。 –

相關問題