Problem Background
Here I've 3 Tabs with SubTabs under them. When I click on a Tab, only the default SubTab maintained with code like following in every Sub TabContainerPresenter can be viewed, but the other with priority other than 0 are not even clickable./*Main TabContainerPresenter*/
@TabInfo(container = MainPagePresenter.class, priority = 1, nameToken = NameTokens.ADD_AGENT)
static String getTabLabel(TGinInjector ginjector) {
return ginjector.getTConstants().agent();
}
/*Child TabContainerPresenters*/
@TabInfo(container = AgentPresenter.class)
static TabData getTabLabel(TGinInjector ginjector) {
return new TabDataBasic(ginjector.getTConstants().addAgent(), 0);
}
@TabInfo(container = AgentPresenter.class)
static TabData getTabLabel(TGinInjector ginjector) {
return new TabDataBasic(ginjector.getTConstants().listAgents(), 1);
}
When tried to click on SubTab with priority other than than 0, throws the error
java.lang.IllegalArgumentException: invoke arguments: JS value of type boolean, expected java.lang.String.
1 - My EntryPoint - T.java
public class T implements EntryPoint {
public final TGinInjector gInjector = GWT.create(TInjector.class);
@Override
public void onModuleLoad() {
TResources.INSTANCE.tCss().ensureInjected();
RootPanel loader = RootPanel.get("loader");
loader.setStyleName("in-loader");
DelayedBindRegistry.bind(gInjector);
gInjector.getPlaceManager().revealCurrentPlace();
}
2 - My Ginjector - TGinInjector.java
@GinModules({ TModule.class })
public interface TGinInjector extends Ginjector {
PlaceManager getPlaceManager();
EventBus getEventBus();
TConstants getTConstants();
Provider<MainPagePresenter> getMainPagePresenter();
/*
* Statement Module
*/
AsyncProvider<TStatementPresenter> getTStatementPresenter();
AsyncProvider<StatementPresenter> getStatementPresenter();
/*
* Agent Module
*/
AsyncProvider<AgentPresenter> getAgentPresenter();
AsyncProvider<AddAgentPresenter> getAddAgentPresenter();
AsyncProvider<ListAgentPresenter> getListAgentPresenter();
}
3 - My PresenterModule is - TModule.java
public class TModule extends AbstractPresenterModule {
@Override
protected void configure() {
bind(EventBus.class).to(SimpleEventBus.class).in(Singleton.class);
bind(TokenFormatter.class).to(ParameterTokenFormatter.class).in(
Singleton.class);
bind(RootPresenter.class).to(TRootPresenter.class)
.asEagerSingleton();
bind(PlaceManager.class).to(TPlaceManager.class).in(
Singleton.class);
bindConstant().annotatedWith(DefaultPlace.class).to(
NameTokens.STATEMENT);
bindPresenter(MainPagePresenter.class, IMainPageView.class,
MainPageView.class, MainPagePresenter.MainProxy.class);
/*
* Statement Module
*/
bindPresenter(
TStatementPresenter.class,
ITStatementView.class,
TStatementTabView.class,
TStatementPresenter.ITStatementTabContentProxy.class);
bindPresenter(StatementPresenter.class, IStatementView.class,
StatementView.class,
StatementPresenter.IStatementTabContentProxyPlace.class);
/*
* Agent Module
*/
bindPresenter(AgentPresenter.class, IAgentView.class, AgentView.class,
AgentPresenter.AgentProxy.class);
bindPresenter(AddAgentPresenter.class, IAddAgentView.class,
AddAgentView.class, AddAgentPresenter.AddAgentTabContentProxyPlace.class);
bindPresenter(ListAgentPresenter.class, IListAgentView.class,
ListAgentView.class, ListAgentPresenter.ListAgentProxy.class);
bindPresenter(AddServicePresenter.class, IAddServiceView.class,
AddServiceView.class, AddServiceProxy.class);
}
4 - My PlaceManagerImpl - TPlaceManager.java
public class TPlaceManager extends PlaceManagerImpl {
private final PlaceRequest defaultPlaceRequest;
@Inject
public TPlaceManager(EventBus eventBus, TokenFormatter tokenFormatter, @DefaultPlace String nameToken) {
super(eventBus, tokenFormatter);
defaultPlaceRequest = new PlaceRequest(nameToken);
}
@Override
public void revealDefaultPlace() {
revealPlace(defaultPlaceRequest);
}
}
5 - My AgentPresenter for a Tab - AgentPresenter.java
public class AgentPresenter extends
SubContainerPresenterBase<AgentView, AgentPresenter.AgentTabContentProxy> {
@RequestTabs
public static final Type<RequestTabsHandler> TYPE_RequestTabs = new Type<RequestTabsHandler>();
@ContentSlot
public static final Type<RevealContentHandler<?>> TYPE_SetTabContent = new Type<RevealContentHandler<?>>();
@Inject
public AgentPresenter(EventBus eventBus, AgentView view, AgentProxy proxy,
Type<RevealContentHandler<?>> setTabContent,
Type<RequestTabsHandler> requestTabs) {
super(eventBus, view, proxy, TYPE_SetTabContent, TYPE_RequestTabs);
}
@ProxyCodeSplit
public interface AgentTabContentProxy extends TabContentProxy<AgentPresenter> {
}
@TabInfo(container = MainPagePresenter.class, priority = 1, nameToken = NameTokens.ADD_AGENT)
static String getTabLabel(TGinInjector ginjector) {
return ginjector.getTConstants().agent();
}
@Override
protected void revealInParent() {
RevealContentEvent.fire(this, MainPagePresenter.TYPE_SetMainContent,
this);
}
}
6 - AddAgentPresenter.java for a SubTab AddAgent with priority 0
/**
* @author prayag
* @date Sep 13, 2012
*/
public class AddAgentPresenter extends Presenter<IAddAgentView, AddAgentPresenter.AddAgentTabContentProxyPlace> implements IAddAgentView.AddAgentViewUiHandler {
@Inject
private IAgentServiceAsync agentService;
@Inject
public AddAgentPresenter(EventBus eventBus, IAddAgentView view, AddAgentTabContentProxyPlace proxy) {
super(eventBus, view, proxy);
getView().setUiHandlers(this);
}
@ProxyCodeSplit
@NameToken(NameTokens.ADD_AGENT)
public interface AddAgentTabContentProxyPlace extends TabContentProxyPlace<AddAgentPresenter> {
}
@TabInfo(container = AgentPresenter.class)
static TabData getTabLabel(TGinInjector ginjector) {
return new TabDataBasic(ginjector.getTConstants().addAgent(), 0);
}
@Override
protected void revealInParent() {
RevealContentEvent.fire(this, AgentPresenter.TYPE_SetTabContent, this);
}
@Override
protected void onReveal() {
super.onReveal();
}
@Override
public void addAgent(AgentDto dto) {
agentService.addAgent(dto, new AsyncCallback<Void>() {
@Override
public void onSuccess(Void result) {
Window.alert("Agent added successfully.");
}
@Override
public void onFailure(Throwable caught) {
Window.alert("Faild to add the agent." + caught.getMessage());
}
});
}
}
7 - ListAgentPresenter.java for a SubTab ListAgent with priority 1
public class ListAgentPresenter extends
Presenter<IListAgentView, ListAgentPresenter.ListAgentProxy> implements
IListAgentView.ListAgentViewUiHandler {
@Inject
private IAgentServiceAsync agentService;
@Inject
public ListAgentPresenter(EventBus eventBus, IListAgentView view,
ListAgentProxy proxy, ListAgentDataProvider dataprovider) {
super(eventBus, view, proxy);
dataprovider.addDataDisplay(view.getDisplay());
getView().setUiHandlers(this);
}
@ProxyCodeSplit
@NameToken(NameTokens.LIST_AGENT)
public interface ListAgentProxy extends
TabContentProxyPlace<ListAgentPresenter> {
}
@TabInfo(container = AgentPresenter.class)
static TabData getTabLabel(TGinInjector ginjector) {
return new TabDataBasic(ginjector.getTConstants()
.listAgents(), 1);
}
@Override
protected void revealInParent() {
RevealContentEvent.fire(this, AgentPresenter.TYPE_SetTabContent, this);
}
@Override
protected void onReveal() {
super.onReveal();
}
private void refreshTable() {
getView().getDisplay().setVisibleRangeAndClearData(
getView().getDisplay().getVisibleRange(), true);
}
}
No comments:
Post a Comment