James Moger
2011-04-13 61b094152515532b42aa5e918f5405d82cde0440
src/com/gitblit/wicket/pages/TreePage.java
@@ -4,9 +4,12 @@
import org.apache.wicket.PageParameters;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.markup.html.panel.Fragment;
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 org.eclipse.jgit.revwalk.RevCommit;
@@ -17,32 +20,30 @@
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.models.PathModel;
import com.gitblit.wicket.panels.PathBreadcrumbsPanel;
import com.gitblit.wicket.panels.TreeLinksPanel;
public class TreePage extends RepositoryPage {
   public TreePage(PageParameters params) {
      super(params, "tree");
      super(params);
      final String basePath = params.getString("f", null);
      final String basePath = WicketUtils.getPath(params);
      Repository r = getRepository();
      RevCommit commit = JGitUtils.getCommit(r, commitId);
      RevCommit commit = JGitUtils.getCommit(r, objectId);
      List<PathModel> paths = JGitUtils.getFilesInPath(r, basePath, commit);
      // tree page links
      add(new Label("historyLink", "history"));
      add(new Label("headLink", "HEAD"));
      add(new Label("historyLink", getString("gb.history")));
      add(new BookmarkablePageLink<Void>("headLink", TreePage.class, WicketUtils.newPathParameter(repositoryName, Constants.HEAD, basePath)));
      add(new LinkPanel("shortlog", "title", commit.getShortMessage(), CommitPage.class, newCommitParameter()));
      // breadcrumbs
      if (basePath == null || basePath.trim().length() == 0) {
         add(new Label("breadcrumbs", "").setVisible(false));
      } else {
         add(new PathBreadcrumbsPanel("breadcrumbs", repositoryName, basePath, commitId));
         paths.add(0, PathModel.getParentPath(basePath, commitId));
      add(new PathBreadcrumbsPanel("breadcrumbs", repositoryName, basePath, objectId));
      if (basePath != null && basePath.trim().length() > 0) {
         paths.add(0, PathModel.getParentPath(basePath, objectId));
      }
      final ByteFormat byteFormat = new ByteFormat();
@@ -58,32 +59,43 @@
            item.add(new Label("pathPermissions", JGitUtils.getPermissionsFromMode(entry.mode)));
            if (entry.isParentPath) {
               // parent .. path
               item.add(new Label("pathSize", "").setVisible(false));
               item.add(new Label("pathSize", ""));
               item.add(new LinkPanel("pathName", null, entry.name, TreePage.class, newPathParameter(entry.path)));
               item.add(new Label("treeLinks", "").setVisible(false));
               item.add(new Label("pathLinks", ""));
            } else {
               if (entry.isTree()) {
                  // folder/tree link
                  item.add(new Label("pathSize", "-"));
                  item.add(new Label("pathSize", ""));
                  item.add(new LinkPanel("pathName", null, entry.name, TreePage.class, newPathParameter(entry.path)));
                  // links
                  Fragment links = new Fragment("pathLinks", "treeLinks", this);
                  links.add(new BookmarkablePageLink<Void>("tree", TreePage.class, WicketUtils.newPathParameter(repositoryName, entry.commitId, entry.path)));
                  links.add(new BookmarkablePageLink<Void>("history", TreePage.class).setEnabled(false));
                  item.add(links);
               } else {
                  // blob link
                  item.add(new Label("pathSize", byteFormat.format(entry.size)));
                  item.add(new LinkPanel("pathName", "list", entry.name, BlobPage.class, newPathParameter(entry.path)));
                  // links
                  Fragment links = new Fragment("pathLinks", "blobLinks", this);
                  links.add(new BookmarkablePageLink<Void>("view", BlobPage.class, WicketUtils.newPathParameter(repositoryName, entry.commitId, entry.path)));
                  links.add(new BookmarkablePageLink<Void>("raw", RawPage.class, WicketUtils.newPathParameter(repositoryName, entry.commitId, entry.path)));
                  links.add(new BookmarkablePageLink<Void>("blame", BlobPage.class).setEnabled(false));
                  links.add(new BookmarkablePageLink<Void>("history", BlobPage.class).setEnabled(false));
                  item.add(links);
               }
               item.add(new TreeLinksPanel("treeLinks", repositoryName, entry));
            }
            String clazz = counter % 2 == 0 ? "dark" : "light";
            WicketUtils.setCssClass(item, clazz);
            WicketUtils.setAlternatingBackground(item, counter);
            counter++;
         }
      };
      add(pathsView);
      // close repository
      r.close();
      // footer
      addFooter();
   }
   @Override
   protected String getPageName() {
      return getString("gb.tree");
   }
}