James Moger
2012-02-25 a45caac4769a1cd8337c45a1279d130db8c0e539
Split refs into 2 lines if there are remotes. Use more glyphicons.
18 files modified
135 ■■■■ changed files
src/com/gitblit/Constants.java 4 ●●●● patch | view | raw | blame | history
src/com/gitblit/utils/StringUtils.java 10 ●●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/WicketUtils.java 13 ●●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/pages/DocsPage.html 2 ●●● patch | view | raw | blame | history
src/com/gitblit/wicket/pages/SummaryPage.html 2 ●●● patch | view | raw | blame | history
src/com/gitblit/wicket/panels/ActivityPanel.html 2 ●●● patch | view | raw | blame | history
src/com/gitblit/wicket/panels/ActivityPanel.java 7 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/panels/BranchesPanel.html 2 ●●● patch | view | raw | blame | history
src/com/gitblit/wicket/panels/BranchesPanel.java 7 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/panels/HistoryPanel.java 7 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/panels/LogPanel.html 4 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/panels/LogPanel.java 12 ●●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/panels/RefsPanel.html 2 ●●● patch | view | raw | blame | history
src/com/gitblit/wicket/panels/RefsPanel.java 42 ●●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/panels/SearchPanel.java 7 ●●●● patch | view | raw | blame | history
src/com/gitblit/wicket/panels/TagsPanel.html 2 ●●● patch | view | raw | blame | history
src/com/gitblit/wicket/panels/TagsPanel.java 8 ●●●●● patch | view | raw | blame | history
tests/com/gitblit/tests/StringUtilsTest.java 2 ●●● patch | view | raw | blame | history
src/com/gitblit/Constants.java
@@ -65,6 +65,10 @@
    
    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;
    }
src/com/gitblit/utils/StringUtils.java
@@ -169,16 +169,6 @@
    }
    /**
     * 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.
     * 
src/com/gitblit/wicket/WicketUtils.java
@@ -220,6 +220,19 @@
        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);
    }
src/com/gitblit/wicket/pages/DocsPage.html
@@ -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">
src/com/gitblit/wicket/pages/SummaryPage.html
@@ -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;">
src/com/gitblit/wicket/panels/ActivityPanel.html
@@ -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>    
src/com/gitblit/wicket/panels/ActivityPanel.java
@@ -113,7 +113,12 @@
                        // 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);
src/com/gitblit/wicket/panels/BranchesPanel.html
@@ -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>
src/com/gitblit/wicket/panels/BranchesPanel.java
@@ -41,7 +41,6 @@
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 @@
                    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 @@
                // 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()));
src/com/gitblit/wicket/panels/HistoryPanel.java
@@ -121,7 +121,12 @@
                }
                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()));
src/com/gitblit/wicket/panels/LogPanel.html
@@ -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>
src/com/gitblit/wicket/panels/LogPanel.java
@@ -40,7 +40,6 @@
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 @@
        // 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 @@
                // 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()));
src/com/gitblit/wicket/panels/RefsPanel.html
@@ -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>
src/com/gitblit/wicket/panels/RefsPanel.java
@@ -22,6 +22,7 @@
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 @@
        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 @@
                    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 @@
                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);
src/com/gitblit/wicket/panels/SearchPanel.java
@@ -105,7 +105,12 @@
                }
                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()));
src/com/gitblit/wicket/panels/TagsPanel.html
@@ -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">
src/com/gitblit/wicket/panels/TagsPanel.java
@@ -36,7 +36,6 @@
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 @@
                    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 @@
                                .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
tests/com/gitblit/tests/StringUtilsTest.java
@@ -76,7 +76,7 @@
    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()));
    }