package com.gitblit.wicket.pages; | |
import java.util.ArrayList; | |
import java.util.List; | |
import org.apache.wicket.PageParameters; | |
import org.apache.wicket.markup.html.basic.Label; | |
import org.apache.wicket.markup.repeater.Item; | |
import org.apache.wicket.markup.repeater.data.DataView; | |
import org.apache.wicket.markup.repeater.data.ListDataProvider; | |
import org.eclipse.jgit.lib.Constants; | |
import org.eclipse.jgit.lib.Repository; | |
import com.gitblit.utils.JGitUtils; | |
import com.gitblit.utils.Utils; | |
import com.gitblit.wicket.LinkPanel; | |
import com.gitblit.wicket.RepositoryPage; | |
import com.gitblit.wicket.WicketUtils; | |
import com.gitblit.wicket.models.RefModel; | |
import com.gitblit.wicket.panels.BranchLinksPanel; | |
public class BranchesPage extends RepositoryPage { | |
public BranchesPage(PageParameters params) { | |
super(params); | |
Repository r = getRepository(); | |
List<RefModel> branches = new ArrayList<RefModel>(); | |
branches.addAll(JGitUtils.getLocalBranches(r, -1)); | |
branches.addAll(JGitUtils.getRemoteBranches(r, -1)); | |
// shortlog | |
add(new LinkPanel("summary", "title", repositoryName, SummaryPage.class, newRepositoryParameter())); | |
ListDataProvider<RefModel> branchesDp = new ListDataProvider<RefModel>(branches); | |
DataView<RefModel> branchView = new DataView<RefModel>("branch", branchesDp) { | |
private static final long serialVersionUID = 1L; | |
int counter = 0; | |
public void populateItem(final Item<RefModel> item) { | |
final RefModel entry = item.getModelObject(); | |
String date; | |
if (entry.getDate() != null) { | |
date = Utils.timeAgo(entry.getDate()); | |
} else { | |
date = ""; | |
} | |
Label branchDateLabel = new Label("branchDate", date); | |
item.add(branchDateLabel); | |
WicketUtils.setCssClass(branchDateLabel, Utils.timeAgoCss(entry.getDate())); | |
item.add(new LinkPanel("branchName", "list name", entry.getDisplayName(), ShortLogPage.class, newCommitParameter(entry.getName()))); | |
boolean remote = entry.getName().startsWith(Constants.R_REMOTES); | |
item.add(new Label("branchType", remote ? "remote":"local")); | |
item.add(new BranchLinksPanel("branchLinks", repositoryName, entry)); | |
String clazz = counter % 2 == 0 ? "dark" : "light"; | |
WicketUtils.setCssClass(item, clazz); | |
counter++; | |
} | |
}; | |
add(branchView); | |
// footer | |
addFooter(); | |
} | |
@Override | |
protected String getPageName() { | |
return "branches"; | |
} | |
} |