summaryrefslogtreecommitdiffstats
path: root/src/com/gitblit/wicket/pages/DiffPage.java
blob: 05500f83f2466f6fbeaf41e5888554a0c787583a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package com.gitblit.wicket.pages;

import org.apache.wicket.PageParameters;
import org.apache.wicket.markup.html.basic.Label;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;

import com.gitblit.utils.JGitUtils;
import com.gitblit.wicket.LinkPanel;
import com.gitblit.wicket.RepositoryPage;
import com.gitblit.wicket.panels.PathBreadcrumbsPanel;

public class DiffPage extends RepositoryPage {

	public DiffPage(PageParameters params) {
		super(params, "diff");

		final String blobPath = params.getString("f", null);

		Repository r = getRepository();
		RevCommit commit = JGitUtils.getCommit(r, commitId);
		String diff;
		if (blobPath != null && blobPath.length() > 0) {
			// blob diff
			diff = JGitUtils.getCommitDiff(r, commit, blobPath, true);
		} else {
			// commit diff
			diff = JGitUtils.getCommitDiff(r, commit, true);
		}
		r.close();

		// diff page links
		add(new Label("historyLink", "history"));
		add(new Label("rawLink", "raw"));
		add(new Label("headLink", "HEAD"));

		add(new LinkPanel("shortlog", "title", commit.getShortMessage(), CommitPage.class, newCommitParameter()));

		add(new PathBreadcrumbsPanel("breadcrumbs", repositoryName, blobPath, commitId));

		add(new Label("diffText", diff).setEscapeModelStrings(false));

		// footer
		addFooter();
	}
}