summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorShawn O. Pearce <sop@google.com>2009-06-01 18:33:25 -0700
committerShawn O. Pearce <sop@google.com>2009-06-01 18:33:25 -0700
commit8f2c88438ff30d11cbf3a522c8fe1ada7823014e (patch)
tree69ab477b2f808bb5cc613d05faf5869ae29e3303
parent219a8eeaa2061f256abd955202a7f36736539993 (diff)
Automatically switch from empty side-by-side to unified view
If the user visits a sidebyside view location, but we come up with no file hunks to display (e.g. because it really is binary) then we switch them to the unified viewer, which can show the headers from the diff. Bug: GERRIT-193 Signed-off-by: Shawn O. Pearce <sop@google.com>
-rw-r--r--src/main/java/com/google/gerrit/client/patches/PatchScreen.java26
1 files changed, 21 insertions, 5 deletions
diff --git a/src/main/java/com/google/gerrit/client/patches/PatchScreen.java b/src/main/java/com/google/gerrit/client/patches/PatchScreen.java
index a839168ffe..a2b9751c60 100644
--- a/src/main/java/com/google/gerrit/client/patches/PatchScreen.java
+++ b/src/main/java/com/google/gerrit/client/patches/PatchScreen.java
@@ -15,6 +15,7 @@
package com.google.gerrit.client.patches;
import com.google.gerrit.client.Gerrit;
+import com.google.gerrit.client.Link;
import com.google.gerrit.client.changes.PatchTable;
import com.google.gerrit.client.changes.Util;
import com.google.gerrit.client.data.PatchScript;
@@ -26,6 +27,7 @@ import com.google.gerrit.client.rpc.GerritCallback;
import com.google.gerrit.client.rpc.NoDifferencesException;
import com.google.gerrit.client.ui.ChangeLink;
import com.google.gerrit.client.ui.Screen;
+import com.google.gwt.user.client.History;
import com.google.gwt.user.client.ui.DisclosurePanel;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Grid;
@@ -79,6 +81,7 @@ public abstract class PatchScreen extends Screen {
private DisclosurePanel historyPanel;
private HistoryTable historyTable;
+ private FlowPanel contentPanel;
private Label noDifference;
private AbstractPatchContentTable contentTable;
@@ -143,11 +146,11 @@ public abstract class PatchScreen extends Screen {
contentTable.fileList = fileList;
add(createNextPrevLinks());
- final FlowPanel fp = new FlowPanel();
- fp.setStyleName("gerrit-SideBySideScreen-SideBySideTable");
- fp.add(noDifference);
- fp.add(contentTable);
- add(fp);
+ contentPanel = new FlowPanel();
+ contentPanel.setStyleName("gerrit-SideBySideScreen-SideBySideTable");
+ contentPanel.add(noDifference);
+ contentPanel.add(contentTable);
+ add(contentPanel);
add(createNextPrevLinks());
}
@@ -255,6 +258,19 @@ public abstract class PatchScreen extends Screen {
historyPanel.setVisible(false);
}
+ if (contentTable instanceof SideBySideTable
+ && script.getEdits().isEmpty() && !script.getPatchHeader().isEmpty()) {
+ // User asked for SideBySide (or a link guessed, wrong) and we can't
+ // show a binary or pure-rename change there accurately. Switch to
+ // the unified view instead.
+ //
+ contentTable.removeFromParent();
+ contentTable = new UnifiedDiffTable();
+ contentTable.fileList = fileList;
+ contentPanel.add(contentTable);
+ History.newItem(Link.toPatchUnified(patchKey), false);
+ }
+
contentTable.display(patchKey, idSideA, idSideB, script);
contentTable.display(comments);
contentTable.finishDisplay();