Rev 4364 | Rev 4397 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package in.shop2020.hotspot.dashbaord.client;import in.shop2020.hotspot.dashbaord.client.admin.AdminPresenter;import in.shop2020.hotspot.dashbaord.client.event.LoadOrderCountsEvent;import in.shop2020.hotspot.dashbaord.client.event.LoadOrderListEvent;import in.shop2020.hotspot.dashbaord.client.event.SignOutEvent;import in.shop2020.hotspot.dashbaord.client.event.SignOutEventHandler;import in.shop2020.hotspot.dashbaord.client.event.SubmitLoginInfoEvent;import in.shop2020.hotspot.dashbaord.client.event.SubmitLoginInfoHandler;import in.shop2020.hotspot.dashbaord.client.inbox.InboxPresenter;import in.shop2020.hotspot.dashbaord.shared.actions.AuthRequest;import in.shop2020.hotspot.dashbaord.shared.actions.AuthResponse;import in.shop2020.hotspot.dashbaord.shared.actions.AuthResponse.NEXT;import in.shop2020.hotspot.dashbaord.shared.actions.OrderType;import net.customware.gwt.dispatch.client.DispatchAsync;import org.enunes.gwt.mvp.client.EventBus;import org.enunes.gwt.mvp.client.presenter.BasePresenter;import org.enunes.gwt.mvp.client.presenter.Presenter;import com.google.gwt.user.client.rpc.AsyncCallback;import com.google.inject.Inject;import com.google.inject.Provider;public class MainPresenterImpl extends BasePresenter<MainPresenter.Display> implements MainPresenter{private final Provider<InboxPresenter> inboxProvider;private final LoginDisplayPresenter lPresenter;private final Provider<AdminPresenter> adminProvider;private Presenter<? extends org.enunes.gwt.mvp.client.view.Display> presenter;private final DispatchAsync dispatcher;@Injectpublic MainPresenterImpl(EventBus eventBus, Display display, LoginDisplayPresenter loginpresenter,Provider<InboxPresenter> inboxProvider, Provider<AdminPresenter> adminPresenter,final DispatchAsync dispatcher ) {super(eventBus, display);this.inboxProvider = inboxProvider;this.adminProvider = adminPresenter;lPresenter = loginpresenter;lPresenter.bind();this.dispatcher = dispatcher;display.addContent(loginpresenter.getDisplay());}private void switchPresenter(Presenter<? extends org.enunes.gwt.mvp.client.view.Display> presenter) {if (this.presenter != null) {this.presenter.unbind();display.removeContent();}this.presenter = presenter;if (presenter != null) {display.addContent(presenter.getDisplay());this.presenter.bind();}}@Overridepublic void bind(){super.bind();registerHandler(eventBus.addHandler(SignOutEvent.getType(), new SignOutEventHandler() {@Overridepublic void doSignout(SignOutEvent event) {signOut();}}));registerHandler(eventBus.addHandler(SubmitLoginInfoEvent.getType(), new SubmitLoginInfoHandler() {@Overridepublic void onSubmitLoginInfo(SubmitLoginInfoEvent event) {dispatcher.execute(new AuthRequest(event.getUserName(), event.getPassword()), new AsyncCallback<AuthResponse>() {@Overridepublic void onFailure(Throwable caught) {lPresenter.showError("You do not seem in good terms with auth server. It is lost!");}@Overridepublic void onSuccess(AuthResponse result) {doAuth(result);}});}}));}private void doAuth(AuthResponse result){if (result.isStatus()){lPresenter.showError("Welcome! "+ result.getUsername() +", "+ result.getMessage());if(result.getNext() == NEXT.INBOX){final InboxPresenter inboxPresenter = inboxProvider.get();inboxPresenter.setUsername(result.getUsername());inboxPresenter.setWarehouseId(result.getWarehouseId());inboxPresenter.setUserType(result.getUserType());inboxPresenter.setBillingType(result.getBillingType());inboxPresenter.setVendors(result.getVendors());inboxPresenter.initialize();//inboxPresenter.refreshOrderList();inboxPresenter.getDisplay().changeGreeting(result.getUsername());switchPresenter(inboxPresenter);eventBus.fireEvent(new LoadOrderListEvent());for(OrderType orderType: OrderType.values()){eventBus.fireEvent(new LoadOrderCountsEvent(orderType));}}if(result.getNext() == NEXT.ADMIN){final AdminPresenter adminPresenter = adminProvider.get();adminPresenter.initialize();switchPresenter(adminPresenter);//fire event to load adminPresentereventBus.fireEvent(new LoadOrderListEvent());}}elselPresenter.showError("Who are you man! Have we met before? ");}private void signOut(){lPresenter.reset();switchPresenter(lPresenter);}@Overridepublic void unbind() {super.unbind();if (presenter != null) {presenter.unbind();}}}