InlineEdit: Don't offer edit icon on binary files
Currently there is no way to retrieve patch type info in side by side screen. Extend GET changes/<id>/revisions/<rev>/files/<path>/diff to return binary flag. Suppress change edit icon on patch set select panel when binary file is opened. Bug: Issue 3162 Change-Id: I92daf8fde462a0c9977821a60fb19538e4bfae45
This commit is contained in:
@@ -3636,6 +3636,7 @@ link:#diff-content[DiffContent] entities.
|
|||||||
|`web_links` |optional|
|
|`web_links` |optional|
|
||||||
Links to the file diff in external sites as a list of
|
Links to the file diff in external sites as a list of
|
||||||
link:rest-api-changes.html#diff-web-link-info[DiffWebLinkInfo] entries.
|
link:rest-api-changes.html#diff-web-link-info[DiffWebLinkInfo] entries.
|
||||||
|
|`binary` |not set if `false`|Whether the file is binary.
|
||||||
|==========================
|
|==========================
|
||||||
|
|
||||||
[[diff-intraline-info]]
|
[[diff-intraline-info]]
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ public class PatchScript {
|
|||||||
protected boolean intralineDifference;
|
protected boolean intralineDifference;
|
||||||
protected boolean intralineFailure;
|
protected boolean intralineFailure;
|
||||||
protected boolean intralineTimeout;
|
protected boolean intralineTimeout;
|
||||||
|
protected boolean binary;
|
||||||
|
|
||||||
public PatchScript(final Change.Key ck, final ChangeType ct, final String on,
|
public PatchScript(final Change.Key ck, final ChangeType ct, final String on,
|
||||||
final String nn, final FileMode om, final FileMode nm,
|
final String nn, final FileMode om, final FileMode nm,
|
||||||
@@ -64,7 +65,7 @@ public class PatchScript {
|
|||||||
final List<Edit> e, final DisplayMethod ma, final DisplayMethod mb,
|
final List<Edit> e, final DisplayMethod ma, final DisplayMethod mb,
|
||||||
final String mta, final String mtb, final CommentDetail cd,
|
final String mta, final String mtb, final CommentDetail cd,
|
||||||
final List<Patch> hist, final boolean hf, final boolean id,
|
final List<Patch> hist, final boolean hf, final boolean id,
|
||||||
final boolean idf, final boolean idt) {
|
final boolean idf, final boolean idt, boolean bin) {
|
||||||
changeId = ck;
|
changeId = ck;
|
||||||
changeType = ct;
|
changeType = ct;
|
||||||
oldName = on;
|
oldName = on;
|
||||||
@@ -86,6 +87,7 @@ public class PatchScript {
|
|||||||
intralineDifference = id;
|
intralineDifference = id;
|
||||||
intralineFailure = idf;
|
intralineFailure = idf;
|
||||||
intralineTimeout = idt;
|
intralineTimeout = idt;
|
||||||
|
binary = bin;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected PatchScript() {
|
protected PatchScript() {
|
||||||
@@ -194,4 +196,8 @@ public class PatchScript {
|
|||||||
}
|
}
|
||||||
return new EditList(edits, ctx, a.size(), b.size()).getHunks();
|
return new EditList(edits, ctx, a.size(), b.size()).getHunks();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isBinary() {
|
||||||
|
return binary;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,6 +32,8 @@ public class DiffInfo {
|
|||||||
public List<ContentEntry> content;
|
public List<ContentEntry> content;
|
||||||
// Links to the file diff in external sites
|
// Links to the file diff in external sites
|
||||||
public List<DiffWebLinkInfo> webLinks;
|
public List<DiffWebLinkInfo> webLinks;
|
||||||
|
// Binary file
|
||||||
|
public Boolean binary;
|
||||||
|
|
||||||
public static enum IntraLineStatus {
|
public static enum IntraLineStatus {
|
||||||
OK,
|
OK,
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ public class DiffInfo extends JavaScriptObject {
|
|||||||
public final native JsArrayString diff_header() /*-{ return this.diff_header; }-*/;
|
public final native JsArrayString diff_header() /*-{ return this.diff_header; }-*/;
|
||||||
public final native JsArray<Region> content() /*-{ return this.content; }-*/;
|
public final native JsArray<Region> content() /*-{ return this.content; }-*/;
|
||||||
public final native JsArray<DiffWebLinkInfo> web_links() /*-{ return this.web_links; }-*/;
|
public final native JsArray<DiffWebLinkInfo> web_links() /*-{ return this.web_links; }-*/;
|
||||||
|
public final native boolean binary() /*-{ return this.binary || false; }-*/;
|
||||||
|
|
||||||
public final List<WebLinkInfo> side_by_side_web_links() {
|
public final List<WebLinkInfo> side_by_side_web_links() {
|
||||||
return filterWebLinks(DiffView.SIDE_BY_SIDE);
|
return filterWebLinks(DiffView.SIDE_BY_SIDE);
|
||||||
|
|||||||
@@ -150,12 +150,12 @@ class DiffTable extends Composite {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void set(DiffPreferences prefs, JsArray<RevisionInfo> list, DiffInfo info,
|
void set(DiffPreferences prefs, JsArray<RevisionInfo> list, DiffInfo info,
|
||||||
boolean editExists, int currentPatchSet, boolean open) {
|
boolean editExists, int currentPatchSet, boolean open, boolean binary) {
|
||||||
this.changeType = info.change_type();
|
this.changeType = info.change_type();
|
||||||
patchSetSelectBoxA.setUpPatchSetNav(list, info.meta_a(), editExists,
|
patchSetSelectBoxA.setUpPatchSetNav(list, info.meta_a(), editExists,
|
||||||
currentPatchSet, open);
|
currentPatchSet, open, binary);
|
||||||
patchSetSelectBoxB.setUpPatchSetNav(list, info.meta_b(), editExists,
|
patchSetSelectBoxB.setUpPatchSetNav(list, info.meta_b(), editExists,
|
||||||
currentPatchSet, open);
|
currentPatchSet, open, binary);
|
||||||
|
|
||||||
JsArrayString hdr = info.diff_header();
|
JsArrayString hdr = info.diff_header();
|
||||||
if (hdr != null) {
|
if (hdr != null) {
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ class PatchSetSelectBox extends Composite {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void setUpPatchSetNav(JsArray<RevisionInfo> list, DiffInfo.FileMeta meta,
|
void setUpPatchSetNav(JsArray<RevisionInfo> list, DiffInfo.FileMeta meta,
|
||||||
boolean editExists, int currentPatchSet, boolean open) {
|
boolean editExists, int currentPatchSet, boolean open, boolean binary) {
|
||||||
InlineHyperlink baseLink = null;
|
InlineHyperlink baseLink = null;
|
||||||
InlineHyperlink selectedLink = null;
|
InlineHyperlink selectedLink = null;
|
||||||
if (sideA) {
|
if (sideA) {
|
||||||
@@ -110,7 +110,7 @@ class PatchSetSelectBox extends Composite {
|
|||||||
if (!Patch.COMMIT_MSG.equals(path)) {
|
if (!Patch.COMMIT_MSG.equals(path)) {
|
||||||
linkPanel.add(createDownloadLink());
|
linkPanel.add(createDownloadLink());
|
||||||
}
|
}
|
||||||
if (open && idActive != null && Gerrit.isSignedIn()) {
|
if (!binary && open && idActive != null && Gerrit.isSignedIn()) {
|
||||||
if ((editExists && idActive.get() == 0)
|
if ((editExists && idActive.get() == 0)
|
||||||
|| (!editExists && idActive.get() == currentPatchSet)) {
|
|| (!editExists && idActive.get() == currentPatchSet)) {
|
||||||
linkPanel.add(createEditIcon());
|
linkPanel.add(createEditIcon());
|
||||||
|
|||||||
@@ -246,7 +246,7 @@ public class SideBySide extends Screen {
|
|||||||
JsArray<RevisionInfo> list = info.revisions().values();
|
JsArray<RevisionInfo> list = info.revisions().values();
|
||||||
RevisionInfo.sortRevisionInfoByNumber(list);
|
RevisionInfo.sortRevisionInfoByNumber(list);
|
||||||
diffTable.set(prefs, list, diff, edit != null, currentPatchSet,
|
diffTable.set(prefs, list, diff, edit != null, currentPatchSet,
|
||||||
changeStatus.isOpen());
|
changeStatus.isOpen(), diff.binary());
|
||||||
header.setChangeInfo(info);
|
header.setChangeInfo(info);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -189,6 +189,9 @@ public class GetDiff implements RestReadView<FileResource> {
|
|||||||
result.webLinks = links.isEmpty() ? null : links.toList();
|
result.webLinks = links.isEmpty() ? null : links.toList();
|
||||||
|
|
||||||
if (!webLinksOnly) {
|
if (!webLinksOnly) {
|
||||||
|
if (ps.isBinary()) {
|
||||||
|
result.binary = true;
|
||||||
|
}
|
||||||
if (ps.getDisplayMethodA() != DisplayMethod.NONE) {
|
if (ps.getDisplayMethodA() != DisplayMethod.NONE) {
|
||||||
result.metaA = new FileMeta();
|
result.metaA = new FileMeta();
|
||||||
result.metaA.name = MoreObjects.firstNonNull(ps.getOldName(),
|
result.metaA.name = MoreObjects.firstNonNull(ps.getOldName(),
|
||||||
|
|||||||
@@ -213,7 +213,8 @@ class PatchScriptBuilder {
|
|||||||
content.getHeaderLines(), diffPrefs, a.dst, b.dst, edits,
|
content.getHeaderLines(), diffPrefs, a.dst, b.dst, edits,
|
||||||
a.displayMethod, b.displayMethod, a.mimeType.toString(),
|
a.displayMethod, b.displayMethod, a.mimeType.toString(),
|
||||||
b.mimeType.toString(), comments, history, hugeFile,
|
b.mimeType.toString(), comments, history, hugeFile,
|
||||||
intralineDifferenceIsPossible, intralineFailure, intralineTimeout);
|
intralineDifferenceIsPossible, intralineFailure, intralineTimeout,
|
||||||
|
content.getPatchType() == Patch.PatchType.BINARY);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean isModify(PatchListEntry content) {
|
private static boolean isModify(PatchListEntry content) {
|
||||||
|
|||||||
Reference in New Issue
Block a user