in app/src/main/java/com/google/reviewit/widget/UnifiedDiffView.java [350:464]
private void addSkippedRow(
int a, int b, List<String> skippedLines, boolean isFirst,
boolean isLast) {
final TableRow tr = new TableRow(getContext());
tr.setLayoutParams(matchAndWrapTableRowLayout());
tr.setTag(R.id.UNIFIED_DIFF_A, a);
tr.setTag(R.id.UNIFIED_DIFF_B, b);
tr.setTag(R.id.UNIFIED_DIFF_LINES, skippedLines);
final LinearLayout l = new LinearLayout(getContext());
l.setOrientation(HORIZONTAL);
TableRow.LayoutParams params = matchAndWrapTableRowLayout();
params.span = 4;
l.setLayoutParams(params);
l.setBackgroundColor(widgetUtil.color(R.color.lineSkipped));
LinearLayout spacerLeft = new LinearLayout(getContext());
params = wrapTableRowLayout();
params.weight = 1;
spacerLeft.setLayoutParams(params);
l.addView(spacerLeft);
final Button expandBeforeButton = createHyperlinkButton(
getContext().getString(R.string.expand_before, CONTEXT_LINES));
final Button expandAllButton = createHyperlinkButton(
getContext().getString(
R.string.skipped_common_lines, skippedLines.size()));
final Button expandAfterButton = createHyperlinkButton(
getContext().getString(R.string.expand_after, CONTEXT_LINES));
if (!isFirst && skippedLines.size() > 2 * CONTEXT_LINES) {
expandBeforeButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int row = indexOfChild(tr);
int a = (int) tr.getTag(R.id.UNIFIED_DIFF_A);
int b = (int) tr.getTag(R.id.UNIFIED_DIFF_B);
List<String> lines =
(List<String>) tr.getTag(R.id.UNIFIED_DIFF_LINES);
List<String> linesToShow = lines.subList(0, CONTEXT_LINES);
List<String> skippedLines =
lines.subList(CONTEXT_LINES, lines.size());
addUnchangedLines(a, b, linesToShow, row);
tr.setTag(R.id.UNIFIED_DIFF_A, a + CONTEXT_LINES);
tr.setTag(R.id.UNIFIED_DIFF_B, b + CONTEXT_LINES);
tr.setTag(R.id.UNIFIED_DIFF_LINES, skippedLines);
expandAllButton.setText(getContext()
.getString(R.string.skipped_common_lines, skippedLines.size()));
if (skippedLines.size() <= 2 * CONTEXT_LINES) {
l.removeView(expandBeforeButton);
l.removeView(expandAfterButton);
}
if (onSizeChangedListener != null) {
onSizeChangedListener.onSizeChanged();
}
}
});
l.addView(expandBeforeButton);
}
expandAllButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int row = indexOfChild(tr);
int a = (int) tr.getTag(R.id.UNIFIED_DIFF_A);
int b = (int) tr.getTag(R.id.UNIFIED_DIFF_B);
List<String> lines = (List<String>) tr.getTag(R.id.UNIFIED_DIFF_LINES);
removeView(tr);
addUnchangedLines(a, b, lines, row);
if (onSizeChangedListener != null) {
onSizeChangedListener.onSizeChanged();
}
}
});
l.addView(expandAllButton);
if (!isLast && skippedLines.size() > 2 * CONTEXT_LINES) {
expandAfterButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int row = indexOfChild(tr);
int a = (int) tr.getTag(R.id.UNIFIED_DIFF_A);
int b = (int) tr.getTag(R.id.UNIFIED_DIFF_B);
List<String> lines =
(List<String>) tr.getTag(R.id.UNIFIED_DIFF_LINES);
int skip = lines.size() - CONTEXT_LINES;
List<String> linesToShow = lines.subList(skip, lines.size());
List<String> skippedLines = lines.subList(0, skip);
addUnchangedLines(a + skip, b + skip, linesToShow, row + 1);
tr.setTag(R.id.UNIFIED_DIFF_LINES, skippedLines);
expandAllButton.setText(getContext()
.getString(R.string.skipped_common_lines, skippedLines.size()));
if (skippedLines.size() <= 2 * CONTEXT_LINES) {
l.removeView(expandBeforeButton);
l.removeView(expandAfterButton);
}
if (onSizeChangedListener != null) {
onSizeChangedListener.onSizeChanged();
}
}
});
l.addView(expandAfterButton);
}
LinearLayout spacerRight = new LinearLayout(getContext());
params = wrapTableRowLayout();
params.weight = 1;
spacerRight.setLayoutParams(params);
l.addView(spacerRight);
tr.addView(l);
addView(tr, matchAndWrapTableLayout());
}