summaryrefslogtreecommitdiffstats
path: root/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PatchTable.java
diff options
context:
space:
mode:
Diffstat (limited to 'gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PatchTable.java')
-rw-r--r--gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PatchTable.java143
1 files changed, 60 insertions, 83 deletions
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PatchTable.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PatchTable.java
index b8acd56155..50fc892f74 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PatchTable.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/changes/PatchTable.java
@@ -14,6 +14,7 @@
package com.google.gerrit.client.changes;
+import com.google.gerrit.client.Dispatcher;
import com.google.gerrit.client.Gerrit;
import com.google.gerrit.client.patches.PatchScreen;
import com.google.gerrit.client.ui.InlineHyperlink;
@@ -22,11 +23,10 @@ import com.google.gerrit.client.ui.NavigationTable;
import com.google.gerrit.client.ui.PatchLink;
import com.google.gerrit.common.data.PatchSetDetail;
import com.google.gerrit.reviewdb.client.Patch;
-import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.gerrit.reviewdb.client.Patch.ChangeType;
import com.google.gerrit.reviewdb.client.Patch.Key;
import com.google.gerrit.reviewdb.client.Patch.PatchType;
-import com.google.gwt.core.client.GWT;
+import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.gwt.core.client.Scheduler;
import com.google.gwt.core.client.Scheduler.RepeatingCommand;
import com.google.gwt.event.dom.client.ClickEvent;
@@ -34,6 +34,8 @@ import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.KeyCodes;
import com.google.gwt.event.dom.client.KeyPressEvent;
import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.Window;
+import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.HTMLTable.Cell;
@@ -44,7 +46,6 @@ import com.google.gwtexpui.globalkey.client.KeyCommand;
import com.google.gwtexpui.progress.client.ProgressBar;
import com.google.gwtexpui.safehtml.client.SafeHtml;
import com.google.gwtexpui.safehtml.client.SafeHtmlBuilder;
-import com.google.gwtorm.client.KeyUtil;
import java.util.ArrayList;
import java.util.List;
@@ -158,7 +159,9 @@ public class PatchTable extends Composite {
}
public void movePointerTo(final Patch.Key k) {
- myTable.movePointerTo(k);
+ if (myTable != null) {
+ myTable.movePointerTo(k);
+ }
}
public void setActive(boolean active) {
@@ -243,8 +246,7 @@ public class PatchTable extends Composite {
Key thisKey = patch.getKey();
PatchLink link;
- if (patchType == PatchScreen.Type.SIDE_BY_SIDE
- && patch.getPatchType() == Patch.PatchType.UNIFIED) {
+ if (patchType == PatchScreen.Type.SIDE_BY_SIDE) {
link = new PatchLink.SideBySide("", base, thisKey, index, detail, this);
} else {
link = new PatchLink.Unified("", base, thisKey, index, detail, this);
@@ -293,10 +295,6 @@ public class PatchTable extends Composite {
return listenablePrefs;
}
- public void setPreferences(ListenableAccountDiffPreference prefs) {
- listenablePrefs = prefs;
- }
-
private class MyTable extends NavigationTable<Patch> {
private static final int C_PATH = 2;
private static final int C_DRAFT = 3;
@@ -394,13 +392,9 @@ public class PatchTable extends Composite {
setRowItem(row, patch);
Widget nameCol;
- if (patch.getPatchType() == Patch.PatchType.UNIFIED) {
- nameCol = new PatchLink.SideBySide(getDisplayFileName(patch), base,
- patch.getKey(), row - 1, detail, PatchTable.this);
- } else {
- nameCol = new PatchLink.Unified(getDisplayFileName(patch), base,
- patch.getKey(), row - 1, detail, PatchTable.this);
- }
+ nameCol = new PatchLink.SideBySide(getDisplayFileName(patch), base,
+ patch.getKey(), row - 1, detail, PatchTable.this);
+
if (patch.getSourceFileName() != null) {
final String text;
if (patch.getChangeType() == Patch.ChangeType.RENAMED) {
@@ -420,18 +414,43 @@ public class PatchTable extends Composite {
table.setWidget(row, C_PATH, nameCol);
int C_UNIFIED = C_SIDEBYSIDE + 1;
- if (patch.getPatchType() == Patch.PatchType.UNIFIED) {
- table.setWidget(row, C_SIDEBYSIDE, new PatchLink.SideBySide(
- Util.C.patchTableDiffSideBySide(), base, patch.getKey(), row - 1,
- detail, PatchTable.this));
- } else if (patch.getPatchType() == Patch.PatchType.BINARY) {
- C_UNIFIED = C_SIDEBYSIDE + 2;
- }
+ table.setWidget(row, C_SIDEBYSIDE, new PatchLink.SideBySide(
+ Util.C.patchTableDiffSideBySide(), base, patch.getKey(), row - 1,
+ detail, PatchTable.this));
table.setWidget(row, C_UNIFIED, new PatchLink.Unified(
Util.C.patchTableDiffUnified(), base, patch.getKey(), row - 1,
detail, PatchTable.this));
}
+ void initializeLastRow(int row) {
+ Anchor sideBySide = new Anchor(Util.C.diffAllSideBySide());
+ sideBySide.addClickHandler(new ClickHandler() {
+ @Override
+ public void onClick(ClickEvent event) {
+ for (Patch p : detail.getPatches()) {
+ openWindow(Dispatcher.toPatchSideBySide(base, p.getKey()));
+ }
+ }
+ });
+ table.setWidget(row, C_SIDEBYSIDE - 2, sideBySide);
+
+ int C_UNIFIED = C_SIDEBYSIDE - 2 + 1;
+ Anchor unified = new Anchor(Util.C.diffAllUnified());
+ unified.addClickHandler(new ClickHandler() {
+ public void onClick(ClickEvent event) {
+ for (Patch p : detail.getPatches()) {
+ openWindow(Dispatcher.toPatchUnified(base, p.getKey()));
+ }
+ };
+ });
+ table.setWidget(row, C_UNIFIED, unified);
+ }
+
+ private void openWindow(String token) {
+ String url = Window.Location.getPath() + "#" + token;
+ Window.open(url, "_blank", null);
+ }
+
void appendHeader(final SafeHtmlBuilder m) {
m.openTr();
@@ -530,49 +549,9 @@ public class PatchTable extends Composite {
appendSize(m, p);
m.closeTd();
- switch (p.getPatchType()) {
- case UNIFIED:
- openlink(m, 2);
- m.closeTd();
- break;
-
- case BINARY: {
- String base = GWT.getHostPageBaseURL();
- base += "cat/" + KeyUtil.encode(p.getKey().toString());
- switch (p.getChangeType()) {
- case DELETED:
- case MODIFIED:
- openlink(m, 1);
- m.openAnchor();
- m.setAttribute("href", base + "^1");
- m.append(Util.C.patchTableDownloadPreImage());
- closelink(m);
- break;
- default:
- emptycell(m, 1);
- break;
- }
- switch (p.getChangeType()) {
- case MODIFIED:
- case ADDED:
- openlink(m, 1);
- m.openAnchor();
- m.setAttribute("href", base + "^0");
- m.append(Util.C.patchTableDownloadPostImage());
- closelink(m);
- break;
- default:
- emptycell(m, 1);
- break;
- }
- break;
- }
-
- default:
- emptycell(m, 2);
- break;
- }
-
+ // Diff
+ openlink(m, 2);
+ m.closeTd();
openlink(m, 1);
m.closeTd();
@@ -591,7 +570,7 @@ public class PatchTable extends Composite {
m.closeTr();
}
- void appendTotals(final SafeHtmlBuilder m, int ins, int dels,
+ void appendLastRow(final SafeHtmlBuilder m, int ins, int dels,
final boolean isReverseDiff) {
m.openTr();
@@ -617,6 +596,12 @@ public class PatchTable extends Composite {
m.append(Util.M.patchTableSize_Modify(ins, dels));
m.closeTd();
+ openlink(m, 2);
+ m.closeTd();
+
+ openlink(m, 1);
+ m.closeTd();
+
m.closeTr();
}
@@ -649,14 +634,19 @@ public class PatchTable extends Composite {
case ADDED:
m.append(Util.M.patchTableSize_Lines(ins));
break;
+
case DELETED:
m.nbsp();
break;
+
case MODIFIED:
case COPIED:
case RENAMED:
m.append(Util.M.patchTableSize_Modify(ins, dels));
break;
+
+ case REWRITE:
+ break;
}
} else {
m.nbsp();
@@ -670,20 +660,6 @@ public class PatchTable extends Composite {
m.setAttribute("colspan", colspan);
}
- private void closelink(final SafeHtmlBuilder m) {
- m.closeAnchor();
- m.closeTd();
- }
-
- private void emptycell(final SafeHtmlBuilder m, final int colspan) {
- m.openTd();
- m.addStyleName(Gerrit.RESOURCES.css().dataCell());
- m.addStyleName(Gerrit.RESOURCES.css().diffLinkCell());
- m.setAttribute("colspan", colspan);
- m.nbsp();
- m.closeTd();
- }
-
@Override
protected Object getRowItemKey(final Patch item) {
return item.getKey();
@@ -787,8 +763,9 @@ public class PatchTable extends Composite {
return true;
}
}
- table.appendTotals(nc, insertions, deletions, isReverseDiff);
+ table.appendLastRow(nc, insertions, deletions, isReverseDiff);
table.resetHtml(nc);
+ table.initializeLastRow(row + 1);
nc = null;
stage = 1;
row = 0;