如何为GWT DecorativeTabPanel实现复合视图/演示者?

时间:2010-12-10 19:40:53

标签: java gwt mvp gwt-mvp

我是GWT的新手,我一直在审查使用rpcService和eventBus的MVP实现。我想知道如何实现选项卡面板,使每个选项卡都有自己的子视图。我一直在制作一个源自面板的自定义小部件,或者弄清楚如何让一个演示者使用另一个演示者,或者制作一个复合演示者类来为我处理它。

是否有人就如何分离每个标签的功能提出建议,而不是将实施保留在一个视图/演示者对中?

2 个答案:

答案 0 :(得分:1)

我遇到了同样的情况,但决定将我的实现更改为模拟一个TabPanel。如果您的视图和演示者不需要彼此交互(例如,将某些内容从一个选项卡拖到另一个选项卡),那么我认为通过将View加载到共享的SimplePanel来分离功能会更容易。您可以使用侦听PlaceChangeEvents(更改突出显示的选项卡)的窗口小部件模拟TabPanel的选项卡部分,并将goTo命令发送到您的应用正在使用的PlaceController(以处理不同标题上的点击)。

实现这个需要几个小时,结果代码更清晰。我最初的尝试涉及监听PlaceChangeEvents然后调用相应的tabPanel.selectTab()函数,但是试图弄清楚如何启动和停止不同选项卡的演示者过于混乱 - 就像你建议的那样,你必须实现你自己的复合视图模型。

答案 1 :(得分:0)

我在没有伪造主标签的情况下解决了这个问题,但是使用了GWT基本SDK提供的标签。我是这样做的:

  1. 将Presenters的ArrayList添加到MainTabPresenter
  2. 在MainTabPresenter的'go'方法中构建每个标签的当前加视图
  3. 在每个标签演示者上调用'go(null)'。
  4. 处理每个的空状况。
  5. 在MainTabView中实现了一个方法,将标签添加到DecoratedTabPanel
  6. 这一切都像魅力一样。 MainTabPresenter非常精简,可以将View / Presenters的完整实现写入自己的文件中。