/* * Copyright 2009 David M Chandler All Rights Reserved. */ package com.example.listmaker.app.client; import com.example.listmaker.app.client.service.AppCallback; import com.example.listmaker.common.client.ui.web.AppStyles; import com.google.gwt.activity.shared.ActivityManager; import com.google.gwt.activity.shared.ActivityMapper; import com.google.gwt.core.client.EntryPoint; import com.google.gwt.core.client.GWT; import com.google.gwt.dom.client.Document; import com.google.gwt.dom.client.Element; import com.google.gwt.dom.client.LIElement; import com.google.gwt.dom.client.UListElement; import com.google.gwt.event.logical.shared.ValueChangeEvent; import com.google.gwt.event.logical.shared.ValueChangeHandler; import com.google.gwt.place.shared.Place; import com.google.gwt.place.shared.PlaceHistoryHandler; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.ui.RootPanel; import com.google.gwt.user.client.ui.SimplePanel; import com.example.listmaker.app.client.domain.User; import com.example.listmaker.app.client.mvp.AddNoteActivityMapper; import com.example.listmaker.app.client.mvp.AppActivityMapper; import com.example.listmaker.app.client.mvp.NavActivityMapper; import com.example.listmaker.app.client.mvp.UserActivityMapper; import com.example.listmaker.app.client.place.HomePlace; import com.example.listmaker.app.client.service.LoginInfoService; import org.fusesource.restygwt.client.Defaults; /** * Listmaker entry point. */ public class ListmakerMvp implements EntryPoint { private static final String LOGOUT_URL = "/listmaker/logout"; private SimplePanel addNote = new SimplePanel(); private SimplePanel mainDisplay = new SimplePanel(); private SimplePanel userDisplay = new SimplePanel(); private SimplePanel nav = new SimplePanel(); private Place defaultPlace = new HomePlace(null); /** * This is the entry point method. */ public void onModuleLoad() { Defaults.setDateFormat(null); Defaults.setDispatcher(App.getDispatcher()); addLoggers(); LoginInfoService loginInfoService = GWT.create(LoginInfoService.class); loginInfoService.login(GWT.getHostPageBaseURL(), new AppCallback<User>() { @Override public void handleSuccess(User me) { App.getAppModel().setMe(me); loadApp(); } }); } private void loadApp() { // Show login links Element userLinks = Document.get().getElementById(AppStyles.ID_USER_LINKS); UListElement ul = Document.get().createULElement(); LIElement liSignedIn = Document.get().createLIElement(); LIElement liSignOut = Document.get().createLIElement(); User me = App.getAppModel().getMe(); String firstName = me.firstName; String lastName = me.lastName; liSignedIn.setInnerHTML("Signed in as <span class=\"nameText\">" + firstName + " " + lastName + "</span>"); liSignOut.setInnerHTML("<span class=\"listmaker-userEmail\">" + me.emailAddress + "</span>"); liSignOut.setInnerHTML("<a href=\"" + LOGOUT_URL + "\">Sign out</a>"); ul.appendChild(liSignedIn); ul.appendChild(liSignOut); userLinks.appendChild(ul); //gwt-activities-and-places ActivityMapper userActivityMapper = new UserActivityMapper(); ActivityManager userActivityManager = new ActivityManager(userActivityMapper, App.getEventBus()); userActivityManager.setDisplay(userDisplay); ActivityMapper addNoteActivityMapper = new AddNoteActivityMapper(); ActivityManager addNoteActivityManager = new ActivityManager(addNoteActivityMapper, App.getEventBus()); addNoteActivityManager.setDisplay(addNote); ActivityMapper navActivityMapper = new NavActivityMapper(); ActivityManager navActivityManager = new ActivityManager(navActivityMapper, App.getEventBus()); navActivityManager.setDisplay(nav); ActivityMapper mainActivityMapper = new AppActivityMapper(); ActivityManager noteDisplayActivityManager = new ActivityManager(mainActivityMapper, App.getEventBus()); noteDisplayActivityManager.setDisplay(mainDisplay); PlaceHistoryHandler historyHandler = new PlaceHistoryHandler(App.getPlaceHistoryMapper()); historyHandler.register(App.getClientFactory().getPlaceController(), App.getEventBus(), defaultPlace); DOM.removeChild(RootPanel.getBodyElement(), DOM.getElementById(AppStyles.ID_SPLASH)); RootPanel.get(AppStyles.BODY_PANEL_USER_ID).add(userDisplay); RootPanel.get(AppStyles.BODY_PANEL_TOP_ID).add(addNote); RootPanel.get(AppStyles.BODY_PANEL_CONTENT_ID).add(mainDisplay); RootPanel.get(AppStyles.BODY_PANEL_NAV_ID).add(nav); historyHandler.handleCurrentHistory(); } private void addLoggers() { App.getEventBus().addHandler(ValueChangeEvent.getType(), new ValueChangeHandler<String>() { @Override public void onValueChange(ValueChangeEvent<String> event) { App.getLogger().finest("VCE " + event.getValue()); } }); } }