James Moger
2011-04-18 7203a415392b5372c0866991f1c2810eb5e3527a
src/com/gitblit/wicket/panels/PathBreadcrumbsPanel.java
@@ -4,7 +4,6 @@
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.html.panel.Panel;
import org.apache.wicket.markup.repeater.Item;
@@ -12,8 +11,8 @@
import org.apache.wicket.markup.repeater.data.ListDataProvider;
import com.gitblit.wicket.LinkPanel;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.pages.TreePage;
public class PathBreadcrumbsPanel extends Panel {
@@ -21,19 +20,21 @@
   private final String ROOT = "--ROOT--";
   public PathBreadcrumbsPanel(String id, final String repositoryName, String pathName, final String commitId) {
   public PathBreadcrumbsPanel(String id, final String repositoryName, String pathName, final String objectId) {
      super(id);
      List<BreadCrumb> crumbs = new ArrayList<BreadCrumb>();
      crumbs.add(new BreadCrumb("[" + repositoryName + "]", ROOT, false));
      String[] paths = pathName.split("/");
      StringBuilder sb = new StringBuilder();
      for (int i = 0; i < paths.length; i++) {
         String path = paths[i];
         sb.append(path);
         crumbs.add(new BreadCrumb(path, sb.toString(), (i == (paths.length - 1))));
         sb.append("/");
      if (pathName != null && pathName.length() > 0) {
         String[] paths = pathName.split("/");
         StringBuilder sb = new StringBuilder();
         for (int i = 0; i < paths.length; i++) {
            String path = paths[i];
            sb.append(path);
            crumbs.add(new BreadCrumb(path, sb.toString(), (i == (paths.length - 1))));
            sb.append("/");
         }
      }
      ListDataProvider<BreadCrumb> crumbsDp = new ListDataProvider<BreadCrumb>(crumbs);
@@ -43,26 +44,26 @@
         public void populateItem(final Item<BreadCrumb> item) {
            final BreadCrumb entry = item.getModelObject();
            String path = entry.getPath();
            String parameters = "p=" + repositoryName + ",h=" + commitId;
            if (path != null) {
               parameters += ",f=" + path;
            if (entry.isLeaf) {
               item.add(new Label("pathLink", entry.name));
               item.add(new Label("pathSeparator", "").setVisible(false));
            } else {
               item.add(new LinkPanel("pathLink", null, entry.name, TreePage.class, WicketUtils.newPathParameter(repositoryName, objectId, path)));
               item.add(new Label("pathSeparator", "/"));
            }
            item.add(new LinkPanel("pathLink", null, entry.name, TreePage.class, new PageParameters(parameters)));
            item.add(new Label("pathSeparator", entry.isLeaf ? "":"/"));
         }
      };
      add(pathsView);
   }
   private class BreadCrumb implements Serializable {
      private static final long serialVersionUID = 1L;
      final String name;
      final String path;
      final boolean isLeaf;
      BreadCrumb(String name, String path, boolean isLeaf) {
         this.name = name;
         this.path = path;