package com.ocpsoft.socialpm.gwt.client.local.view.home; import javax.enterprise.context.ApplicationScoped; import javax.enterprise.event.Observes; import javax.inject.Inject; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.event.dom.client.KeyCodes; import com.google.gwt.event.dom.client.KeyPressEvent; import com.google.gwt.event.dom.client.KeyPressHandler; import com.google.gwt.user.client.ui.Anchor; import com.google.gwt.user.client.ui.ComplexPanel; import com.google.gwt.user.client.ui.TextBox; import com.ocpsoft.socialpm.gwt.client.local.view.FixedLayoutView; import com.ocpsoft.socialpm.gwt.client.local.view.component.Div; import com.ocpsoft.socialpm.gwt.client.local.view.component.HeroPanel; import com.ocpsoft.socialpm.gwt.client.local.view.component.ProjectList; import com.ocpsoft.socialpm.gwt.client.local.view.component.Row; import com.ocpsoft.socialpm.gwt.client.local.view.component.StatusFeed; import com.ocpsoft.socialpm.gwt.client.local.view.component.WelcomeBar; import com.ocpsoft.socialpm.model.feed.ProjectCreated; import com.ocpsoft.socialpm.model.user.Profile; @ApplicationScoped public class HomeViewImpl extends FixedLayoutView implements HomeView { private final HeroPanel greeting = new HeroPanel(); private final Anchor sendMessageButton = new Anchor("Send it ยป"); private final TextBox messageBox = new TextBox(); @Inject private WelcomeBar welcomeBar; private final Row dashboard = new Row(); private final StatusFeed statusFeed = new StatusFeed(); @Inject private ProjectList projectList; private Presenter presenter; public HomeViewImpl() { super(); } public void handleProjectCreated(@Observes ProjectCreated event) { System.out.println("Observed ProjectCreated event (ApplicationScoped)"); } @Override public void setup() { welcomeBar.setVisible(false); header.add(welcomeBar); dashboard.setVisible(false); Div left = new Div(); left.setStyleName("span6 cols"); left.add(statusFeed); Div right = new Div(); right.setStyleName("span6 cols"); right.add(projectList); dashboard.add(left); dashboard.add(right); getContent().add(dashboard); greeting.setHeading("Willkommen!"); greeting.setContent("Type a message and click to get started."); getContent().add(greeting); greeting.getUnder().add(getMessageBox()); sendMessageButton.addStyleName("btn btn-primary btn-large"); greeting.addAction(sendMessageButton); setupInputs(); showSplash(); } private void setupInputs() { messageBox.addKeyPressHandler(new KeyPressHandler() { @Override public void onKeyPress(KeyPressEvent event) { if (KeyCodes.KEY_ENTER == event.getCharCode()) { event.preventDefault(); presenter.fireMessage(getMessageBox().getText()); } } }); sendMessageButton.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { event.preventDefault(); presenter.fireMessage(getMessageBox().getText()); } }); } @Override public void showDashboard(Profile profile) { projectList.setOwner(profile); greeting.setVisible(false); welcomeBar.setProfile(profile); welcomeBar.setVisible(true); dashboard.setVisible(true); } @Override public void showSplash() { greeting.setVisible(true); welcomeBar.setVisible(false); dashboard.setVisible(false); } @Override public ComplexPanel getContent() { return content; } @Override public HeroPanel getGreeting() { return greeting; } @Override public TextBox getMessageBox() { return messageBox; } @Override public Anchor getSendMessageButton() { return sendMessageButton; } @Override public WelcomeBar getWelcomeBar() { return welcomeBar; } @Override public ProjectList getProjectList() { return projectList; } @Override public Presenter getPresenter() { return presenter; } @Override public void setPresenter(Presenter presenter) { this.presenter = presenter; } }