James Moger
2011-04-23 f5d0ad7e706f1743b01dcc71f42112d533de89c2
commit | author | age
5fe7df 1 package com.gitblit.wicket.panels;
JM 2
3 import java.util.ArrayList;
4 import java.util.Collections;
5 import java.util.List;
6 import java.util.Map;
7
8 import org.apache.wicket.Component;
9 import org.apache.wicket.markup.html.panel.Panel;
10 import org.apache.wicket.markup.repeater.Item;
11 import org.apache.wicket.markup.repeater.data.DataView;
12 import org.apache.wicket.markup.repeater.data.ListDataProvider;
13 import org.eclipse.jgit.lib.Constants;
14 import org.eclipse.jgit.lib.ObjectId;
15 import org.eclipse.jgit.revwalk.RevCommit;
16
7d35e2 17 import com.gitblit.wicket.LinkPanel;
5fe7df 18 import com.gitblit.wicket.WicketUtils;
bc10f9 19 import com.gitblit.wicket.pages.CommitPage;
7d35e2 20 import com.gitblit.wicket.pages.LogPage;
JM 21 import com.gitblit.wicket.pages.TagPage;
5fe7df 22
JM 23 public class RefsPanel extends Panel {
24
25     private static final long serialVersionUID = 1L;
26
7d35e2 27     public RefsPanel(String id, final String repositoryName, RevCommit c, Map<ObjectId, List<String>> refs) {
5fe7df 28         super(id);
JM 29         List<String> refNames = refs.get(c.getId());
30         if (refNames == null) {
31             refNames = new ArrayList<String>();
32         }
33         Collections.sort(refNames);
155bf7 34         // refNames.remove(Constants.HEAD);
JM 35
5fe7df 36         ListDataProvider<String> refsDp = new ListDataProvider<String>(refNames);
JM 37         DataView<String> refsView = new DataView<String>("ref", refsDp) {
38             private static final long serialVersionUID = 1L;
155bf7 39
5fe7df 40             public void populateItem(final Item<String> item) {
JM 41                 String entry = item.getModelObject();
42                 Component c = null;
43                 if (entry.startsWith(Constants.R_HEADS)) {
44                     // local head
7d35e2 45                     c = new LinkPanel("refName", null, entry.substring(Constants.R_HEADS.length()), LogPage.class, WicketUtils.newObjectParameter(repositoryName, entry));
bc10f9 46                     WicketUtils.setCssClass(c, "headRef");
5fe7df 47                 } else if (entry.startsWith(Constants.R_REMOTES)) {
JM 48                     // remote head
7d35e2 49                     c = new LinkPanel("refName", null, entry.substring(Constants.R_REMOTES.length()), LogPage.class, WicketUtils.newObjectParameter(repositoryName, entry));
bc10f9 50                     WicketUtils.setCssClass(c, "remoteRef");
5fe7df 51                 } else if (entry.startsWith(Constants.R_TAGS)) {
JM 52                     // tag
7d35e2 53                     c = new LinkPanel("refName", null, entry.substring(Constants.R_TAGS.length()), TagPage.class, WicketUtils.newObjectParameter(repositoryName, entry));
bc10f9 54                     WicketUtils.setCssClass(c, "tagRef");
5fe7df 55                 } else {
JM 56                     // other
bc10f9 57                     c = new LinkPanel("refName", null, entry, CommitPage.class, WicketUtils.newObjectParameter(repositoryName, entry));
JM 58                     WicketUtils.setCssClass(c, "otherRef");
5fe7df 59                 }
JM 60                 WicketUtils.setHtmlTitle(c, entry);
61                 item.add(c);
62             }
63         };
64         add(refsView);
65     }
66 }