summaryrefslogtreecommitdiffstats
path: root/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide.java
diff options
context:
space:
mode:
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.java163
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