diff options
Diffstat (limited to 'gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide.java')
-rw-r--r-- | gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide.java | 163 |
1 files changed, 70 insertions, 93 deletions
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide.java index 1560597647..d052323037 100644 --- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide.java +++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide.java @@ -24,8 +24,10 @@ import com.google.gerrit.client.patches.PatchUtil; import com.google.gerrit.client.projects.ConfigInfoCache; import com.google.gerrit.client.rpc.ScreenLoadCallback; import com.google.gerrit.client.ui.InlineHyperlink; +import com.google.gerrit.common.Nullable; import com.google.gerrit.extensions.client.GeneralPreferencesInfo.DiffView; import com.google.gerrit.reviewdb.client.Patch; +import com.google.gerrit.reviewdb.client.Project; import com.google.gwt.core.client.GWT; import com.google.gwt.core.client.Scheduler; import com.google.gwt.core.client.Scheduler.ScheduledCommand; @@ -68,8 +70,13 @@ public class SideBySide extends DiffScreen { private SideBySideCommentManager commentManager; public SideBySide( - DiffObject base, DiffObject revision, String path, DisplaySide startSide, int startLine) { - super(base, revision, path, startSide, startLine, DiffView.SIDE_BY_SIDE); + @Nullable Project.NameKey project, + DiffObject base, + DiffObject revision, + String path, + DisplaySide startSide, + int startLine) { + super(project, base, revision, path, startSide, startLine, DiffView.SIDE_BY_SIDE); diffTable = new SideBySideTable(this, base, revision, path); add(uiBinder.createAndBindUi(this)); @@ -85,6 +92,7 @@ public class SideBySide extends DiffScreen { commentManager = new SideBySideCommentManager( SideBySide.this, + getProject(), base, revision, path, @@ -102,14 +110,11 @@ public class SideBySide extends DiffScreen { super.onShowView(); operation( - new Runnable() { - @Override - public void run() { - resizeCodeMirror(); - chunkManager.adjustPadding(); - cmA.refresh(); - cmB.refresh(); - } + () -> { + resizeCodeMirror(); + chunkManager.adjustPadding(); + cmA.refresh(); + cmB.refresh(); }); setLineLength(Patch.COMMIT_MSG.equals(path) ? 72 : prefs.lineLength()); diffTable.refresh(); @@ -141,7 +146,7 @@ public class SideBySide extends DiffScreen { } @Override - void registerCmEvents(final CodeMirror cm) { + void registerCmEvents(CodeMirror cm) { super.registerCmEvents(cm); KeyMap keyMap = @@ -183,8 +188,8 @@ public class SideBySide extends DiffScreen { }; } - private void display(final CommentsCollections comments) { - final DiffInfo diff = getDiff(); + private void display(CommentsCollections comments) { + DiffInfo diff = getDiff(); setThemeStyles(prefs.theme().isDark()); setShowIntraline(prefs.intralineDifference()); if (prefs.showLineNumbers()) { @@ -209,18 +214,15 @@ public class SideBySide extends DiffScreen { chunkManager = new SideBySideChunkManager(this, cmA, cmB, diffTable.scrollbar); operation( - new Runnable() { - @Override - public void run() { - // Estimate initial CodeMirror height, fixed up in onShowView. - int height = Window.getClientHeight() - (Gerrit.getHeaderFooterHeight() + 18); - cmA.setHeight(height); - cmB.setHeight(height); - - render(diff); - commentManager.render(comments, prefs.expandAllComments()); - skipManager.render(prefs.context(), diff); - } + () -> { + // Estimate initial CodeMirror height, fixed up in onShowView. + int height = Window.getClientHeight() - (Gerrit.getHeaderFooterHeight() + 18); + cmA.setHeight(height); + cmB.setHeight(height); + + render(diff); + commentManager.render(comments, prefs.expandAllComments()); + skipManager.render(prefs.context(), diff); }); registerCmEvents(cmA); @@ -237,7 +239,8 @@ public class SideBySide extends DiffScreen { private List<InlineHyperlink> getUnifiedDiffLink() { InlineHyperlink toUnifiedDiffLink = new InlineHyperlink(); toUnifiedDiffLink.setHTML(new ImageResourceRenderer().render(Gerrit.RESOURCES.unifiedDiff())); - toUnifiedDiffLink.setTargetHistoryToken(Dispatcher.toUnified(base, revision, path)); + toUnifiedDiffLink.setTargetHistoryToken( + Dispatcher.toUnified(getProject(), base, revision, path)); toUnifiedDiffLink.setTitle(PatchUtil.C.unifiedDiff()); return Collections.singletonList(toUnifiedDiffLink); } @@ -319,66 +322,52 @@ public class SideBySide extends DiffScreen { } @Override - Runnable updateActiveLine(final CodeMirror cm) { - final CodeMirror other = otherCm(cm); - return new Runnable() { - @Override - public void run() { - // The rendering of active lines has to be deferred. Reflow - // caused by adding and removing styles chokes Firefox when arrow - // key (or j/k) is held down. Performance on Chrome is fine - // without the deferral. - // - Scheduler.get() - .scheduleDeferred( - new ScheduledCommand() { - @Override - public void execute() { - operation( - new Runnable() { - @Override - public void run() { - LineHandle handle = - cm.getLineHandleVisualStart(cm.getCursor("end").line()); - if (!cm.extras().activeLine(handle)) { - return; - } - - LineOnOtherInfo info = lineOnOther(cm.side(), cm.getLineNumber(handle)); - if (info.isAligned()) { - other.extras().activeLine(other.getLineHandle(info.getLine())); - } else { - other.extras().clearActiveLine(); - } - } - }); - } - }); - } + Runnable updateActiveLine(CodeMirror cm) { + CodeMirror other = otherCm(cm); + return () -> { + // The rendering of active lines has to be deferred. Reflow + // caused by adding and removing styles chokes Firefox when arrow + // key (or j/k) is held down. Performance on Chrome is fine + // without the deferral. + // + Scheduler.get() + .scheduleDeferred( + new ScheduledCommand() { + @Override + public void execute() { + operation( + () -> { + LineHandle handle = cm.getLineHandleVisualStart(cm.getCursor("end").line()); + if (!cm.extras().activeLine(handle)) { + return; + } + + LineOnOtherInfo info = lineOnOther(cm.side(), cm.getLineNumber(handle)); + if (info.isAligned()) { + other.extras().activeLine(other.getLineHandle(info.getLine())); + } else { + other.extras().clearActiveLine(); + } + }); + } + }); }; } - private Runnable moveCursorToSide(final CodeMirror cmSrc, DisplaySide sideDst) { - final CodeMirror cmDst = getCmFromSide(sideDst); + private Runnable moveCursorToSide(CodeMirror cmSrc, DisplaySide sideDst) { + CodeMirror cmDst = getCmFromSide(sideDst); if (cmDst == cmSrc) { - return new Runnable() { - @Override - public void run() {} - }; + return () -> {}; } - final DisplaySide sideSrc = cmSrc.side(); - return new Runnable() { - @Override - public void run() { - if (cmSrc.extras().hasActiveLine()) { - cmDst.setCursor( - Pos.create( - lineOnOther(sideSrc, cmSrc.getLineNumber(cmSrc.extras().activeLine())) - .getLine())); - } - cmDst.focus(); + DisplaySide sideSrc = cmSrc.side(); + return () -> { + if (cmSrc.extras().hasActiveLine()) { + cmDst.setCursor( + Pos.create( + lineOnOther(sideSrc, cmSrc.getLineNumber(cmSrc.extras().activeLine())).getLine())); } + cmDst.focus(); }; } @@ -389,20 +378,8 @@ public class SideBySide extends DiffScreen { } @Override - void operation(final Runnable apply) { - cmA.operation( - new Runnable() { - @Override - public void run() { - cmB.operation( - new Runnable() { - @Override - public void run() { - apply.run(); - } - }); - } - }); + void operation(Runnable apply) { + cmA.operation(() -> cmB.operation(apply::run)); } @Override |