Обновление : Обновление: теперь вы можете загрузить работающий пример проекта 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.Также, пожалуйста, не забудьте настроить UiModule в классе ClientGinjector.
2) Создать нормального докладчика (MyPresenter) с помощью плагина GWTP eclipse
3) Изменить EventBus, импортировать его в презентатор
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) Вместо этого измените презентатор, чтобы расширить TabContainerPresenterof 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, чтобы он расширял TabContentProxyPlace вместо ProxyPlace
10) Создайте метод @TabInfo, см. Javadoc of@TabInfo аннотации, вы также можете использовать другие способы здесь.Например, я сделал это:
@TabInfo(container = MyPresenter.class)
static TabData getTabLabel(ClientGinjector ginjector) {
return new TabDataBasic("My First Tab", 0);
}
11) В методе reveInParent () класса MyFirstTabPresenter убедитесь, что он имеет следующий код или аналогичный:
@Override
protected void revealInParent() {
RevealContentEvent.fire(this, MyPresenter.TYPE_SetTabContent, this);
}
Это все связанос вкладками конфигурации докладчика.Теперь вы можете добавить логику, чтобы загрузить некоторые данные для отображения в представлении MyFirstPresenter.
Я надеюсь, что это может помочь вам начать с докладчиком GWTP с вкладками, пожалуйста, дайте мне знать о любых ваших проблемах, я буду редактировать ответ постепенно идоведите его до совершенства, чтобы оно могло помочь большему количеству людей начать работу с ним.
Кстати, я также опубликовал это в моем блоге , чтобы помочь большему количеству людей в этом.
Спасибо
Цзякуань