James Moger
2013-09-30 699e71e76b15081baf746c6ce9c9144f7e5f1ff9
src/main/java/com/gitblit/wicket/panels/RefsPanel.java
@@ -15,6 +15,7 @@
 */
package com.gitblit.wicket.panels;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
@@ -28,11 +29,12 @@
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.ObjectId;
import org.eclipse.jgit.revwalk.RevCommit;
import com.gitblit.Constants;
import com.gitblit.models.RefModel;
import com.gitblit.utils.StringUtils;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.pages.CommitPage;
import com.gitblit.wicket.pages.LogPage;
@@ -41,10 +43,6 @@
public class RefsPanel extends Panel {
   private static final long serialVersionUID = 1L;
   private static final String R_CHANGES = "refs/changes/";
   private static final String R_PULL= "refs/pull/";
   public RefsPanel(String id, final String repositoryName, RevCommit c,
         Map<ObjectId, List<RefModel>> refs) {
@@ -67,7 +65,7 @@
            boolean remote2 = o2.displayName.startsWith(Constants.R_REMOTES);
            if (remote1 && remote2) {
               // both are remote heads, sort by name
               return o1.displayName.compareTo(o2.displayName);
               return o1.displayName.compareTo(o2.displayName);
            }
            if (remote1) {
               // o1 is remote, o2 comes first
@@ -81,7 +79,7 @@
            return o1.displayName.compareTo(o2.displayName);
         }
      });
      // count remote and determine if we should insert a break
      int remoteCount = 0;
      for (RefModel ref : refs) {
@@ -90,12 +88,13 @@
         }
      }
      final boolean shouldBreak = remoteCount < refs.size();
      ListDataProvider<RefModel> refsDp = new ListDataProvider<RefModel>(refs);
      DataView<RefModel> refsView = new DataView<RefModel>("ref", refsDp) {
         private static final long serialVersionUID = 1L;
         private boolean alreadyInsertedBreak = !shouldBreak;
         @Override
         public void populateItem(final Item<RefModel> item) {
            RefModel entry = item.getModelObject();
            String name = entry.displayName;
@@ -103,6 +102,7 @@
            boolean breakLine = false;
            Class<? extends WebPage> linkClass = CommitPage.class;
            String cssClass = "";
            String tooltip = "";
            if (name.startsWith(Constants.R_HEADS)) {
               // local branch
               linkClass = LogPage.class;
@@ -112,15 +112,19 @@
               // local head
               linkClass = LogPage.class;
               cssClass = "headRef";
            } else if (name.startsWith(R_CHANGES)) {
            } else if (name.startsWith(Constants.R_CHANGES)) {
               // Gerrit change ref
               name = name.substring(R_CHANGES.length());
               name = name.substring(Constants.R_CHANGES.length());
               // strip leading nn/ from nn/#####nn/ps = #####nn-ps
               name = name.substring(name.indexOf('/') + 1).replace('/', '-');
               String [] values = name.split("-");
               tooltip = MessageFormat.format(getString("gb.reviewPatchset"), values[0], values[1]);
               cssClass = "otherRef";
            } else if (name.startsWith(R_PULL)) {
            } else if (name.startsWith(Constants.R_PULL)) {
               // Pull Request ref
               name = "pull #" + name.substring(R_PULL.length());
               name = "pull #" + name.substring(Constants.R_PULL.length());
               if (name.endsWith("/head")) {
                  // strip pull request head from name
                  // strip pull request head from name
                  name = name.substring(0, name.length() - "/head".length());
               }
               cssClass = "pullRef";
@@ -158,7 +162,11 @@
            Component c = new LinkPanel("refName", null, name, linkClass,
                  WicketUtils.newObjectParameter(repositoryName, objectid));
            WicketUtils.setCssClass(c, cssClass);
            WicketUtils.setHtmlTooltip(c, name);
            if (StringUtils.isEmpty(tooltip)) {
               WicketUtils.setHtmlTooltip(c, name);
            } else {
               WicketUtils.setHtmlTooltip(c, tooltip);
            }
            item.add(c);
            Label lb = new Label("lineBreak", "<br/>");
            lb.setVisible(breakLine);