2012-05-25 33 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的引用。请参阅我的编辑和添加的评论。 –

相关问题