Events 使用UIBinder布局在GWT面板之间交谈

Events 使用UIBinder布局在GWT面板之间交谈,events,gwt,uibinder,Events,Gwt,Uibinder,这里是GWT的新成员 我正在使用UIBinder方法来布局一个应用程序,有点像GWT邮件示例的风格。应用程序以添加到onModuleLoad()方法内的RootLayoutPanel的DockLayoutPanel开始。DockLayoutPanel有一个静态的北和一个静态的南,使用一个自定义的中心小部件,定义如下: public class BigLayoutWidget extends ResizeComposite { ... } 此自定义小部件使用BigLayoutWidget.ui.

这里是GWT的新成员

我正在使用UIBinder方法来布局一个应用程序,有点像GWT邮件示例的风格。应用程序以添加到onModuleLoad()方法内的RootLayoutPanel的DockLayoutPanel开始。DockLayoutPanel有一个静态的北和一个静态的南,使用一个自定义的中心小部件,定义如下:

public class BigLayoutWidget extends ResizeComposite {
...
}
此自定义小部件使用BigLayoutWidget.ui.xml进行布局,BigLayoutWidget.ui.xml又由一个TabLayoutPanel(3个选项卡)组成,第一个选项卡包含一个拆分布局面板,分为WEST(Shortcuts.ui.xml)和CENTER(Workpanel.ui.xml)。快捷方式又由一个StackLayoutPanel组成,其中有3个堆栈,每个堆栈在其自己的ui.xml文件中定义

我希望在快捷方式的单个堆栈中单击事件来更改Workpanel的内容,但到目前为止,我只能在同一个类中操作小部件。在最简单的情况下,我无法通过在快捷方式中单击按钮来清除工作面板的内容或使工作面板不可见

有几个问题。。。
  • ResizeComposite是为此扩展的正确类类型吗?我遵循的是TopPanel、MailList等邮件示例中的方法,所以可能不是这样?
  • 如何使这些单击操作操作不在其中的面板的内容?
  • 是否不再建议侦听器处理事件?我想我在编译过程中看到,现在使用的是ClickHandler,而ClickListener的“订阅”方法正在被弃用(我主要使用@UiHandler注释)
  • 有没有一种简单的方法来处理我的应用程序/页面中的特定元素?(应用UI.XML文件中的“ID”字段会生成弃用警告)。我正在寻找像document.getElementById()这样的东西,它可以为我提供特定元素的句柄。如果存在,我如何设置元素的句柄/ID,然后如何通过名称/ID调用该元素?
  • 注意,我已经很好地确定了布局本身;这是从一个ui.xml模块化面板到下一个ui.xml模块化面板的交互,我无法完全理解

    提前谢谢

  • 如果您不需要调整事件大小,只需使用组合
    Composite
  • 您想要的是GWT开发人员所称的消息总线(实现为)。你可以在谷歌I/O 2009的Ray Ryan所作的广泛讨论(例如,在just search for‘mvp’)演示中找到一个很好的解释。基本上,您在消息总线上“广播”一个事件,然后侦听该事件的小部件获取消息并执行其操作
  • 是的,*处理程序是当前处理事件的方式-用法基本相同,因此迁移不应该是一个问题()。他们对其进行了更改,以便将来可以引入自定义字段,而不会破坏现有代码
  • 如果您已经为任何DOM元素设置了
    id
    (对于小部件,我使用
    someWidget.getElement().setId(id)
    ,通常与组合使用),您可以通过以下方式获得它。然后你会得到一个
    RootPanel
    ,你必须将它转换到正确的Widget类中——正如你所看到的,它可能会变得有点“hackish”(如果你用这个id改变Widget的类型会怎么样?异常,或者更糟),所以我建议坚持使用MVP(见第一点)并通过消息总线进行通信。但是,请记住,有时聚合也很好——并非所有的事情都必须通过消息总线来处理:)
  • 底线是,我建议尽快接受MVP(和)——它使GWT开发更容易,也不那么混乱:)(我从经验中知道,随着时间的推移,如果不将代码分为表示、视图等,代码开始看起来像一场噩梦。)

  • 如果您不需要调整事件大小,只需使用组合
    Composite
  • 您想要的是GWT开发人员所称的消息总线(实现为)。你可以在谷歌I/O 2009的Ray Ryan所作的广泛讨论(例如,在just search for‘mvp’)演示中找到一个很好的解释。基本上,您在消息总线上“广播”一个事件,然后侦听该事件的小部件获取消息并执行其操作
  • 是的,*处理程序是当前处理事件的方式-用法基本相同,因此迁移不应该是一个问题()。他们对其进行了更改,以便将来可以引入自定义字段,而不会破坏现有代码
  • 如果您已经为任何DOM元素设置了
    id
    (对于小部件,我使用
    someWidget.getElement().setId(id)
    ,通常与组合使用),您可以通过以下方式获得它。然后你会得到一个
    RootPanel
    ,你必须将它转换到正确的Widget类中——正如你所看到的,它可能会变得有点“hackish”(如果你用这个id改变Widget的类型会怎么样?异常,或者更糟),所以我建议坚持使用MVP(见第一点)并通过消息总线进行通信。但是,请记住,有时聚合也很好——并非所有的事情都必须通过消息总线来处理:)
  • 底线是,我建议尽快接受MVP(和)——它使GWT开发更容易,也不那么混乱:)(我从经验中知道,随着时间的推移,如果不将代码分为表示、视图等,代码开始看起来像一场噩梦。)