我想窩在GWTP標籤主持人。我有一幀(北)即卡組1和一個幀(西),該標籤組2.當我與組1相互作用我更新其控制組2.我已經看過嵌套標籤的例子中的嵌套的選項卡呈現主持人,但我一直無法確定我的錯誤。GWTP嵌套的標籤主持人
兩個TabContainerPresenters是ManagmentTabsPresenter和SettingsTabsPresenter。這些孩子就像下面的HomePresenter。這些孩子的內容顯示在DockLayoutPanel的中心。我想讓ManagementTabsPresenter和SettingsTabsPresenter顯示在同一個DockLayoutPanel的West插槽中。
我看到的問題是,當運行此代碼時,ManagementTabsPresenter的revealInParent()方法和SettingsTabsPresenter的revealInParent()方法都會在我試圖在子選項卡上查看一個時調用。 (即homePresenter)。爲什麼這兩個revealInParent方法都被調用?我錯過了什麼?確實,SettingsTabsPresenter和ManagementTabsPresenter都位於顯示的父級選項卡中。這是否意味着當父tabcontainerpreseter是revelatedinparent這兩個tabcontainerprestners(nonleavetabcontentproxy)的revealInParent會叫什麼名字?
public class HomePresenter extends Presenter<HomePresenter.MyView, HomePresenter.MyProxy> {
@Inject
AppPlaceManager appPlaceManager;
@NameToken(NameTokens.homePage)
@ProxyStandard
@NoGatekeeper
public interface MyProxy extends TabContentProxyPlace<HomePresenter> {
}
public interface MyView extends View {
}
@TabInfo(container = ManagementTabsPresenter.class)
static TabData getTabLabel(MainAppGinjector injector) {
return new TabDataBasic(injector.getVSMMessages().home_tab(), ClientConstants.HOME_TAB_POSITION);
}
@Inject
public HomePresenter(final EventBus eventBus, final MyView view, final MyProxy proxy) {
super(eventBus, view, proxy);
}
@Override
protected void revealInParent() {
RevealContentEvent.fire(this, ManagementTabsPresenter.TYPE_MAIN_CONTENT_SLOT, this);
}
}
public class ManagementTabsPresenter extends TabContainerPresenter<ManagementTabsPresenter.MyView, ManagementTabsPresenter.MyProxy> {
/**
* {@link ManagementTabsPresenter}'s proxy.
*/
@ProxyStandard
public interface MyProxy extends Proxy<ManagementTabsPresenter> {
}
/**
* {@link ManagementTabsPresenter}'s view.
*/
public interface MyView extends TabView {
}
/**
* Fired by child proxie's when their tab content is changed.
*/
@ChangeTab
public static final Type<ChangeTabHandler> TYPE_Management_ChangeTab = new Type<ChangeTabHandler>();
/**
* Use this in leaf presenters, inside their {@link #revealInParent} method.
*/
@ContentSlot
public static final GwtEvent.Type<RevealContentHandler<?>> TYPE_MAIN_CONTENT_SLOT = MainPresenter.CENTER_SLOT;
/**
* 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_Management_RequestTabs = new Type<RequestTabsHandler>();
@Inject
public ManagementTabsPresenter(final EventBus eventBus, final MyView view,
final MyProxy proxy, AppPlaceManager appPlaceManager) {
super(eventBus, view, proxy,TYPE_MAIN_CONTENT_SLOT, TYPE_Management_RequestTabs, TYPE_Management_ChangeTab);
}
@Override
protected void revealInParent() {
RevealContentEvent.fire(this, MainPresenter.WEST_SLOT, this);
}
}
public class SettingsTabsPresenter extends TabContainerPresenter<SettingsTabsPresenter.MyView, SettingsTabsPresenter.MyProxy> {
/**
* {@link SettingsTabsPresenter}'s proxy.
*/
@ProxyStandard
public interface MyProxy extends Proxy<SettingsTabsPresenter> {
}
/**
* {@link SettingsTabsPresenter}'s view.
*/
public interface MyView extends TabView {
}
/**
* Fired by child proxie's when their tab content is changed.
*/
@ChangeTab
public static final Type<ChangeTabHandler> TYPE_Settings_ChangeTab = new Type<ChangeTabHandler>();
/**
* Use this in leaf presenters, inside their {@link #revealInParent} method.
*/
@ContentSlot
public static final GwtEvent.Type<RevealContentHandler<?>> TYPE_MAIN_CONTENT_SLOT = MainPresenter.CENTER_SLOT;
/**
* 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_Settings_RequestTabs = new Type<RequestTabsHandler>();
@Inject
public ManagementTabsPresenter(final EventBus eventBus, final MyView view,
final MyProxy proxy, AppPlaceManager appPlaceManager) {
super(eventBus, view, proxy,TYPE_MAIN_CONTENT_SLOT, TYPE_Settings_RequestTabs, TYPE_Settings_ChangeTab);
}
@Override
protected void revealInParent() {
RevealContentEvent.fire(this, MainPresenter.WEST_SLOT, this);
}
}
public class MainPresenter extends Presenter<MainPresenter.MyView, MainPresenter.MyProxy>{
@Inject VSMRequestFactory requestFactory;
@Inject VSMMessages vsmMessages;
@Inject VSMExceptionMessages vsmExceptionMessages;
@Inject EventBus eventBus;
@ProxyStandard
@NoGatekeeper
public interface MyProxy extends Proxy<MainPresenter> {
}
public interface MyView extends View {
}
@ContentSlot
public static final Type<RevealContentHandler<?>> SOUTH_SLOT = new Type<RevealContentHandler<?>>();
@ContentSlot
public static final Type<RevealContentHandler<?>> WEST_SLOT = new Type<RevealContentHandler<?>>();
@ContentSlot
public static final Type<RevealContentHandler<?>> CENTER_SLOT = new Type<RevealContentHandler<?>>();
@ContentSlot
public static final Type<RevealContentHandler<?>> NORTH_SLOT = new Type<RevealContentHandler<?>>();
@Inject
public MainPresenter(EventBus eventBus, MyView view, MyProxy proxy) {
super(eventBus, view, proxy);
}
@Override
protected void revealInParent() {
RevealRootLayoutContentEvent.fire(this, this);
}
@Override
protected void onReveal() {
super.onReveal();
initializeAppUser();
}
}
能否請您提供一段代碼或鏈接,你是以下? – PVR
所以我認爲問題在於我想在這裏做什麼。我希望西面的兩個面板只在激活時才顯示。看起來GWTP想讓它們始終可見。我如何讓一個人隱藏? –