diff options
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.java | 143 |
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; |