package com.ocpsoft.socialpm.gwt.client.local.view.project.view;
import javax.enterprise.context.ApplicationScoped;
import com.google.inject.Inject;
import com.ocpsoft.socialpm.gwt.client.local.view.FixedLayoutView;
import com.ocpsoft.socialpm.gwt.client.local.view.component.BreadCrumb;
import com.ocpsoft.socialpm.gwt.client.local.view.component.BreadCrumbList;
import com.ocpsoft.socialpm.gwt.client.local.view.component.Div;
import com.ocpsoft.socialpm.gwt.client.local.view.component.Heading;
import com.ocpsoft.socialpm.gwt.client.local.view.component.IterationList;
import com.ocpsoft.socialpm.gwt.client.local.view.component.ProfileLink;
import com.ocpsoft.socialpm.gwt.client.local.view.component.ProjectLink;
import com.ocpsoft.socialpm.gwt.client.local.view.component.Span;
import com.ocpsoft.socialpm.gwt.client.local.view.component.StoryList;
import com.ocpsoft.socialpm.model.project.Project;
@ApplicationScoped
public class ProjectViewImpl extends FixedLayoutView implements ProjectView
{
private Project project;
private Presenter presenter;
ProjectLink projectLink = new ProjectLink();
ProfileLink profileLink = new ProfileLink();
Span pulse = new Span(":)");
@Inject
IterationList iterationList;
@Inject
StoryList storyList;
@Override
public void setup()
{
Div projectHeader = createProjectHeaderRow();
Div body = createProjectBodyRow();
content.add(projectHeader);
content.add(body);
storyList.setPresenter(getPresenter());
}
private Div createProjectHeaderRow()
{
Div projectHeader = new Div();
projectHeader.setStyleName("row");
Div left = new Div();
left.setStyleName("span8 cols");
Div right = new Div();
right.setStyleName("span4 cols");
projectHeader.add(left);
projectHeader.add(right);
BreadCrumbList breadcrumbs = new BreadCrumbList();
breadcrumbs.push(new BreadCrumb(profileLink));
breadcrumbs.push(new BreadCrumb(projectLink));
Heading heading = new Heading(1);
pulse.setStyleName("badge");
heading.add(pulse);
heading.add(new Span(" "));
heading.add(breadcrumbs);
heading.addStyleName("project-title");
left.add(heading);
return projectHeader;
}
private Div createProjectBodyRow()
{
Div projectHeader = new Div();
projectHeader.setStyleName("row");
Div left = new Div();
left.setStyleName("span6 cols");
Div right = new Div();
right.setStyleName("span6 cols");
projectHeader.add(left);
projectHeader.add(right);
right.add(iterationList);
left.add(storyList);
return projectHeader;
}
@Override
public void setProject(Project project)
{
this.profileLink.setProfile(project.getOwner());
this.projectLink.setProject(project);
this.iterationList.setProject(project);
this.iterationList.setIterations(project.getIterations());
this.storyList.setPresenter(presenter);
this.storyList.setProject(project);
this.storyList.setStories(project.getStories());
pulse.setInnerText(project.getOpenStories().size() + "");
}
/*
* Getters & Setters
*/
@Override
public Presenter getPresenter()
{
return presenter;
}
@Override
public void setPresenter(Presenter presenter)
{
this.presenter = presenter;
}
public Project getProject()
{
return project;
}
}