diff options
author | Shawn O. Pearce <sop@google.com> | 2009-06-01 18:33:25 -0700 |
---|---|---|
committer | Shawn O. Pearce <sop@google.com> | 2009-06-01 18:33:25 -0700 |
commit | 8f2c88438ff30d11cbf3a522c8fe1ada7823014e (patch) | |
tree | 69ab477b2f808bb5cc613d05faf5869ae29e3303 | |
parent | 219a8eeaa2061f256abd955202a7f36736539993 (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.java | 26 |
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(); |