@@ -65,6 +65,10 @@ public class Constants { | |||
public static final String ENCODING = "UTF-8"; | |||
public static final int LEN_SHORTLOG = 80; | |||
public static final int LEN_SHORTLOG_REFS = 60; | |||
public static String getGitBlitVersion() { | |||
return NAME + " v" + VERSION; | |||
} |
@@ -168,16 +168,6 @@ public class StringUtils { | |||
return value.substring(0, max - 3) + "..."; | |||
} | |||
/** | |||
* Returns a trimmed shortlog message. | |||
* | |||
* @param string | |||
* @return trimmed shortlog message | |||
*/ | |||
public static String trimShortLog(String string) { | |||
return trimString(string, 60); | |||
} | |||
/** | |||
* Left pad a string with the specified character, if the string length is | |||
* less than the specified length. |
@@ -220,6 +220,19 @@ public class WicketUtils { | |||
return img; | |||
} | |||
public static Label newIcon(String wicketId, String css) { | |||
Label lbl = new Label(wicketId); | |||
setCssClass(lbl, css); | |||
return lbl; | |||
} | |||
public static Label newBlankIcon(String wicketId) { | |||
Label lbl = new Label(wicketId); | |||
setCssClass(lbl, ""); | |||
lbl.setRenderBodyOnly(true); | |||
return lbl; | |||
} | |||
public static ContextRelativeResource getResource(String file) { | |||
return new ContextRelativeResource(file); | |||
} |
@@ -8,7 +8,7 @@ | |||
<wicket:extend> | |||
<!-- header --> | |||
<div style="margin-top:5px;" class="header"><span wicket:id="header">[header]</span></div> | |||
<div style="margin-top:5px;" class="header"><i class="icon-book" style="vertical-align: middle;"></i> <b><span wicket:id="header">[header]</span></b></div> | |||
<!-- documents --> | |||
<table style="width:100%" class="pretty"> |
@@ -38,7 +38,7 @@ | |||
<wicket:fragment wicket:id="markdownPanel"> | |||
<div class="header" style="margin-top:10px;" > | |||
<img style="vertical-align: middle; border: 1px solid #888;" src="book_16x16.png"/> | |||
<i style="vertical-align: middle;" class="icon-book"></i> | |||
<span style="font-weight:bold;vertical-align:middle;" wicket:id="readmeFile"></span> | |||
</div> | |||
<div style="border:1px solid #ddd;border-radius: 0 0 3px 3px;padding: 20px;"> |
@@ -8,7 +8,7 @@ | |||
<wicket:panel> | |||
<div wicket:id="activity"> | |||
<div class="header"><span style="font-weight:bold;" wicket:id="title">[title]</span></div> | |||
<div class="header"><i class="icon-refresh" style="vertical-align: middle;"></i> <span style="font-weight:bold;" wicket:id="title">[title]</span></div> | |||
<table class="activity" wicket:id="commits"> | |||
<tr wicket:id="commit"></tr> | |||
</table> |
@@ -113,7 +113,12 @@ public class ActivityPanel extends BasePanel { | |||
// message/commit link | |||
String shortMessage = commit.getShortMessage(); | |||
String trimmedMessage = StringUtils.trimShortLog(shortMessage); | |||
String trimmedMessage = shortMessage; | |||
if (commit.getRefs() != null && commit.getRefs().size() > 0) { | |||
trimmedMessage = StringUtils.trimString(shortMessage, Constants.LEN_SHORTLOG_REFS); | |||
} else { | |||
trimmedMessage = StringUtils.trimString(shortMessage, Constants.LEN_SHORTLOG); | |||
} | |||
LinkPanel shortlog = new LinkPanel("message", "list subject", | |||
trimmedMessage, CommitPage.class, WicketUtils.newObjectParameter( | |||
commit.repository, commit.getName()), true); |
@@ -8,7 +8,7 @@ | |||
<wicket:panel> | |||
<!-- header --> | |||
<div class="header"><img style="vertical-align: middle;" src="commit_branch_16x16.png"></img><span wicket:id="branches">[branches header]</span></div> | |||
<div class="header"><i class="icon-random" style="vertical-align: middle;"></i> <b><span wicket:id="branches">[branches header]</span></b></div> | |||
<table class="pretty"> | |||
<tbody> |
@@ -41,7 +41,6 @@ import com.gitblit.wicket.pages.CommitPage; | |||
import com.gitblit.wicket.pages.LogPage; | |||
import com.gitblit.wicket.pages.MetricsPage; | |||
import com.gitblit.wicket.pages.SearchPage; | |||
import com.gitblit.wicket.pages.SummaryPage; | |||
import com.gitblit.wicket.pages.TreePage; | |||
public class BranchesPanel extends BasePanel { | |||
@@ -73,9 +72,7 @@ public class BranchesPanel extends BasePanel { | |||
null), BranchesPage.class, WicketUtils.newRepositoryParameter(model.name))); | |||
} else { | |||
// branches page | |||
// show repository summary page link | |||
add(new LinkPanel("branches", "title", model.name, SummaryPage.class, | |||
WicketUtils.newRepositoryParameter(model.name))); | |||
add(new Label("branches", new StringResourceModel("gb.branches", this, null))); | |||
} | |||
ListDataProvider<RefModel> branchesDp = new ListDataProvider<RefModel>(branches); | |||
@@ -101,7 +98,7 @@ public class BranchesPanel extends BasePanel { | |||
// short message | |||
String shortMessage = entry.getShortMessage(); | |||
String trimmedMessage = StringUtils.trimShortLog(shortMessage); | |||
String trimmedMessage = StringUtils.trimString(shortMessage, Constants.LEN_SHORTLOG); | |||
LinkPanel shortlog = new LinkPanel("branchLog", "list subject", trimmedMessage, | |||
CommitPage.class, WicketUtils.newObjectParameter(model.name, | |||
entry.getName())); |
@@ -121,7 +121,12 @@ public class HistoryPanel extends BasePanel { | |||
} | |||
String shortMessage = entry.getShortMessage(); | |||
String trimmedMessage = StringUtils.trimShortLog(shortMessage); | |||
String trimmedMessage = shortMessage; | |||
if (allRefs.containsKey(entry.getId())) { | |||
trimmedMessage = StringUtils.trimString(shortMessage, Constants.LEN_SHORTLOG_REFS); | |||
} else { | |||
trimmedMessage = StringUtils.trimString(shortMessage, Constants.LEN_SHORTLOG); | |||
} | |||
LinkPanel shortlog = new LinkPanel("commitShortMessage", "list subject", | |||
trimmedMessage, CommitPage.class, WicketUtils.newObjectParameter( | |||
repositoryName, entry.getName())); |
@@ -8,14 +8,14 @@ | |||
<wicket:panel> | |||
<!-- header --> | |||
<div class="header"><img style="vertical-align: middle;" src="commit_changes_16x16.png"></img><span wicket:id="header">[log header]</span></div> | |||
<div class="header"><i class="icon-refresh" style="vertical-align: middle;"></i> <b><span wicket:id="header">[log header]</span></b></div> | |||
<table class="pretty"> | |||
<tbody> | |||
<tr wicket:id="commit"> | |||
<td class="date"><span wicket:id="commitDate">[commit date]</span></td> | |||
<td class="author"><span wicket:id="commitAuthor">[commit author]</span></td> | |||
<td class="icon"><img wicket:id="commitIcon" /></td> | |||
<td><div class="references" wicket:id="commitRefs">[commit refs]</div><span wicket:id="commitShortMessage">[commit short message]</span></td> | |||
<td><div class="references" wicket:id="commitRefs">[commit refs]</div><div style="vertical-align:middle;" wicket:id="commitShortMessage">[commit short message]</div></td> | |||
<td class="rightAlign"> | |||
<span class="link"> | |||
<a wicket:id="view"><wicket:message key="gb.view"></wicket:message></a> | <a wicket:id="diff"><wicket:message key="gb.diff"></wicket:message></a> | <a wicket:id="tree"><wicket:message key="gb.tree"></wicket:message></a> |
@@ -40,7 +40,6 @@ import com.gitblit.wicket.pages.CommitDiffPage; | |||
import com.gitblit.wicket.pages.CommitPage; | |||
import com.gitblit.wicket.pages.LogPage; | |||
import com.gitblit.wicket.pages.SearchPage; | |||
import com.gitblit.wicket.pages.SummaryPage; | |||
import com.gitblit.wicket.pages.TreePage; | |||
public class LogPanel extends BasePanel { | |||
@@ -75,9 +74,7 @@ public class LogPanel extends BasePanel { | |||
// header | |||
if (pageResults) { | |||
// shortlog page | |||
// show repository summary page link | |||
add(new LinkPanel("header", "title", objectId, SummaryPage.class, | |||
WicketUtils.newRepositoryParameter(repositoryName))); | |||
add(new Label("header", objectId)); | |||
} else { | |||
// summary page | |||
// show shortlog page link | |||
@@ -113,7 +110,12 @@ public class LogPanel extends BasePanel { | |||
// short message | |||
String shortMessage = entry.getShortMessage(); | |||
String trimmedMessage = StringUtils.trimShortLog(shortMessage); | |||
String trimmedMessage = shortMessage; | |||
if (allRefs.containsKey(entry.getId())) { | |||
trimmedMessage = StringUtils.trimString(shortMessage, Constants.LEN_SHORTLOG_REFS); | |||
} else { | |||
trimmedMessage = StringUtils.trimString(shortMessage, Constants.LEN_SHORTLOG); | |||
} | |||
LinkPanel shortlog = new LinkPanel("commitShortMessage", "list subject", | |||
trimmedMessage, CommitPage.class, WicketUtils.newObjectParameter( | |||
repositoryName, entry.getName())); |
@@ -6,7 +6,7 @@ | |||
<wicket:panel> | |||
<span wicket:id="ref"> | |||
<span wicket:id="refName">ref</span> | |||
<span wicket:id="lineBreak">[LB]</span><span wicket:id="refName">ref</span> | |||
</span> | |||
</wicket:panel> | |||
</html> |
@@ -22,6 +22,7 @@ import java.util.List; | |||
import java.util.Map; | |||
import org.apache.wicket.Component; | |||
import org.apache.wicket.markup.html.basic.Label; | |||
import org.apache.wicket.markup.html.panel.Panel; | |||
import org.apache.wicket.markup.repeater.Item; | |||
import org.apache.wicket.markup.repeater.data.DataView; | |||
@@ -54,19 +55,48 @@ public class RefsPanel extends Panel { | |||
Collections.sort(refs, new Comparator<RefModel>() { | |||
@Override | |||
public int compare(RefModel o1, RefModel o2) { | |||
// sort remote heads last, otherwise sort by name | |||
// this is so we can insert a break on the refs panel | |||
// [head][branch][branch][tag][tag] | |||
// [remote][remote][remote] | |||
boolean remote1 = o1.displayName.startsWith(Constants.R_REMOTES); | |||
boolean remote2 = o2.displayName.startsWith(Constants.R_REMOTES); | |||
if (remote1 && remote2) { | |||
// both are remote heads, sort by name | |||
return o1.displayName.compareTo(o2.displayName); | |||
} | |||
if (remote1) { | |||
// o1 is remote, o2 comes first | |||
return 1; | |||
} | |||
if (remote2) { | |||
// remote is o2, o1 comes first | |||
return -1; | |||
} | |||
// standard sort | |||
return o1.displayName.compareTo(o2.displayName); | |||
} | |||
}); | |||
// count remote and determine if we should insert a break | |||
int remoteCount = 0; | |||
for (RefModel ref : refs) { | |||
if (ref.displayName.startsWith(Constants.R_REMOTES)) { | |||
remoteCount++; | |||
} | |||
} | |||
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; | |||
public void populateItem(final Item<RefModel> item) { | |||
RefModel entry = item.getModelObject(); | |||
String name = entry.displayName; | |||
String objectid = entry.getReferencedObjectId().getName(); | |||
boolean breakLine = false; | |||
Class<? extends RepositoryPage> linkClass = CommitPage.class; | |||
String cssClass = ""; | |||
if (name.startsWith(Constants.R_HEADS)) { | |||
@@ -83,6 +113,10 @@ public class RefsPanel extends Panel { | |||
linkClass = LogPage.class; | |||
name = name.substring(Constants.R_REMOTES.length()); | |||
cssClass = "remoteBranch"; | |||
if (!alreadyInsertedBreak) { | |||
breakLine = true; | |||
alreadyInsertedBreak = true; | |||
} | |||
} else if (name.startsWith(Constants.R_TAGS)) { | |||
// tag | |||
if (entry.isAnnotatedTag()) { | |||
@@ -104,6 +138,10 @@ public class RefsPanel extends Panel { | |||
WicketUtils.setCssClass(c, cssClass); | |||
WicketUtils.setHtmlTooltip(c, name); | |||
item.add(c); | |||
Label lb = new Label("lineBreak", "<br/>"); | |||
lb.setVisible(breakLine); | |||
lb.setRenderBodyOnly(true); | |||
item.add(lb.setEscapeModelStrings(false)); | |||
} | |||
}; | |||
add(refsView); |
@@ -105,7 +105,12 @@ public class SearchPanel extends BasePanel { | |||
} | |||
String shortMessage = entry.getShortMessage(); | |||
String trimmedMessage = StringUtils.trimShortLog(shortMessage); | |||
String trimmedMessage = shortMessage; | |||
if (allRefs.containsKey(entry.getId())) { | |||
trimmedMessage = StringUtils.trimString(shortMessage, Constants.LEN_SHORTLOG_REFS); | |||
} else { | |||
trimmedMessage = StringUtils.trimString(shortMessage, Constants.LEN_SHORTLOG); | |||
} | |||
LinkPanel shortlog = new LinkPanel("commitShortMessage", "list subject", | |||
trimmedMessage, CommitPage.class, WicketUtils.newObjectParameter( | |||
repositoryName, entry.getName())); |
@@ -8,7 +8,7 @@ | |||
<wicket:panel> | |||
<!-- tags --> | |||
<div class="header"><img style="vertical-align: middle;" src="tag_16x16.png"></img><span wicket:id="header">[tags header]</span></div> | |||
<div class="header"><i class="icon-tags" style="vertical-align: middle;"></i> <b><span wicket:id="header">[tags header]</span></b></div> | |||
<table class="pretty"> | |||
<tbody> | |||
<tr wicket:id="tag"> |
@@ -36,7 +36,6 @@ import com.gitblit.wicket.pages.CommitPage; | |||
import com.gitblit.wicket.pages.LogPage; | |||
import com.gitblit.wicket.pages.RawPage; | |||
import com.gitblit.wicket.pages.RepositoryPage; | |||
import com.gitblit.wicket.pages.SummaryPage; | |||
import com.gitblit.wicket.pages.TagPage; | |||
import com.gitblit.wicket.pages.TagsPage; | |||
import com.gitblit.wicket.pages.TreePage; | |||
@@ -59,9 +58,7 @@ public class TagsPanel extends BasePanel { | |||
TagsPage.class, WicketUtils.newRepositoryParameter(repositoryName))); | |||
} else { | |||
// tags page | |||
// show repository summary page link | |||
add(new LinkPanel("header", "title", repositoryName, SummaryPage.class, | |||
WicketUtils.newRepositoryParameter(repositoryName))); | |||
add(new Label("header", new StringResourceModel("gb.tags", this, null))); | |||
} | |||
ListDataProvider<RefModel> tagsDp = new ListDataProvider<RefModel>(tags); | |||
@@ -92,7 +89,8 @@ public class TagsPanel extends BasePanel { | |||
.getReferencedObjectId().getName()))); | |||
// workaround for RevTag returning a lengthy shortlog. :( | |||
String message = StringUtils.trimShortLog(entry.getShortMessage()); | |||
String message = StringUtils.trimString(entry.getShortMessage(), | |||
com.gitblit.Constants.LEN_SHORTLOG); | |||
if (linkClass.equals(BlobPage.class)) { | |||
// Blob Tag Object |
@@ -76,7 +76,7 @@ public class StringUtilsTest { | |||
public void testTrim() throws Exception { | |||
String input = "123456789 123456789 123456789 123456789 123456789 123456789 123456789 "; | |||
String output = "123456789 123456789 123456789 123456789 123456789 1234567..."; | |||
assertEquals(output, StringUtils.trimShortLog(input)); | |||
assertEquals(output, StringUtils.trimString(input, 60)); | |||
assertEquals(input, StringUtils.trimString(input, input.length())); | |||
} | |||