Add download icon to preview diff screens
Change-Id: Ifd5aff3eec29f81930f93cc493cd8d189b19ba67
Signed-off-by: Edwin Kempin <edwin.kempin@sap.com>
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/ChangeInfo.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/ChangeInfo.java
index 3583461..83ea13a 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/ChangeInfo.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/ChangeInfo.java
@@ -27,6 +27,7 @@
public final native NativeMap<RevisionInfo> revisions() /*-{ return this.revisions; }-*/;
public final native int _number() /*-{ return this._number; }-*/;
public final native String current_revision() /*-{ return this.current_revision; }-*/;
+ public final native RevisionInfo revision(String n) /*-{ return this.revisions[n]; }-*/;
protected ChangeInfo() {
}
diff --git a/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/PatchSetSelectBox.java b/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/PatchSetSelectBox.java
index 21ddf00..c895091 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/PatchSetSelectBox.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/xdocs/client/PatchSetSelectBox.java
@@ -15,8 +15,12 @@
package com.googlesource.gerrit.plugins.xdocs.client;
import com.google.gerrit.plugin.client.Plugin;
+import com.google.gwt.core.client.GWT;
import com.google.gwt.core.client.JsArray;
+import com.google.gwt.http.client.URL;
+import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.FlowPanel;
+import com.google.gwt.user.client.ui.ImageResourceRenderer;
import com.google.gwt.user.client.ui.InlineHyperlink;
import com.google.gwt.user.client.ui.Label;
@@ -33,6 +37,8 @@
UNIFIED_DIFF
}
+ private static final String COMMIT_MSG = "/COMMIT_MSG";
+
private final DiffView diffView;
private final DisplaySide side;
private final ChangeInfo change;
@@ -72,6 +78,10 @@
for (int i = 0; i < list.length(); i++) {
add(createLink(list.get(i)));
}
+
+ if (!COMMIT_MSG.equals(path)) {
+ add(createDownloadLink());
+ }
}
private void addPatchSetLabel() {
@@ -122,6 +132,19 @@
return link;
}
+ private Anchor createDownloadLink() {
+ String base = GWT.getHostPageBaseURL() + "cat/";
+ String sideUrl = isBaseSelected() ? "1" : "0";
+ int ps = isBaseSelected()
+ ? change.revision(change.current_revision())._number()
+ : getSelectedPatchSet();
+ Anchor anchor = new Anchor(
+ new ImageResourceRenderer().render(XDocsPlugin.RESOURCES.downloadIcon()),
+ base + URL.encode(change._number() + "," + ps + "," + path) + "^" + sideUrl);
+ anchor.setTitle("Download");
+ return anchor;
+ }
+
private Integer getSelectedPatchSet() {
return sideA() ? basePatchSet : Integer.valueOf(patchSet);
}