Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8206365
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 7, 20262026-06-07T08:38:15+00:00 2026-06-07T08:38:15+00:00

I posted a question the other day and didn’t get much response. I have

  • 0

I posted a question the other day and didn’t get much response. I have tried a few things but still no luck. I am trying to nest a tab presenter in GWTP. I have one frame (North) that is tab group 1 and one frame (West) that is tab group 2. When I interact with group 1 I update the nested tab presenter which controls group 2. I have looked at the example for nested tab presenters but I have been unable to determine my error from it.

The two TabContainerPresenters are ManagementTabsPresenter and SettingsTabsPresenter. The children of these are like the HomePresenter below. The content for these children is displayed in the center of a DockLayoutPanel located in the MainPreseter. I want the ManagementTabsPresenter and the SettingsTabsPresenter to be displayed in the West slot of the same DockLayoutPanel.

When I run this code everything is placed on the screen in the correct locations. You can even click the tabs and have actions occur. The problems start in that the SettingsPresenter is displayed first even though the default page is the HomePresenter. It’s like it tries to reveal both at the same time on start up. Then when you selected any of the tabs which are part of the ManagementTabsPresenter or the SettingsTabsPresenter It opens the correct content in the MainPresenter.Center_Slot but the incorrect presenter is displayed in the MainPresenter.West_Slot. I can’t figure out what’s going wrong here. Any help would be appreciated.

Here is the code:

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("home", 0);
}

@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 NonLeafTabContentProxy<ManagementTabsPresenter> {
}

/**
 * {@link ManagementTabsPresenter}'s view.
 */
public interface MyView extends TabView {
}

/**
 * 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>();

@TabInfo(container = HeaderTabsPresenter.class, nameToken = NameTokens.homePage)
static TabData getTabLabel(MainAppGinjector injector) {
    return new TabDataBasic("Management", 0);
}

@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);
}


@Override
protected void revealInParent() {
    RevealContentEvent.fire(this,  HeaderTabsPresenter.TYPE_VERTICAL_TABS_SLOT, this);
}
}



public class SettingsTabsPresenter extends TabContainerPresenter<SettingsTabsPresenter.MyView, SettingsTabsPresenter.MyProxy> {

/**
 * {@link SettingsTabsPresenter}'s proxy.
 */
@ProxyStandard
public interface MyProxy extends NonLeafTabContentProxy<SettingsTabsPresenter> {
}

/**
 * {@link SettingsTabsPresenter}'s view.
 */
public interface MyView extends TabView {
}

@TabInfo(container = HeaderTabsPresenter.class, nameToken = NameTokens.appUserCollectionPage)
static TabData getTabLabel(MainAppGinjector injector) {
    return new TabDataBasic("Settings", 1);
}

/**
 * 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 SettingsTabsPresenter(final EventBus eventBus, final MyView view,
                               final MyProxy proxy,  AppPlaceManager appPlaceManager) {
    super(eventBus, view, proxy,TYPE_MAIN_CONTENT_SLOT, TYPE_Settings_RequestTabs);
}


@Override
protected void revealInParent() {
    RevealContentEvent.fire(this,  HeaderTabsPresenter.TYPE_VERTICAL_TABS_SLOT, this);
}
}


public class HeaderTabsPresenter extends TabContainerPresenter<HeaderTabsPresenter.MyView, HeaderTabsPresenter.MyProxy> {
@Inject EventBus eventBus;

/**
 * {@link HeaderTabsPresenter}'s proxy.
 */
@ProxyStandard
public interface MyProxy extends Proxy<HeaderTabsPresenter> {
}

/**
 * {@link HeaderTabsPresenter}'s view.
 */
public interface MyView extends TabView {
    void changeTab(Tab tab, TabData tabData, String historyToken);
}

/**
 * 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_HEADER_RequestTabs = new Type<RequestTabsHandler>();

/**
 * Fired by child proxie's when their tab content is changed.
 */
@ChangeTab
public static final Type<ChangeTabHandler> TYPE_HEADER_ChangeTab = new Type<ChangeTabHandler>();

@ContentSlot
public static final Type<RevealContentHandler<?>> TYPE_VERTICAL_TABS_SLOT = MainPresenter.WEST_SLOT;

@Inject
public HeaderTabsPresenter(final EventBus eventBus, final MyView view,
                           final MyProxy proxy) {
    super(eventBus, view, proxy, TYPE_VERTICAL_TABS_SLOT, TYPE_HEADER_RequestTabs, TYPE_HEADER_ChangeTab);
}


@Override
protected void revealInParent() {
     RevealContentEvent.fire(this, MainPresenter.NORTH_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();
}

}
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-07T08:38:18+00:00Added an answer on June 7, 2026 at 8:38 am

    I stumbled upon something similar before… I think it is because both of them inherit from TabContainerPresenter and that there is a bug in gwtp that calls onReveal() on the wrong inherited child.

    take a look at this gwtp forum post:
    https://groups.google.com/forum/?fromgroups#!searchin/gwt-platform/gilad$20egozi/gwt-platform/p0s3BlN-ceE/5EL3nynaiu4J

    Is that the case? if so, I don’t think anyone filed a bug on the gwtp issue tracker, so let me know.

    (of-course, the best check is not to inherit and see if its working)

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I posted a question the other day, but I didn't included enough code and
I posted this question on Reddit Programming and did not get a single response.
I've posted this question here . but didnt get any answers. So I'm posting
I posted this question a few hours ago but I think I deleted it!
I posted a similar question the other day asking what my command path is.
I have posted question here and answer is correct but I'm was not perfectly
So I posted a question the other day about an access form that needed
I have posted similar question previously, but this time I am providing some code
i posted the other day with practice questions i was getting stuck with and
I posted a question re LDAP account management, but after exploring this, it's not

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.