/*
* HeadsUp Agile
* Copyright 2009-2013 Heads Up Development Ltd.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.headsupdev.agile.app.dashboard;
import org.apache.wicket.markup.html.CSSPackageResource;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.link.Link;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.html.image.Image;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.ResourceReference;
import org.apache.wicket.PageParameters;
import org.headsupdev.agile.api.*;
import org.headsupdev.agile.app.dashboard.permission.ProjectViewPermission;
import org.headsupdev.agile.web.components.ProjectDetailsPanel;
import org.headsupdev.agile.web.components.MavenTwoProjectDetailsPanel;
import org.headsupdev.agile.web.MountPoint;
import org.headsupdev.agile.web.HeadsUpPage;
import org.headsupdev.agile.storage.StoredProject;
import org.headsupdev.agile.web.components.XCodeProjectDetailsPanel;
import java.util.LinkedList;
/**
* Show the full details of a project and summarise it's activity too
*
* @author Andrew Williams
* @version $Id$
* @since 1.0
*/
@MountPoint( "show" )
public class Show extends HeadsUpPage
{
private String name;
public Permission getRequiredPermission()
{
return new ProjectViewPermission();
}
public void layout()
{
super.layout();
add( CSSPackageResource.getHeaderContribution( getClass(), "welcome.css" ) );
Project project = getProject();
if ( project.equals( StoredProject.getDefault() ) ) {
setResponsePage( Welcome.class );
return;
}
name = project.getAlias();
add( new ProjectDetailsPanel( "projectdetails", project ) );
PageParameters params = new PageParameters();
params.add( "project", project.getId() );
params.add( "time", ActivityGraph.TIME_MONTH );
params.add( "tree", "false" );
params.add( "silent", "true" );
add( new Image( "activity-month", new ResourceReference( "activity.png" ), params ) );
params = new PageParameters();
params.add( "project", project.getId() );
params.add( "time", ActivityGraph.TIME_YEAR );
params.add( "tree", "false" );
params.add( "silent", "true" );
add( new Image( "activity-year", new ResourceReference( "activity.png" ), params ) );
if ( project instanceof MavenTwoProject)
{
add( new MavenTwoProjectDetailsPanel( "m2", (MavenTwoProject) project, false ) );
}
else
{
add( new WebMarkupContainer( "m2" ).setVisible( false ) );
}
if ( project instanceof XCodeProject )
{
add( new XCodeProjectDetailsPanel( "xcode", (XCodeProject) project ) );
}
else
{
add( new WebMarkupContainer( "xcode" ).setVisible( false ) );
}
add( new ListView<Project>( "projectlist", new LinkedList<Project>( project.getChildProjects() ) ) {
protected void populateItem( ListItem<Project> listItem )
{
Project project = listItem.getModelObject();
PageParameters params = new PageParameters();
params.add( "project", project.getId() );
Link projectLink = new BookmarkablePageLink( "project-link", Show.class, params );
params.add( "time", ActivityGraph.TIME_MONTH );
params.add( "tree", "true" );
params.add( "silent", "true" );
projectLink.add( new Image( "activity", new ResourceReference( "activity.png" ), params ) );
projectLink.add( new Label( "name", project.getAlias() ) );
listItem.add( projectLink );
}
});
}
@Override
public String getPageTitle()
{
return name + PAGE_TITLE_SEPARATOR + super.getPageTitle();
}
}