summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Zhou <zhoumotongxue008@gmail.com>2013-10-17 20:21:23 -0400
committerMichael Zhou <zhoumotongxue008@gmail.com>2013-10-17 23:03:03 -0400
commite53acd1086008205b21cc8fd9d7e5e9ef079bedc (patch)
treea76ef5af96f24224a245f8f72a057facf77c2c3c
parentbcce4e3bdfe4b25aabe4e86f39940d47c76ca41b (diff)
SideBySide2: Add download links
Re-implemented the old download links. To avoid adding bogus links on empty files, PatchSetSelectBox2 needs to know the meta info for the diff. Don't add the download link if meta == null. Change-Id: Ied3e0287a17144ab2d6d50289625495568cb53a6
-rw-r--r--gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DiffTable.java6
-rw-r--r--gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/PatchSetSelectBox2.java25
-rw-r--r--gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide2.java24
3 files changed, 35 insertions, 20 deletions
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DiffTable.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DiffTable.java
index 9960a293a3..b8963e28ce 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DiffTable.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/DiffTable.java
@@ -133,9 +133,9 @@ class DiffTable extends Composite {
return fileCommentRow.getOffsetHeight() + patchSetSelectBoxA.getOffsetHeight();
}
- void setUpPatchSetNav(JsArray<RevisionInfo> list) {
- patchSetSelectBoxA.setUpPatchSetNav(list);
- patchSetSelectBoxB.setUpPatchSetNav(list);
+ void setUpPatchSetNav(JsArray<RevisionInfo> list, DiffInfo info) {
+ patchSetSelectBoxA.setUpPatchSetNav(list, info.meta_a());
+ patchSetSelectBoxB.setUpPatchSetNav(list, info.meta_b());
}
void add(Widget widget) {
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/PatchSetSelectBox2.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/PatchSetSelectBox2.java
index d25873520e..4a09615512 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/PatchSetSelectBox2.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/PatchSetSelectBox2.java
@@ -20,6 +20,7 @@ import com.google.gerrit.client.changes.ChangeInfo.RevisionInfo;
import com.google.gerrit.client.patches.PatchUtil;
import com.google.gerrit.client.ui.InlineHyperlink;
import com.google.gerrit.reviewdb.client.Change;
+import com.google.gerrit.reviewdb.client.Patch;
import com.google.gerrit.reviewdb.client.PatchSet;
import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.JsArray;
@@ -28,14 +29,14 @@ import com.google.gwt.resources.client.CssResource;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
+import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.Image;
+import com.google.gwt.user.client.ui.ImageResourceRenderer;
+import com.google.gwtorm.client.KeyUtil;
-/**
- * HTMLPanel to select among patch sets
- * TODO: Implement download link.
- */
+/** HTMLPanel to select among patch sets */
class PatchSetSelectBox2 extends Composite {
interface Binder extends UiBinder<HTMLPanel, PatchSetSelectBox2> {}
private static final Binder uiBinder = GWT.create(Binder.class);
@@ -71,7 +72,7 @@ class PatchSetSelectBox2 extends Composite {
this.path = path;
}
- void setUpPatchSetNav(JsArray<RevisionInfo> list) {
+ void setUpPatchSetNav(JsArray<RevisionInfo> list, DiffInfo.FileMeta meta) {
InlineHyperlink baseLink = null;
InlineHyperlink selectedLink = null;
if (sideA) {
@@ -92,6 +93,9 @@ class PatchSetSelectBox2 extends Composite {
} else if (sideA) {
baseLink.setStyleName(style.selected());
}
+ if (meta != null && !Patch.COMMIT_MSG.equals(path)) {
+ linkPanel.add(createDownloadLink());
+ }
}
static void link(PatchSetSelectBox2 a, PatchSetSelectBox2 b) {
@@ -110,6 +114,17 @@ class PatchSetSelectBox2 extends Composite {
path));
}
+ private Anchor createDownloadLink() {
+ PatchSet.Id id = (idActive == null) ? other.idActive : idActive;
+ String sideURL = (idActive == null) ? "1" : "0";
+ String base = GWT.getHostPageBaseURL() + "cat/";
+ Anchor anchor = new Anchor(
+ new ImageResourceRenderer().render(Gerrit.RESOURCES.downloadIcon()),
+ base + KeyUtil.encode(id + "," + path) + "^" + sideURL);
+ anchor.setTitle(PatchUtil.C.download());
+ return anchor;
+ }
+
@UiHandler("icon")
void onIconClick(ClickEvent e) {
table.createOrEditFileComment(side);
diff --git a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide2.java b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide2.java
index 7caf76d74b..09b4b493b1 100644
--- a/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide2.java
+++ b/gerrit-gwtui/src/main/java/com/google/gerrit/client/diff/SideBySide2.java
@@ -204,6 +204,18 @@ public class SideBySide2 extends Screen {
CommentApi.drafts(revision, group.add(getCommentCallback(DisplaySide.B, true)));
}
+ RestApi call = ChangeApi.detail(changeId.get());
+ ChangeList.addOptions(call, EnumSet.of(
+ ListChangesOption.ALL_REVISIONS));
+ call.get(group.add(new GerritCallback<ChangeInfo>() {
+ @Override
+ public void onSuccess(ChangeInfo info) {
+ info.revisions().copyKeysIntoChildren("name");
+ JsArray<RevisionInfo> list = info.revisions().values();
+ RevisionInfo.sortRevisionInfoByNumber(list);
+ diffTable.setUpPatchSetNav(list, diff);
+ }}));
+
ConfigInfoCache.get(changeId, group.addFinal(
new ScreenLoadCallback<ConfigInfoCache.Entry>(SideBySide2.this) {
@Override
@@ -216,18 +228,6 @@ public class SideBySide2 extends Screen {
display(diffInfo);
}
}));
-
- RestApi call = ChangeApi.detail(changeId.get());
- ChangeList.addOptions(call, EnumSet.of(
- ListChangesOption.ALL_REVISIONS));
- call.get(new GerritCallback<ChangeInfo>() {
- @Override
- public void onSuccess(ChangeInfo info) {
- info.revisions().copyKeysIntoChildren("name");
- JsArray<RevisionInfo> list = info.revisions().values();
- RevisionInfo.sortRevisionInfoByNumber(list);
- diffTable.setUpPatchSetNav(list);
- }});
}
@Override