James Moger
2011-05-11 dfb88962fdbd29f59abe92178bb042738d57c3e1
src/com/gitblit/wicket/pages/BlobPage.java
@@ -6,49 +6,62 @@
import org.apache.wicket.Component;
import org.apache.wicket.PageParameters;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.eclipse.jgit.lib.Constants;
import org.eclipse.jgit.lib.Repository;
import org.eclipse.jgit.revwalk.RevCommit;
import com.gitblit.StoredSettings;
import com.gitblit.GitBlit;
import com.gitblit.Keys;
import com.gitblit.utils.JGitUtils;
import com.gitblit.wicket.LinkPanel;
import com.gitblit.wicket.RepositoryPage;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.panels.CommitHeaderPanel;
import com.gitblit.wicket.panels.PathBreadcrumbsPanel;
public class BlobPage extends RepositoryPage {
   public BlobPage(PageParameters params) {
      super(params, "view");
      super(params);
      final String blobPath = params.getString("f", null);
      final String blobPath = WicketUtils.getPath(params);
      Repository r = getRepository();
      RevCommit commit = JGitUtils.getCommit(r, commitId);
      // blob 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));
      String extension = null;
      if (blobPath.lastIndexOf('.') > -1) {
         extension = blobPath.substring(blobPath.lastIndexOf('.') + 1);
         extension = blobPath.substring(blobPath.lastIndexOf('.') + 1).toLowerCase();
      }
      // see if we should redirect to the markdown page
      for (String ext : GitBlit.self().settings().getStrings(Keys.web.markdownExtensions)) {
         if (ext.equals(extension)) {
            setResponsePage(MarkdownPage.class, params);
            return;
         }
      }
      // standard blob view
      Repository r = getRepository();
      RevCommit commit = getCommit();
      // blob page links
      add(new Label("blameLink", getString("gb.blame")));
      add(new BookmarkablePageLink<Void>("historyLink", HistoryPage.class, WicketUtils.newPathParameter(repositoryName, objectId, blobPath)));
      add(new BookmarkablePageLink<Void>("rawLink", RawPage.class, WicketUtils.newPathParameter(repositoryName, objectId, blobPath)));
      add(new BookmarkablePageLink<Void>("headLink", BlobPage.class, WicketUtils.newPathParameter(repositoryName, Constants.HEAD, blobPath)));
      add(new CommitHeaderPanel("commitHeader", repositoryName, commit));
      add(new PathBreadcrumbsPanel("breadcrumbs", repositoryName, blobPath, objectId));
      // Map the extensions to types
      Map<String, Integer> map = new HashMap<String, Integer>();
      for (String ext : StoredSettings.getStrings("prettyPrintExtensions")) {
      for (String ext : GitBlit.self().settings().getStrings(Keys.web.prettyPrintExtensions)) {
         map.put(ext.toLowerCase(), 1);
      }
      for (String ext : StoredSettings.getStrings("imageExtensions")) {
      for (String ext : GitBlit.self().settings().getStrings(Keys.web.imageExtensions)) {
         map.put(ext.toLowerCase(), 2);
      }
      for (String ext : StoredSettings.getStrings("binaryExtensions")) {
      for (String ext : GitBlit.self().settings().getStrings(Keys.web.binaryExtensions)) {
         map.put(ext.toLowerCase(), 3);
      }
@@ -84,11 +97,10 @@
         WicketUtils.setCssClass(blobLabel, "plainprint");
         add(blobLabel);
      }
   }
      // close repository
      r.close();
      // footer
      addFooter();
   @Override
   protected String getPageName() {
      return getString("gb.view");
   }
}