James Moger
2011-05-11 dfb88962fdbd29f59abe92178bb042738d57c3e1
commit | author | age
608ece 1 package com.gitblit.wicket.pages;
JM 2
3 import org.apache.wicket.PageParameters;
4 import org.apache.wicket.markup.html.basic.Label;
5 import org.apache.wicket.markup.html.link.BookmarkablePageLink;
6 import org.eclipse.jgit.lib.Repository;
7 import org.eclipse.jgit.revwalk.RevCommit;
8
3df349 9 import com.gitblit.GitBlit;
JM 10 import com.gitblit.Keys;
608ece 11 import com.gitblit.utils.JGitUtils;
3df349 12 import com.gitblit.utils.JGitUtils.DiffOutputType;
f5d0ad 13 import com.gitblit.utils.StringUtils;
608ece 14 import com.gitblit.wicket.RepositoryPage;
JM 15 import com.gitblit.wicket.WicketUtils;
c1c3c6 16 import com.gitblit.wicket.panels.CommitHeaderPanel;
608ece 17 import com.gitblit.wicket.panels.PathBreadcrumbsPanel;
JM 18
19 public class BlobDiffPage extends RepositoryPage {
20
21     public BlobDiffPage(PageParameters params) {
22         super(params);
23
24         final String blobPath = WicketUtils.getPath(params);
f1dfc2 25         final String baseObjectId = WicketUtils.getBaseObjectId(params);
608ece 26
JM 27         Repository r = getRepository();
bc9d4a 28         RevCommit commit = getCommit();
JM 29                 
3df349 30         DiffOutputType diffType = DiffOutputType.forName(GitBlit.self().settings().getString(Keys.web.diffStyle, DiffOutputType.GITBLIT.name()));
JM 31
f1dfc2 32         String diff;
JM 33         if (StringUtils.isEmpty(baseObjectId)) {
34             // use first parent
3df349 35             diff = JGitUtils.getCommitDiff(r, commit, blobPath, diffType);
ce119a 36             add(new BookmarkablePageLink<Void>("patchLink", PatchPage.class, WicketUtils.newPathParameter(repositoryName, objectId, blobPath)));
f1dfc2 37         } else {
JM 38             // base commit specified
39             RevCommit baseCommit = JGitUtils.getCommit(r, baseObjectId);
3df349 40             diff = JGitUtils.getCommitDiff(r, baseCommit, commit, blobPath, diffType);
ce119a 41             add(new BookmarkablePageLink<Void>("patchLink", PatchPage.class, WicketUtils.newBlobDiffParameter(repositoryName, baseObjectId, objectId, blobPath)));
f1dfc2 42         }
JM 43         
608ece 44         add(new BookmarkablePageLink<Void>("commitLink", CommitPage.class, WicketUtils.newObjectParameter(repositoryName, objectId)));
JM 45         add(new BookmarkablePageLink<Void>("commitDiffLink", CommitDiffPage.class, WicketUtils.newObjectParameter(repositoryName, objectId)));
46
47         // diff page links
48         add(new Label("blameLink", getString("gb.blame")));
01bd34 49         add(new BookmarkablePageLink<Void>("historyLink", HistoryPage.class, WicketUtils.newPathParameter(repositoryName, objectId, blobPath)));
608ece 50
c1c3c6 51         add(new CommitHeaderPanel("commitHeader", repositoryName, commit));
608ece 52
JM 53         add(new PathBreadcrumbsPanel("breadcrumbs", repositoryName, blobPath, objectId));
155bf7 54
608ece 55         add(new Label("diffText", diff).setEscapeModelStrings(false));
JM 56     }
155bf7 57
608ece 58     @Override
JM 59     protected String getPageName() {
60         return getString("gb.diff");
61     }
62 }