James Moger
2015-03-07 5d59b9ba3206894198a24807690fba00844c98f7
Add links to commit diff and blob diff pages to toggle whitespace setting
8 files modified
71 ■■■■ changed files
src/main/java/com/gitblit/utils/DiffUtils.java 20 ●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/wicket/GitBlitWebApp.properties 4 ●●● patch | view | raw | blame | history
src/main/java/com/gitblit/wicket/WicketUtils.java 25 ●●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/wicket/pages/BlobDiffPage.html 2 ●●● patch | view | raw | blame | history
src/main/java/com/gitblit/wicket/pages/BlobDiffPage.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/wicket/pages/CommitDiffPage.html 2 ●●● patch | view | raw | blame | history
src/main/java/com/gitblit/wicket/pages/CommitDiffPage.java 9 ●●●●● patch | view | raw | blame | history
src/test/java/com/gitblit/tests/DiffUtilsTest.java 6 ●●●● patch | view | raw | blame | history
src/main/java/com/gitblit/utils/DiffUtils.java
@@ -92,16 +92,24 @@
     * Enumeration for the diff comparator types.
     */
    public static enum DiffComparator {
        DEFAULT(RawTextComparator.DEFAULT),
        WS_IGNORE_ALL(RawTextComparator.WS_IGNORE_ALL),
        WS_IGNORE_LEADING(RawTextComparator.WS_IGNORE_LEADING),
        WS_IGNORE_TRAILING(RawTextComparator.WS_IGNORE_TRAILING),
        WS_IGNORE_CHANGE(RawTextComparator.WS_IGNORE_CHANGE);
        SHOW_WHITESPACE(RawTextComparator.DEFAULT),
        IGNORE_WHITESPACE(RawTextComparator.WS_IGNORE_ALL),
        IGNORE_LEADING(RawTextComparator.WS_IGNORE_LEADING),
        IGNORE_TRAILING(RawTextComparator.WS_IGNORE_TRAILING),
        IGNORE_CHANGES(RawTextComparator.WS_IGNORE_CHANGE);
        public final RawTextComparator textComparator;
        DiffComparator(RawTextComparator textComparator) {
            this.textComparator = textComparator;
        }
        public DiffComparator getOpposite() {
            return this == SHOW_WHITESPACE ? IGNORE_WHITESPACE : SHOW_WHITESPACE;
        }
        public String getTranslationKey() {
            return "gb." + name().toLowerCase();
        }
        public static DiffComparator forName(String name) {
@@ -371,7 +379,7 @@
                break;
            }
            df.setRepository(repository);
            df.setDiffComparator((comparator == null ? DiffComparator.DEFAULT : comparator).textComparator);
            df.setDiffComparator((comparator == null ? DiffComparator.SHOW_WHITESPACE : comparator).textComparator);
            df.setDetectRenames(true);
            RevTree commitTree = commit.getTree();
src/main/java/com/gitblit/wicket/GitBlitWebApp.properties
@@ -761,4 +761,6 @@
gb.blinkComparator = Blink comparator
gb.imgdiffSubtract = Subtract (black = identical)
gb.deleteRepositoryHeader = Delete Repository
gb.deleteRepositoryDescription = Deleted repositories will be unrecoverable.
gb.deleteRepositoryDescription = Deleted repositories will be unrecoverable.
gb.show_whitespace = show whitespace
gb.ignore_whitespace = ignore whitespace
src/main/java/com/gitblit/wicket/WicketUtils.java
@@ -331,6 +331,31 @@
        return new PageParameters(parameterMap);
    }
    public static PageParameters newDiffParameter(String repositoryName,
            String objectId, DiffComparator diffComparator) {
        Map<String, String> parameterMap = new HashMap<String, String>();
        if (StringUtils.isEmpty(objectId)) {
            return newRepositoryParameter(repositoryName);
        }
        parameterMap.put("r", repositoryName);
        parameterMap.put("h", objectId);
        parameterMap.put("w", "" + diffComparator.ordinal());
        return new PageParameters(parameterMap);
    }
    public static PageParameters newDiffParameter(String repositoryName,
            String objectId, DiffComparator diffComparator, String blobPath) {
        Map<String, String> parameterMap = new HashMap<String, String>();
        if (StringUtils.isEmpty(objectId)) {
            return newRepositoryParameter(repositoryName);
        }
        parameterMap.put("r", repositoryName);
        parameterMap.put("h", objectId);
        parameterMap.put("w", "" + diffComparator.ordinal());
        parameterMap.put("f", blobPath);
        return new PageParameters(parameterMap);
    }
    public static PageParameters newRangeParameter(String repositoryName,
            String startRange, String endRange) {
        Map<String, String> parameterMap = new HashMap<String, String>();
src/main/java/com/gitblit/wicket/pages/BlobDiffPage.html
@@ -9,7 +9,7 @@
    
    <!-- blob nav links -->    
    <div class="page_nav2">
        <a wicket:id="blameLink"><wicket:message key="gb.blame"></wicket:message></a> | <a wicket:id="historyLink"><wicket:message key="gb.history"></wicket:message></a> | <a wicket:id="patchLink"><wicket:message key="gb.patch"></wicket:message></a> | <a wicket:id="commitLink"><wicket:message key="gb.commit"></wicket:message></a> | <a wicket:id="commitDiffLink"><wicket:message key="gb.commitdiff"></wicket:message></a>
        <a wicket:id="blameLink"><wicket:message key="gb.blame"></wicket:message></a> | <a wicket:id="historyLink"><wicket:message key="gb.history"></wicket:message></a> | <a wicket:id="patchLink"><wicket:message key="gb.patch"></wicket:message></a> | <a wicket:id="commitLink"><wicket:message key="gb.commit"></wicket:message></a> | <a wicket:id="commitDiffLink"><wicket:message key="gb.commitdiff"></wicket:message></a> | <a wicket:id="whitespaceLink"></a>
    </div>    
    
    <!-- commit header -->
src/main/java/com/gitblit/wicket/pages/BlobDiffPage.java
@@ -33,6 +33,7 @@
import com.gitblit.wicket.CacheControl.LastModified;
import com.gitblit.wicket.WicketUtils;
import com.gitblit.wicket.panels.CommitHeaderPanel;
import com.gitblit.wicket.panels.LinkPanel;
import com.gitblit.wicket.panels.PathBreadcrumbsPanel;
@CacheControl(LastModified.BOOT)
@@ -80,6 +81,8 @@
                WicketUtils.newObjectParameter(repositoryName, objectId)));
        add(new BookmarkablePageLink<Void>("commitDiffLink", CommitDiffPage.class,
                WicketUtils.newObjectParameter(repositoryName, objectId)));
        add(new LinkPanel("whitespaceLink", null, getString(diffComparator.getOpposite().getTranslationKey()),
                BlobDiffPage.class, WicketUtils.newDiffParameter(repositoryName, objectId, diffComparator.getOpposite(), blobPath)));
        // diff page links
        add(new BookmarkablePageLink<Void>("blameLink", BlamePage.class,
src/main/java/com/gitblit/wicket/pages/CommitDiffPage.html
@@ -9,7 +9,7 @@
    <!-- commitdiff nav links -->    
    <div class="page_nav2">
        <wicket:message key="gb.parent"></wicket:message>: <span wicket:id="parentLink">[parent link]</span> | <a wicket:id="patchLink"><wicket:message key="gb.patch"></wicket:message></a> | <a wicket:id="commitLink"><wicket:message key="gb.commit"></wicket:message></a>
        <wicket:message key="gb.parent"></wicket:message>: <span wicket:id="parentLink">[parent link]</span> | <a wicket:id="patchLink"><wicket:message key="gb.patch"></wicket:message></a> | <a wicket:id="commitLink"><wicket:message key="gb.commit"></wicket:message></a> | <a wicket:id="whitespaceLink"></a>
    </div>    
    
    <!-- commit header -->
src/main/java/com/gitblit/wicket/pages/CommitDiffPage.java
@@ -57,9 +57,9 @@
    public CommitDiffPage(PageParameters params) {
        super(params);
        Repository r = getRepository();
        RevCommit commit = getCommit();
        final Repository r = getRepository();
        final RevCommit commit = getCommit();
        final DiffComparator diffComparator = WicketUtils.getDiffComparator(params);
        List<String> parents = new ArrayList<String>();
        if (commit.getParentCount() > 0) {
@@ -79,6 +79,8 @@
                WicketUtils.newObjectParameter(repositoryName, objectId)));
        add(new BookmarkablePageLink<Void>("commitLink", CommitPage.class,
                WicketUtils.newObjectParameter(repositoryName, objectId)));
        add(new LinkPanel("whitespaceLink", null, getString(diffComparator.getOpposite().getTranslationKey()),
                CommitDiffPage.class, WicketUtils.newDiffParameter(repositoryName, objectId, diffComparator.getOpposite())));
        add(new CommitHeaderPanel("commitHeader", repositoryName, commit));
@@ -86,7 +88,6 @@
        final ImageDiffHandler handler = new ImageDiffHandler(this, repositoryName,
                parents.isEmpty() ? null : parents.get(0), commit.getName(), imageExtensions);
        final DiffComparator diffComparator = WicketUtils.getDiffComparator(params);
        final DiffOutput diff = DiffUtils.getCommitDiff(r, commit, diffComparator, DiffOutputType.HTML, handler);
        if (handler.getImgDiffCount() > 0) {
            addBottomScript("scripts/imgdiff.js"); // Tiny support script for image diffs
src/test/java/com/gitblit/tests/DiffUtilsTest.java
@@ -41,7 +41,7 @@
        Repository repository = GitBlitSuite.getHelloworldRepository();
        RevCommit commit = JGitUtils.getCommit(repository,
                "1d0c2933a4ae69c362f76797d42d6bd182d05176");
        String diff = DiffUtils.getCommitDiff(repository, commit, DiffComparator.DEFAULT, DiffOutputType.PLAIN).content;
        String diff = DiffUtils.getCommitDiff(repository, commit, DiffComparator.SHOW_WHITESPACE, DiffOutputType.PLAIN).content;
        repository.close();
        assertTrue(diff != null && diff.length() > 0);
        String expected = "-        system.out.println(\"Hello World\");\n+        System.out.println(\"Hello World\"";
@@ -55,7 +55,7 @@
                "8baf6a833b5579384d9b9ceb8a16b5d0ea2ec4ca");
        RevCommit commit = JGitUtils.getCommit(repository,
                "1d0c2933a4ae69c362f76797d42d6bd182d05176");
        String diff = DiffUtils.getDiff(repository, baseCommit, commit, DiffComparator.DEFAULT, DiffOutputType.PLAIN).content;
        String diff = DiffUtils.getDiff(repository, baseCommit, commit, DiffComparator.SHOW_WHITESPACE, DiffOutputType.PLAIN).content;
        repository.close();
        assertTrue(diff != null && diff.length() > 0);
        String expected = "-        system.out.println(\"Hello World\");\n+        System.out.println(\"Hello World\"";
@@ -67,7 +67,7 @@
        Repository repository = GitBlitSuite.getHelloworldRepository();
        RevCommit commit = JGitUtils.getCommit(repository,
                "1d0c2933a4ae69c362f76797d42d6bd182d05176");
        String diff = DiffUtils.getDiff(repository, commit, "java.java", DiffComparator.DEFAULT, DiffOutputType.PLAIN).content;
        String diff = DiffUtils.getDiff(repository, commit, "java.java", DiffComparator.SHOW_WHITESPACE, DiffOutputType.PLAIN).content;
        repository.close();
        assertTrue(diff != null && diff.length() > 0);
        String expected = "-        system.out.println(\"Hello World\");\n+        System.out.println(\"Hello World\"";