我使用GWTP。我做了嵌套演示器教程。但是没有SAMPLE TAB应用程序的教程(如果切换到管理模式,就会出现admin选项卡)。有人能给我解释一下这个应用程序的主要概念吗?Tkx .
Update: Update:现在您可以从这里下载可用的示例Maven项目:gwtp-sample-tab.zip
我在我的项目中成功地使用了选项卡演示器特性(我发现示例代码也不能编译)。我认为第一件事是让它起作用,然后学习它,逐渐感受到它的好处:)
以下是我所做的步骤: 1)复制以下文件BaseTab.java
BaseTabPanel.java
SimpleTab.java
SimpleTabPanel.java
SimpleTab.ui.xml
SimpleTabPanel.ui.xml
UiModule.java
从样例代码到您的项目。例如,我复制到这个包:com.widenhome.web.client.ui。另外,请记住在ClientGinjector类中配置UiModule。
2)通过GWTP eclipse插件创建一个普通的演示器(MyPresenter)
3)更改EventBus在presenter中导入this
import com.google.web.bindery.event.shared.EventBus;
4)确保MyPresenterView.ui.xml具有以下代码或类似代码:
<g:HTMLPanel>
<npui:SimpleTabPanel ui:field="tabPanel" />
<g:SimplePanel ui:field="contentPanel" />
</g:HTMLPanel>
5)将presenter扩展为TabContainerPresenter而不是presenter
public class MyPresenter extends
TabContainerPresenter<MyPresenter.MyView, MyPresenter.MyProxy>
6)在MyPresenter中定义几个变量,或者你可以直接复制/粘贴下面的代码:
/**
* This will be the event sent to our "unknown" child presenters, in order
* for them to register their tabs.
*/
@RequestTabs
public static final Type<RequestTabsHandler> TYPE_RequestTabs = new Type<RequestTabsHandler>();
/**
* Fired by child proxie's when their tab content is changed.
*/
@ChangeTab
public static final Type<ChangeTabHandler> TYPE_ChangeTab = new Type<ChangeTabHandler>();
/**
* Use this in leaf presenters, inside their {@link #revealInParent} method.
*/
@ContentSlot
public static final Type<RevealContentHandler<?>> TYPE_SetTabContent = new Type<RevealContentHandler<?>>();
7)修改MyPresenter的构造函数,使用以下变量:
@Inject
public MyPresenter(final EventBus eventBus, final MyView view, final MyProxy proxy) {
super(eventBus, view, proxy, TYPE_SetTabContent, TYPE_RequestTabs, TYPE_ChangeTab);
}
8)现在我们可以开始创建选项卡展示器,(例如MyFirstTabPresenter)。只需通过GWTP eclipse插件重新创建一个普通的演示者
9)在MyFirstTabPresenter,改变MyProxy让它'extends' TabContentProxyPlace而不是ProxyPlace
10)创建@TabInfo方法,请参见@TabInfo注释的javadoc,您也可以在这里使用其他方式。例如,我这样做:
@TabInfo(container = MyPresenter.class)
static TabData getTabLabel(ClientGinjector ginjector) {
return new TabDataBasic("My First Tab", 0);
}
在MyFirstTabPresenter类的revealInParent()方法中,请确保它具有以下代码或类似代码:
@Override
protected void revealInParent() {
RevealContentEvent.fire(this, MyPresenter.TYPE_SetTabContent, this);
}
这些都与选项卡演示器配置有关。现在你可以添加一些逻辑来加载一些数据,以显示在MyFirstPresenter的视图中。
我希望这能帮助你开始使用GWTP标签演示器,请让我知道你有任何问题,我会逐渐编辑答案并完善它,以便它可以帮助更多的人开始使用它。
顺便说一句,我也把这篇文章贴在我的博客上,以帮助更多的人。
谢谢,
Jiakuan
它甚至无法编译。触发多个演示器的唯一方法是通过嵌套演示器——这太复杂了。我用简单的GWT History机制毫不费力地构建了一个多演示者应用程序。这个框架使得GWT History(简单的机制)成为一个非常深奥的东西。