package net.thesocialos.client.presenter; import net.thesocialos.client.view.profile.ProfilePanel; import net.thesocialos.client.view.profile.TimelinePanel; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.dom.client.HasClickHandlers; import com.google.gwt.user.client.History; import com.google.gwt.user.client.ui.HasWidgets; import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.PopupPanel; import com.google.gwt.user.client.ui.SimplePanel; import com.google.gwt.user.client.ui.Widget; import com.google.web.bindery.event.shared.SimpleEventBus; public class UserProfilePresenter implements Presenter { public interface Display { Widget asWidget(); Image getAvatar(); /* * HasClickHandlers getProfileButton(); HasClickHandlers getTimelineButton(); HasClickHandlers * getPhotosButton(); HasClickHandlers getMusicButton(); HasClickHandlers getVideosButton(); HasClickHandlers * getLinksButton(); void setData(UserDTO user); */ HasClickHandlers getCloseButton(); SimplePanel getMainPanel(); } private final PopupPanel viewProfilePanel = new PopupPanel(); private SimpleEventBus eventBus; private final Display display; public UserProfilePresenter(SimpleEventBus eventBus, Display display) { this.eventBus = eventBus; this.display = display; } /** * Binds this presenter to its view, loads data on its elements and adds its handlers. */ public void bind() { display.getCloseButton().addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { viewProfilePanel.hide(); History.newItem("desktop"); } }); } @Override public void go(final HasWidgets container) { // container.clear(); // Clear the screen viewProfilePanel.clear(); viewProfilePanel.setGlassEnabled(true); viewProfilePanel.setModal(true); viewProfilePanel.setAnimationEnabled(true); viewProfilePanel.setStyleName("userProfile"); // viewProfilePanel.addStyleName("userProfile"); viewProfilePanel.add(display.asWidget()); container.add(viewProfilePanel); // Print the userProfile in the screen viewProfilePanel.center(); goProfile(); bind(); } /* * public void fetchUserDTO() { new RPCXSRF<UserDTO>() { * @Override protected void callService(AsyncCallback<UserDTO> cb) { } }; } */ /** * Loads the main profile screen */ public void goProfile() { ProfilePanelPresenter presenter = new ProfilePanelPresenter(eventBus, new ProfilePanel()); presenter.go(display.getMainPanel()); } /** * Loads the Links screen. */ public void goProfileLinks() { display.getMainPanel().clear(); display.getMainPanel().add(new ProfilePanel()); } /** * Loads the Music screen. */ public void goProfileMusic() { display.getMainPanel().clear(); display.getMainPanel().add(new ProfilePanel()); } /** * Loads the Photos screen. */ public void goProfilePhotos() { display.getMainPanel().clear(); display.getMainPanel().add(new ProfilePanel()); } /** * Loads the Timeline screen. */ public void goProfileTimeline() { TimelinePresenter presenter = new TimelinePresenter(eventBus, new TimelinePanel()); presenter.go(display.getMainPanel()); } /** * Loads the Videos screen. */ public void goProfileVideos() { display.getMainPanel().clear(); display.getMainPanel().add(new ProfilePanel()); } }