Search in sources :

Example 1 with Region

use of com.google.gerrit.client.diff.DiffInfo.Region in project gerrit by GerritCodeReview.

the class UnifiedChunkManager method render.

@Override
void render(DiffInfo diff) {
    super.render();
    chunks = new ArrayList<>();
    int cmLine = 0;
    boolean useIntralineBg = diff.metaA() == null || diff.metaB() == null;
    for (Region current : Natives.asList(diff.content())) {
        int origLineA = lineMapper.getLineA();
        int origLineB = lineMapper.getLineB();
        if (current.ab() != null) {
            int length = current.ab().length();
            lineMapper.appendCommon(length);
            for (int i = 0; i < length; i++) {
                host.setLineNumber(DisplaySide.A, cmLine + i, origLineA + i + 1);
                host.setLineNumber(DisplaySide.B, cmLine + i, origLineB + i + 1);
            }
            cmLine += length;
        } else if (current.skip() > 0) {
            lineMapper.appendCommon(current.skip());
            // Maybe current.ab().length();
            cmLine += current.skip();
        } else if (current.common()) {
            lineMapper.appendCommon(current.b().length());
            cmLine += current.b().length();
        } else {
            cmLine += render(current, cmLine, useIntralineBg);
        }
    }
    host.setLineNumber(DisplaySide.A, cmLine, lineMapper.getLineA() + 1);
    host.setLineNumber(DisplaySide.B, cmLine, lineMapper.getLineB() + 1);
}
Also used : Region(com.google.gerrit.client.diff.DiffInfo.Region)

Example 2 with Region

use of com.google.gerrit.client.diff.DiffInfo.Region in project gerrit by GerritCodeReview.

the class SkipManager method render.

void render(int context, DiffInfo diff) {
    if (context == DiffPreferencesInfo.WHOLE_FILE_CONTEXT) {
        return;
    }
    List<SkippedLine> skips = new ArrayList<>();
    int lineA = 0;
    int lineB = 0;
    JsArray<Region> regions = diff.content();
    for (int i = 0; i < regions.length(); i++) {
        Region current = regions.get(i);
        if (current.ab() != null || current.common() || current.skip() > 0) {
            int len = current.skip() > 0 ? current.skip() : (current.ab() != null ? current.ab() : current.b()).length();
            if (i == 0 && len > context + 1) {
                skips.add(new SkippedLine(0, 0, len - context));
            } else if (i == regions.length() - 1 && len > context + 1) {
                skips.add(new SkippedLine(lineA + context, lineB + context, len - context));
            } else if (len > 2 * context + 1) {
                skips.add(new SkippedLine(lineA + context, lineB + context, len - 2 * context));
            }
            lineA += len;
            lineB += len;
        } else {
            lineA += current.a() != null ? current.a().length() : 0;
            lineB += current.b() != null ? current.b().length() : 0;
        }
    }
    skips = host.getCommentManager().splitSkips(context, skips);
    renderSkips(skips, lineA, lineB);
}
Also used : SkippedLine(com.google.gerrit.client.patches.SkippedLine) ArrayList(java.util.ArrayList) Region(com.google.gerrit.client.diff.DiffInfo.Region)

Example 3 with Region

use of com.google.gerrit.client.diff.DiffInfo.Region in project gerrit by GerritCodeReview.

the class SideBySideChunkManager method render.

@Override
void render(DiffInfo diff) {
    super.render();
    chunks = new ArrayList<>();
    padding = new ArrayList<>();
    paddingDivs = new ArrayList<>();
    String diffColor = diff.metaA() == null || diff.metaB() == null ? SideBySideTable.style.intralineBg() : SideBySideTable.style.diff();
    for (Region current : Natives.asList(diff.content())) {
        if (current.ab() != null) {
            lineMapper.appendCommon(current.ab().length());
        } else if (current.skip() > 0) {
            lineMapper.appendCommon(current.skip());
        } else if (current.common()) {
            lineMapper.appendCommon(current.b().length());
        } else {
            render(current, diffColor);
        }
    }
    if (paddingDivs.isEmpty()) {
        paddingDivs = null;
    }
}
Also used : Region(com.google.gerrit.client.diff.DiffInfo.Region) JsArrayString(com.google.gwt.core.client.JsArrayString)

Aggregations

Region (com.google.gerrit.client.diff.DiffInfo.Region)3 SkippedLine (com.google.gerrit.client.patches.SkippedLine)1 JsArrayString (com.google.gwt.core.client.JsArrayString)1 ArrayList (java.util.ArrayList)1